home *** CD-ROM | disk | FTP | other *** search
/ Amiga MA Magazine 1998 #6 / amigamamagazinepolishissue1998.iso / coders / mesa-1.2.8 / include / gl / glx.h < prev    next >
C/C++ Source or Header  |  1996-05-27  |  6KB  |  261 lines

  1. /* $Id: glx.h,v 1.13 1996/05/22 14:02:08 brianp Exp $ */
  2.  
  3. /*
  4.  * Mesa 3-D graphics library
  5.  * Version:  1.2
  6.  * Copyright (C) 1995-1996  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. /*
  25. $Log: glx.h,v $
  26.  * Revision 1.13  1996/05/22  14:02:08  brianp
  27.  * added GLX_EXT_visual_info extension
  28.  *
  29.  * Revision 1.12  1996/04/26  16:58:52  brianp
  30.  * added the GLX_MESA_pixmap_colormap extension
  31.  *
  32.  * Revision 1.11  1996/04/25  19:30:06  brianp
  33.  * GLX typedef's dependent on whether or not MESA is defined in gl.h
  34.  *
  35.  * Revision 1.10  1995/10/12  16:58:37  brianp
  36.  * updated notes to reflect latest code changes
  37.  *
  38.  * Revision 1.9  1995/08/03  19:34:37  brianp
  39.  * explictly assigned values to GLX_ symbols to match OpenGL
  40.  *
  41.  * Revision 1.8  1995/07/28  15:01:05  brianp
  42.  * added a few notes on using GLX
  43.  *
  44.  * Revision 1.7  1995/05/22  17:03:21  brianp
  45.  * Release 1.2
  46.  *
  47.  * Revision 1.6  1995/04/28  20:04:36  brianp
  48.  * rename GLX_BAD_ATTRIB to GLX_BAD_ATTRIBUTE
  49.  *
  50.  * Revision 1.5  1995/04/17  14:42:00  brianp
  51.  * added GLX version 1.1 functions and symbols
  52.  *
  53.  * Revision 1.4  1995/04/05  18:29:41  brianp
  54.  * added GLX error constants
  55.  *
  56.  * Revision 1.3  1995/03/04  19:45:47  brianp
  57.  * 1.1 beta revision
  58.  *
  59.  * Revision 1.2  1995/02/28  21:22:39  brianp
  60.  * fixed a typo
  61.  *
  62.  * Revision 1.1  1995/02/28  21:21:03  brianp
  63.  * Initial revision
  64.  *
  65.  */
  66.  
  67.  
  68. #ifndef GLX_H
  69. #define GLX_H
  70.  
  71.  
  72. /*
  73.  * A pseudo-GLX implementation to allow GLX-based OpenGL programs to
  74.  * work with Mesa.
  75.  *
  76.  * Notes:
  77.  *   1. If the visual passed to glXGetConfig was not one returned by
  78.  *      glXChooseVisual then the GLX_RGBA and GLX_DOUBLEBUFFER queries
  79.  *      will always return True and the GLX_DEPTH_SIZE query will always
  80.  *      return non-zero.
  81.  *   2. The glXIsDirect() function always returns True.
  82.  */
  83.  
  84.  
  85.  
  86. #include <X11/Xlib.h>
  87. #include <X11/Xutil.h>
  88. #include "GL/gl.h"
  89. #ifdef MESA
  90. #include "GL/xmesa.h"
  91. #endif
  92.  
  93.  
  94.  
  95. #ifdef __cplusplus
  96. extern "C" {
  97. #endif
  98.  
  99.  
  100. #define GLX_VERSION_1_1        1
  101.  
  102.  
  103. /*
  104.  * Tokens for glXChooseVisual and glXGetConfig:
  105.  */
  106. enum _GLX_CONFIGS {
  107.     GLX_USE_GL        = 1,
  108.     GLX_BUFFER_SIZE        = 2,
  109.     GLX_LEVEL        = 3,
  110.     GLX_RGBA        = 4,
  111.     GLX_DOUBLEBUFFER    = 5, 
  112.     GLX_STEREO        = 6,
  113.     GLX_AUX_BUFFERS        = 7,
  114.     GLX_RED_SIZE        = 8,
  115.     GLX_GREEN_SIZE        = 9,
  116.     GLX_BLUE_SIZE        = 10,
  117.     GLX_ALPHA_SIZE        = 11,
  118.     GLX_DEPTH_SIZE        = 12,
  119.     GLX_STENCIL_SIZE    = 13,
  120.     GLX_ACCUM_RED_SIZE    = 14,
  121.     GLX_ACCUM_GREEN_SIZE    = 15,
  122.     GLX_ACCUM_BLUE_SIZE    = 16,
  123.     GLX_ACCUM_ALPHA_SIZE    = 17,
  124.  
  125.     /* GLX_EXT_visual_info extension */
  126.     GLX_X_VISUAL_TYPE_EXT        = 0x22,
  127.     GLX_TRANSPARENT_TYPE_EXT    = 0x23,
  128.     GLX_TRANSPARENT_INDEX_VALUE_EXT    = 0x24,
  129.     GLX_TRANSPARENT_RED_VALUE_EXT    = 0x25,
  130.     GLX_TRANSPARENT_GREEN_VALUE_EXT    = 0x26,
  131.     GLX_TRANSPARENT_BLUE_VALUE_EXT    = 0x27,
  132.     GLX_TRANSPARENT_ALPHA_VALUE_EXT    = 0x28
  133. };
  134.  
  135.  
  136. /*
  137.  * Error codes returned by glXGetConfig:
  138.  */
  139. #define GLX_BAD_SCREEN        1
  140. #define GLX_BAD_ATTRIBUTE    2
  141. #define GLX_NO_EXTENSION    3
  142. #define GLX_BAD_VISUAL        4
  143. #define GLX_BAD_CONTEXT        5
  144. #define GLX_BAD_VALUE           6
  145. #define GLX_BAD_ENUM        7
  146.  
  147.  
  148. /*
  149.  * GLX 1.1 and later:
  150.  */
  151. #define GLX_VENDOR        1
  152. #define GLX_VERSION        2
  153. #define GLX_EXTENSIONS         3
  154.  
  155.  
  156. /*
  157.  * GLX_visual_info extension
  158.  */
  159. #define GLX_TRUE_COLOR_EXT        0x8002
  160. #define GLX_DIRECT_COLOR_EXT        0x8003
  161. #define GLX_PSEUDO_COLOR_EXT        0x8004
  162. #define GLX_STATIC_COLOR_EXT        0x8005
  163. #define GLX_GRAY_SCALE_EXT        0x8006
  164. #define GLX_STATIC_GRAY_EXT        0x8007
  165. #define GLX_NONE_EXT            0x8000
  166. #define GLX_TRANSPARENT_RGB_EXT        0x8008
  167. #define GLX_TRANSPARENT_INDEX_EXT    0x8009
  168.  
  169.  
  170. /*
  171.  * Compile-time extension tests
  172.  */
  173. #ifdef MESA
  174. #define GLX_EXT_visual_info    1
  175. #define GLX_MESA_pixmap_colormap 1
  176. #endif
  177.  
  178.  
  179.  
  180. #ifdef MESA
  181.    typedef XMesaContext GLXContext;
  182.    typedef Pixmap GLXPixmap;
  183.    typedef Drawable GLXDrawable;
  184. #else
  185.    typedef void * GLXContext;
  186.    typedef XID GLXPixmap;
  187.    typedef XID GLXDrawable;
  188. #endif
  189. typedef XID GLXContextID;
  190.  
  191.  
  192.  
  193. extern XVisualInfo* glXChooseVisual( Display *dpy, int screen,
  194.                      int *attribList );
  195.  
  196. extern GLXContext glXCreateContext( Display *dpy, XVisualInfo *vis,
  197.                     GLXContext shareList, Bool direct );
  198.  
  199. extern void glXDestroyContext( Display *dpy, GLXContext ctx );
  200.  
  201. extern Bool glXMakeCurrent( Display *dpy, GLXDrawable drawable,
  202.                 GLXContext ctx);
  203.  
  204. extern void glXCopyContext( Display *dpy, GLXContext src, GLXContext dst,
  205.                 GLuint mask );
  206.  
  207. extern void glXSwapBuffers( Display *dpy, GLXDrawable drawable );
  208.  
  209. extern GLXPixmap glXCreateGLXPixmap( Display *dpy, XVisualInfo *visual,
  210.                      Pixmap pixmap );
  211.  
  212. extern void glXDestroyGLXPixmap( Display *dpy, GLXPixmap pixmap );
  213.  
  214. extern Bool glXQueryExtension( Display *dpy, int *errorb, int *event );
  215.  
  216. extern Bool glXQueryVersion( Display *dpy, int *maj, int *min );
  217.  
  218. extern Bool glXIsDirect( Display *dpy, GLXContext ctx );
  219.  
  220. extern int glXGetConfig( Display *dpy, XVisualInfo *visual,
  221.              int attrib, int *value );
  222.  
  223. extern GLXContext glXGetCurrentContext( void );
  224.  
  225. extern GLXDrawable glXGetCurrentDrawable( void );
  226.  
  227. extern void glXWaitGL( void );
  228.  
  229. extern void glXWaitX( void );
  230.  
  231. extern void glXUseXFont( Font font, int first, int count, int list );
  232.  
  233.  
  234.  
  235. /* GLX 1.1 and later */
  236. extern const char *glXQueryExtensionsString( Display *dpy, int screen );
  237.  
  238. extern const char *glXQueryServerString( Display *dpy, int screen, int name );
  239.  
  240. extern const char *glXGetClientString( Display *dpy, int name );
  241.  
  242.  
  243.  
  244. /*
  245.  * Mesa GLX Extensions
  246.  */
  247.  
  248. #ifdef GLX_MESA_pixmap_colormap
  249. extern GLXPixmap glXCreateGLXPixmapMESA( Display *dpy, XVisualInfo *visual,
  250.                                          Pixmap pixmap, Colormap cmap );
  251. #endif
  252.  
  253.  
  254.  
  255.  
  256. #ifdef __cplusplus
  257. }
  258. #endif
  259.  
  260. #endif
  261.