home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 19 / AACD19.BIN / AACD / Programming / MCC_GLArea / MCC_GLArea_Dev / Include / GL / Amigamesa.h next >
Encoding:
C/C++ Source or Header  |  2000-01-29  |  19.7 KB  |  459 lines

  1. /* Amigamesa.h */
  2.  
  3. /*
  4.  * Mesa 3-D graphics library
  5.  * Version:  1.2
  6.  * Copyright (C) 1995  Brian Paul  (brianp@ssec.wisc.edu)
  7.  *
  8.  * This library is free software; you can redistribute it and/or
  9.  * modify it under the terms of the GNU Library General Public
  10.  * License as published by the Free Software Foundation; either
  11.  * version 2 of the License, or (at your option) any later version.
  12.  *
  13.  * This library is distributed in the hope that it will be useful,
  14.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  15.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  16.  * Library General Public License for more details.
  17.  *
  18.  * You should have received a copy of the GNU Library General Public
  19.  * License along with this library; if not, write to the Free
  20.  * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  21.  */
  22.  
  23.  
  24. /* Important note (03.01.1998 by Sam Jordan)
  25.  
  26. When using windows you should use window->BorderBottom for AMA_Bottom,
  27. not window->BorderBottom+1! Please change your existing MESA application
  28. when using this implementation here. The reason for this change is that
  29. the current implementation doesn't decrease the viewport size by 2 to
  30. get an additional border (which doesn't look nice and which didn't work
  31. correctly either).
  32.  
  33. When using the TK window layer you don't have to change anything.
  34.  
  35. */
  36.  
  37.  
  38. /*
  39. Implementions of new drawing rutines:
  40.  
  41. you implement a own init for your rutines/hardware
  42. and make some test and calls it from AmigaMesaCreateContext()
  43. (look in the file src/amigamesa.c I'll thing you get it)
  44. Be sure to fill this three ponters out:
  45.     void (*InitDD)( void );
  46.     void (*Dispose) (struct amigamesa_context *c);
  47.     void (*SwapBuffer) (void);
  48. where InitDD sets the DD structure in orginal mesa with pointers to drawing rutines
  49. Dispose is called when someone quits/closes down your made inits
  50. SwapBuffer is called when one is changing buffer in dubble buffering mode
  51.  
  52. Write nice drawing rutines like those in src/amigamesa.c on make sure
  53. that it's those you set in your InitDD rutine.
  54.  
  55. Add enum for your drawingmode for the taglist and if you need more tags also implement them
  56. If posible some autodetection code in AmigaMesaCreateContext
  57. Add enums and error codes if you neads 
  58.  
  59. PUT ALL YOUR NEADED DATA IN amigamesa_context->(void *)data in for your gfx driver
  60. private structure.
  61.  
  62. Send the code to me and I will include it in the main code.
  63. */
  64.  
  65. /*
  66. $Id: Amigamesa.h 1.4 1996/10/13 20:54:31 StefanZ Exp StefanZ $
  67.  
  68. $Log: Amigamesa.h $
  69.  * Revision 1.4  1996/10/13  20:54:31  StefanZ
  70.  * Updated to reflect amigamesa 1.5
  71.  *
  72.  * Revision 1.3  1996/10/06  20:35:11  StefanZ
  73.  * Source bump before Mesa 2.0
  74.  *
  75.  * Revision 1.2  1996/08/14  22:16:31  StefanZ
  76.  * New Api to amigaspecific functions, Added suport for gfx-cards
  77.  *
  78.  * Revision 1.1  1996/06/02  00:15:03   StefanZ
  79.  * Initial revision
  80.  *
  81.  * Revision 1.0  1996/02/21  11:09:45   brianp
  82.  * A copy of amesa.h version 1.4 in a brave atempt to make a amiga interface
  83.  *
  84.  */
  85.  
  86.  
  87. /* Example usage:
  88.  
  89. 1. Make a window using Intuition calls
  90.  
  91. 2. Call AMesaCreateContext() to make a rendering context and attach it
  92.     to the window made in step 1.
  93.  
  94. 3. Call AMesaMakeCurrent() to make the context the active one.
  95.  
  96. 4. Make gl* calls to render your graphics.
  97.  
  98. 5. When exiting, call AMesaDestroyContext().
  99.  
  100. */
  101.  
  102.  
  103.  
  104. #ifndef AMIGAMESA_H
  105. #define AMIGAMESA_H
  106.  
  107. #ifdef __cplusplus
  108. extern "C" {
  109. #endif
  110.  
  111. #ifndef APIENTRY
  112. #ifndef NOSAVEDS
  113. #define APIENTRY __saveds
  114. #else
  115. #define APIENTRY
  116. #endif
  117. #endif
  118.  
  119. #include <intuition/intuition.h>
  120. #include <utility/tagitem.h>
  121. #include "GL/gl.h"
  122.  
  123.  
  124.  
  125. struct amigamesa_visual
  126. {
  127.    void *gl_visual;
  128.    GLboolean db_flag;           /* double buffered? */
  129.    GLboolean rgb_flag;          /* RGB mode? */
  130.    GLboolean alpha_flag;   /* Alphacolor? */
  131.    GLuint        depth;                         /* bits per pixel (1, 8, 24, etc) */
  132.    GLuint        stencil;
  133.    GLuint        accum;
  134. };
  135.  
  136.  
  137.  
  138. struct amigamesa_buffer
  139. {
  140.    void *gl_buffer;    /* The depth, stencil, accum, etc buffers */
  141.    /* your window handle, etc */
  142. };
  143.  
  144.  
  145. /*
  146.  * This is the Amiga/Mesa context structure.  This usually contains
  147.  * info about what window/buffer we're rendering too, the current
  148.  * drawing color, etc.
  149.  */
  150.  
  151. /* 5.9.98 sj
  152.    this structure must not be accessed directly by applications
  153.    anymore */
  154.  
  155. struct amigamesa_context
  156. {
  157.     void *gl_ctx;                   /* the core library context */
  158.     struct amigamesa_visual  *visual; /* the visual context */
  159.     struct amigamesa_buffer  *buffer; /* the buffer context */
  160.  
  161.     struct amigamesa_context *share;
  162.  
  163.     unsigned long flags;                    /*0x1 = own visuel, 0x2 = own buffer
  164.                           0x4 = forbid 3D HW, 0x8 = fullscreen mode */
  165.  
  166.  
  167.     unsigned long pixel;                    /* current color index or RGBA pixel value */
  168.     unsigned long clearpixel;       /* pixel for clearing the color buffers */
  169.  
  170.     /* etc... */
  171.     struct Window *window;                  /* Not neaded if in dubbelbuff needed */                /* the Intuition window */
  172.     struct RastPort *front_rp;      /* front rastport */
  173.     struct RastPort *back_rp;               /* back rastport */
  174.     int    SwapCounter;                     /* which buffer is active */
  175.     UBYTE* FrontArray;                                      /* for multibuffering */
  176.     UBYTE* BackArray;                                       /*a pen Array big as drawing area for use in dubelbuff mode*/
  177.     struct RastPort *rp;                    /* current rastport */
  178.     struct Screen *Screen;                  /* current screen*/
  179.     struct TmpRas *tmpras;                  /* tmpras rastport */
  180.     struct RastPort *temprp;
  181.     struct DBufInfo *dbufinfo;              /* OS3.0 multibuffering */
  182.  
  183.     GLuint depth;                                           /* bits per pixel (1, 8, 24, etc) */
  184.     GLuint bppix;                           /* bytes per pixel */
  185.     GLuint bprow;                           /* bytes per row */
  186.     GLuint fmt;                             /* color format */
  187.  
  188.     GLuint  width, height;                          /* drawable area */
  189.     GLint           left, bottom;                           /* offsets due to window border */
  190.     GLint           right, top;             /* right, top offsets, needed for correct resizing */
  191.     GLint           RealWidth,RealHeight;   /* the drawingareas real size*/
  192.     GLint           FixedWidth,FixedHeight; /* The internal buffer real size speeds up the drawing a bit*/
  193.     long*           ColorTable;             /* LUT8 display: ARGB -> real pen conversion */
  194.                         /* ARGB display: ARGB -> GL pen conversion */
  195.     long*           ColorTable2;            /* LUT8 display: table of allocated pens */
  196.                         /* ARGB display: GL pen -> ARGB conversion */
  197.     UBYTE penconv[256];                     /* pen conversion from GL color to real color */
  198.     UBYTE penconvinv[256];                  /* pen conversion from real color to GL color */
  199.     UBYTE dtable[256];
  200.     UBYTE bugfix[256];
  201.     UBYTE *imageline;                                       /* One Line for WritePixelRow renders */
  202.     GLuint *rgb_buffer;                                     /*back buffer when in RGBA mode OLD DElete?*/
  203.  
  204.     void (*InitDD)(void *  );                                                                  /* keep track of witch drawing rutines should be used */
  205.     void (*Dispose) (struct amigamesa_context *c);          /* Use this when AmigaMesaDestroyContext is called */
  206.     void (*SwapBuffer) (struct amigamesa_context *c);       /* Use this when AmigaMesaSwapBuffers is called */
  207.     ULONG ColTable[256];
  208.     ULONG ColTable2[256];
  209.     ULONG oldFPU;                           /* old rounding mode */
  210.     UBYTE pixelargb[4];
  211.     ULONG specialalloc;
  212.     UBYTE dmatrix[128+8];
  213.     struct ScreenBuffer *sbuf1;              /* OS3.0 multibuffering */
  214.     struct ScreenBuffer *sbuf2;              /* OS3.0 multibuffering */
  215.     struct MsgPort* dbport;                  /* OS3.0 multibuffering */
  216.     int drawbufferflag;                     /* GL double buffering support  */
  217.     int readbufferflag;                     /*              "               */
  218.     int backarrayflag;                      /*              "               */
  219.     UBYTE* DrawBuffer;                      /*              "               */
  220.     UBYTE* ReadBuffer;                      /*              "               */
  221.     struct RastPort *back2_rp;              /* second back rastport */
  222.     struct RastPort *draw_rp;
  223.     void *hwdriver;                         /* hwdriver private structure */
  224. };
  225.  
  226. /* possible values for flags */
  227.  
  228. #define FLAG_OWNVISUAL    0x01             /*see AMA_Visual*/
  229. #define FLAG_OWNBUFFER    0x02             /*see AMA_Buffer*/
  230. #define FLAG_FORBID3DHW   0x04             /*forbid using 3D-HW*/
  231. #define FLAG_FULLSCREEN   0x08             /*fullscreen mode*/
  232. #define FLAG_DIRECTRENDER 0x10             /*direct rendering to gfx RAM*/
  233. #define FLAG_TWOBUFFERS   0x20             /*two color buffers*/
  234. #define FLAG_FAST         0x40             /*less quality, more speed*/
  235. #define FLAG_VERYFAST     0x80             /*AFAP*/
  236. #define FLAG_RGBA         0x100            /*private*/
  237.  
  238. typedef struct amigamesa_context *AmigaMesaContext;
  239.  
  240. /**********************************************************************/
  241. /*****                                  Amiga/Mesa API Functions                                                        *****/
  242. /**********************************************************************/
  243. struct amigamesa_visual *AmigaMesaCreateVisualTags(long Tag1, ...);
  244. struct amigamesa_context *AmigaMesaCreateContextTags(long Tag1, ...);
  245. void AmigaMesaSetRastTags(struct amigamesa_context* c, long Tag1, ...);
  246.  
  247. #ifndef __STORM__
  248. #ifdef __VBCC__
  249. struct amigamesa_visual* APIENTRY AmigaMesaCreateVisual(struct TagItem *tagList);
  250. struct amigamesa_context* APIENTRY AmigaMesaCreateContext(struct TagItem *tagList );
  251. void APIENTRY AmigaMesaDestroyContext(struct amigamesa_context *c );
  252. void APIENTRY AmigaMesaDestroyVisual(struct amigamesa_visual *v );
  253. void APIENTRY AmigaMesaMakeCurrent(struct amigamesa_context *c ,struct amigamesa_buffer *b);
  254. void APIENTRY AmigaMesaSwapBuffers(struct amigamesa_context *amesa);
  255. void APIENTRY AmigaMesaSetOneColor(struct amigamesa_context *c,int index,float r,float g,float b);
  256. void APIENTRY AmigaMesaSetRast(struct amigamesa_context *c, struct TagItem *tagList );
  257. void APIENTRY AmigaMesaGetConfig(struct amigamesa_visual *v, GLenum pname, GLint* params );
  258. #if defined(GL_INLINE) || defined(__PPC__)
  259. #include <proto/amigamesa.h>
  260. #endif
  261. #else
  262. #ifdef __GNUC__ /* if under EGCS/GCC environement */
  263. #ifdef __cplusplus /* Just to prevent if we include this file in g++ mode */
  264. // APIENTRY struct amigamesa_visual *AmigaMesaCreateVisual(struct TagItem *tagList);
  265. // APIENTRY struct amigamesa_context *AmigaMesaCreateContext(struct TagItem *tagList );
  266. // APIENTRY void AmigaMesaDestroyVisual(struct amigamesa_visual *v);
  267. // APIENTRY void AmigaMesaDestroyContext(struct amigamesa_context *c);
  268. // APIENTRY void AmigaMesaMakeCurrent(struct amigamesa_context *c, struct amigamesa_buffer *b);
  269. // APIENTRY void AmigaMesaSwapBuffers(struct amigamesa_context *amesa);
  270. // APIENTRY void AmigaMesaSetOneColor(struct amigamesa_context *c, int index, float r, float g, float b);
  271. // APIENTRY void AmigaMesaSetRast(struct amigamesa_context *c, struct TagItem *tagList);
  272. // APIENTRY void AmigaMesaGetConfig(struct amigamesa_visual *v, GLenum pname, GLint* params);
  273. #else
  274. APIENTRY struct amigamesa_visual *AmigaMesaCreateVisual(struct TagItem *tagList __asm("a0"));
  275. APIENTRY struct amigamesa_context *AmigaMesaCreateContext(struct TagItem *tagList __asm("a0"));
  276. APIENTRY void AmigaMesaDestroyVisual(struct amigamesa_visual *v __asm("a0"));
  277. APIENTRY void AmigaMesaDestroyContext(struct amigamesa_context *c __asm("a0"));
  278. APIENTRY void AmigaMesaMakeCurrent(struct amigamesa_context *c __asm("a0"), struct amigamesa_buffer *b __asm("a1"));
  279. APIENTRY void AmigaMesaSwapBuffers(struct amigamesa_context *amesa __asm("a0"));
  280. APIENTRY void AmigaMesaSetOneColor(struct amigamesa_context *c __asm("a0"), int index __asm("d0"), float r __asm("fp0"), float g __asm("fp1"), float b __asm("fp2"));
  281. APIENTRY void AmigaMesaSetRast(struct amigamesa_context *c __asm("a0"), struct TagItem *tagList __asm("a1"));
  282. APIENTRY void AmigaMesaGetConfig(struct amigamesa_visual *v __asm("a0"), GLenum pname __asm("d0"), GLint* params __asm("a1"));
  283. #endif
  284. #else
  285. __asm APIENTRY struct amigamesa_visual *AmigaMesaCreateVisual(register __a0 struct TagItem *tagList);
  286. __asm APIENTRY struct amigamesa_context *AmigaMesaCreateContext(register __a0 struct TagItem *tagList );
  287. __asm APIENTRY void AmigaMesaDestroyVisual(register __a0 struct amigamesa_visual *v );
  288. __asm APIENTRY void AmigaMesaDestroyContext(register __a0 struct amigamesa_context *c );
  289. __asm APIENTRY void AmigaMesaMakeCurrent(register __a0 struct amigamesa_context *c ,register __a1    struct amigamesa_buffer *b);
  290. __asm APIENTRY void AmigaMesaSwapBuffers(register __a0 struct amigamesa_context *amesa);
  291. __asm APIENTRY void AmigaMesaSetOneColor(register __a0 struct amigamesa_context *c, register __d0 int index, register __fp0 float r, register __fp1 float g, register __fp2 float b);
  292. __asm APIENTRY void AmigaMesaSetRast(register __a0 struct amigamesa_context *c, register __a1 struct TagItem *tagList );
  293. __asm APIENTRY void AmigaMesaGetConfig(register __a0 struct amigamesa_visual *v, register __d0 GLenum pname, register __a1 GLint* params );
  294. #endif
  295. #endif
  296. #else
  297. #ifndef __PPC__
  298. struct amigamesa_visual* APIENTRY AmigaMesaCreateVisual(register __a0 struct TagItem *tagList);
  299. struct amigamesa_context* APIENTRY AmigaMesaCreateContext(register __a0 struct TagItem *tagList );
  300. void APIENTRY AmigaMesaDestroyContext(register __a0 struct amigamesa_context *c );
  301. void APIENTRY AmigaMesaDestroyVisual(register __a0 struct amigamesa_visual *v );
  302. void APIENTRY AmigaMesaMakeCurrent(register __a0 struct amigamesa_context *c ,register __a1    struct amigamesa_buffer *b);
  303. void APIENTRY AmigaMesaSwapBuffers(register __a0 struct amigamesa_context *amesa);
  304. void APIENTRY AmigaMesaSetOneColor(register __a0 struct amigamesa_context *c, register __d0 int index, register __fp0 float r, register __fp1 float g, register __fp2 float b);
  305. void APIENTRY AmigaMesaSetRast(register __a0 struct amigamesa_context *c, register __a1 struct TagItem *tagList );
  306. void APIENTRY AmigaMesaGetConfig(register __a0 struct amigamesa_visual *v, register __d0 GLenum pname, register __a1 GLint* params );
  307. #else
  308. struct amigamesa_visual* APIENTRY AmigaMesaCreateVisual(struct TagItem *tagList);
  309. struct amigamesa_context* APIENTRY AmigaMesaCreateContext(struct TagItem *tagList );
  310. void APIENTRY AmigaMesaDestroyContext(struct amigamesa_context *c );
  311. void APIENTRY AmigaMesaDestroyVisual(struct amigamesa_visual *v );
  312. void APIENTRY AmigaMesaMakeCurrent(struct amigamesa_context *c ,struct amigamesa_buffer *b);
  313. void APIENTRY AmigaMesaSwapBuffers(struct amigamesa_context *amesa);
  314. void APIENTRY AmigaMesaSetOneColor(struct amigamesa_context *c,int index,float r,float g,float b);
  315. void APIENTRY AmigaMesaSetRast(struct amigamesa_context *c, struct TagItem *tagList );
  316. void APIENTRY AmigaMesaGetConfig(struct amigamesa_visual *v, GLenum pname, GLint* params );
  317. #endif
  318. #endif
  319.  
  320. /*
  321.  * Amiga Mesa Attribute tag ID's.  These are used in the ti_Tag field of
  322.  * TagItem arrays passed to AmigaMesaSetDefs() and AmigaMesaCreateContext()
  323.  */
  324. #define AMA_Dummy       (TAG_USER + 32)
  325.  
  326. /*
  327. Offset to use. WARNING AMA_Left, AMA_Bottom Specifies the low left corner
  328. of the drawing area in deltapixles from the lowest left corner
  329. typical AMA_Left,window->BorderLeft
  330.           AMA_Bottom,window->BorderBottom + 1
  331.  
  332. 03.01.1998 Note by Sam Jordan: Use window->BorderBottom for this current
  333. implementation. Now the viewport size isn't decreased by 2 as in previous
  334. implementations.
  335.  
  336.  
  337. This is since ALL gl drawing actions is specified with this point as 0,0
  338. and with y positive uppwards (like in real graphs).
  339.  
  340. Untuched (defult) will result in 
  341. AMA_Left=0;
  342. AMA_Bottom=0;
  343. */
  344. #define AMA_Left                (AMA_Dummy + 0x0001)
  345. #define AMA_Bottom      (AMA_Dummy + 0x0002)
  346.  
  347. /*
  348. Size in pixels of drawing area if others than the whole rastport.
  349. All internal drawingbuffers will be in this size
  350.  
  351. Untuched (defult) will result in 
  352. AMA_Width =rp->BitMap->BytesPerRow*8;
  353. AMA_Height=rp->BitMap->Rows;
  354. */
  355. #define AMA_Width       (AMA_Dummy + 0x0003)
  356. #define AMA_Height      (AMA_Dummy + 0x0004)
  357.  
  358. /*
  359. AMA_DrawMode: Specifies the drawing hardware and should be one of
  360.                   AGA,(CYBERGFX,RETINA)
  361.                   Defult value: AGA
  362. if AMESA_AGA Amiga native drawigns
  363.     this has to be filled with data
  364.         AMA_Window = (ptr) Window to draw on
  365.     or
  366.         AMA_Screen =(ptr) Screen to draw on.
  367.         AMA_RastPort =(ptr) RastPort to draw on.
  368. if AMESA_AGA_C2P Amiga native drawing using a chunky buffer
  369.          thats converted when switching drawbuffer
  370.          only works on doublebuffered drawings.
  371.     this has to be filled with data
  372.         AMA_DoubleBuf = GL_TRUE
  373.         AMA_Window = (ptr) Window to draw on
  374.     or
  375.         AMA_DoubleBuf = GL_TRUE
  376.         AMA_Screen =(ptr) Screen to draw on.
  377.         AMA_RastPort =(ptr) RastPort to draw on.
  378.  
  379. else
  380.    here should all needed gfx-card tagitem be specified
  381. */
  382.  
  383. enum DrawModeID {AMESA_AGA,AMESA_AGA_C2P /*,AMESA_CYBERGFX,AMESA_RETINA*/};
  384. #define AMA_DrawMode    (AMA_Dummy + 0x0005)
  385. #define AMA_Screen      (AMA_Dummy + 0x0006)
  386. #define AMA_Window      (AMA_Dummy + 0x0007)
  387. #define AMA_RastPort    (AMA_Dummy + 0x0008)
  388.  
  389. /** booleans **/
  390. /*
  391. AMA_DoubleBuf: If specified it uses double Buffering (change buffer with
  392.                     AmigaMesaSwapBuffers()) Turn this on as much as posible
  393.                     it will result in smother looking and faster rendering
  394.                     Defult value: GL_FALSE
  395. AMA_RGBMode: If specified it uses 24bit when drawing (on non 24bit displays it
  396.                  it emuletes 24bit)
  397.                  Defult value: GL_TRUE
  398. AMA_AlphaFlag: Alphachanel ?
  399.                    Defule value: GL_FALSE
  400.  
  401. AMA_Forbid3DHW: if set to GL_TRUE, no 3D HW is used, but a software engine
  402.         default = GL_FALSE (3D-HW allowed)
  403. AMA_Fullscreen: if set to GL_TRUE, a fullscreen driver is launched (supporting
  404.         true multibuffering). Also available in 3D-HW mode.
  405. AMA_DirectRender: if set to GL_TRUE in non-fullscreen-mode, the frame is rendered
  406.         directly into the gfx RAM, the frame is then copied using the blitter.
  407.         (not available for AGA)
  408. AMA_TwoBuffers: allocates two back buffers in double-buffered window mode
  409.         (or AGA fullscreen mode). This is absolutely required, if the GL
  410.         applications requires access to the front buffer
  411.         (glDrawBuffer(GL_FRONT), glReadBuffer(GL_FRONT)). Never set this
  412.         flag, if you don't use these special features.
  413. AMA_Fast:       Tries to render faster as usual, but tries to maintain enough
  414.         OpenGL compatibility for accurate results
  415. AMA_VeryFast:   Tries to render as fast as possible and doesn't care at all
  416.         for OpenGL compliant results.
  417.         If both AMA_Fast and AMA_VeryFast are given, then AMA_VeryFast
  418.         takes precedence. If none of these tags are given, then the
  419.         graphics quality will be maintained as high as possible. Note,
  420.         that 3D hardware might support some effects, but might also
  421.         give slightly different results. Therefore if you want 100
  422.         percent GL compliant results, you should disable 3D hardware
  423.         support using AMA_Forbid3DHW.
  424. AMA_NoDepth:    don't allocate ZBuffer if GL_TRUE
  425. AMA_NoStencil:  don't allocate StencilBuffer if GL_TRUE
  426. AMA_NoAccum:    don't allocate AccumulationBuffer if GL_TRUE
  427. */
  428. #define AMA_DoubleBuf (AMA_Dummy + 0x0030)
  429. #define AMA_RGBMode      (AMA_Dummy + 0x0031)
  430. #define AMA_AlphaFlag (AMA_Dummy + 0x0032)
  431. #define AMA_Forbid3DHW (AMA_Dummy + 0x0033)
  432. #define AMA_Fullscreen (AMA_Dummy + 0x0034)
  433. #define AMA_DirectRender (AMA_Dummy + 0x0035)
  434. #define AMA_TwoBuffers (AMA_Dummy + 0x0036)
  435. #define AMA_Fast (AMA_Dummy + 0x0037)
  436. #define AMA_VeryFast (AMA_Dummy + 0x0038)
  437. #define AMA_NoDepth (AMA_Dummy + 0x0039)
  438. #define AMA_NoStencil (AMA_Dummy + 0x003a)
  439. #define AMA_NoAccum (AMA_Dummy + 0x003b)
  440.  
  441. /** Special **/
  442. /*
  443. AMA_Visual:     If you want to implement your own amigamesa_visual 
  444. AMA_Buffer: If you want to implement your own amigamesa_buffer
  445. AMA_WindowID: A windowID to use when I alloc AMA_Buffer for you if
  446.                   you didn't supply one.(defult=1)
  447. */
  448.  
  449. #define AMA_Visual                      (AMA_Dummy + 0x0041)
  450. #define AMA_Buffer                      (AMA_Dummy + 0x0042)
  451. #define AMA_WindowID                    (AMA_Dummy + 0x0043)
  452.  
  453. #ifdef __cplusplus
  454. }
  455. #endif
  456.  
  457.  
  458. #endif
  459.