Panda3D
|
00001 #ifndef panda__glxext_h_ 00002 #define panda__glxext_h_ 00003 00004 #ifdef __cplusplus 00005 extern "C" { 00006 #endif 00007 00008 /* 00009 ** License Applicability. Except to the extent portions of this file are 00010 ** made subject to an alternative license as permitted in the SGI Free 00011 ** Software License B, Version 1.1 (the "License"), the contents of this 00012 ** file are subject only to the provisions of the License. You may not use 00013 ** this file except in compliance with the License. You may obtain a copy 00014 ** of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 00015 ** Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: 00016 ** 00017 ** http://oss.sgi.com/projects/FreeB 00018 ** 00019 ** Note that, as provided in the License, the Software is distributed on an 00020 ** "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS 00021 ** DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND 00022 ** CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A 00023 ** PARTICULAR PURPOSE, AND NON-INFRINGEMENT. 00024 ** 00025 ** Original Code. The Original Code is: OpenGL Sample Implementation, 00026 ** Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, 00027 ** Inc. The Original Code is Copyright (c) 1991-2002 Silicon Graphics, Inc. 00028 ** Copyright in any portions created by third parties is as indicated 00029 ** elsewhere herein. All Rights Reserved. 00030 ** 00031 ** Additional Notice Provisions: This software was created using the 00032 ** OpenGL(R) version 1.2.1 Sample Implementation published by SGI, but has 00033 ** not been independently verified as being compliant with the OpenGL(R) 00034 ** version 1.2.1 Specification. 00035 */ 00036 00037 #if defined(_WIN32) && !defined(APIENTRY) && !defined(__CYGWIN__) && !defined(__SCITECH_SNAP__) 00038 #define WIN32_LEAN_AND_MEAN 1 00039 #include <windows.h> 00040 #endif 00041 00042 #ifndef APIENTRY 00043 #define APIENTRY 00044 #endif 00045 #ifndef APIENTRYP 00046 #define APIENTRYP APIENTRY * 00047 #endif 00048 #ifndef GLAPI 00049 #define GLAPI extern 00050 #endif 00051 00052 /*************************************************************/ 00053 00054 /* Header file version number, required by OpenGL ABI for Linux */ 00055 /* glxext.h last updated 2002/03/22 */ 00056 /* Current version at http://oss.sgi.com/projects/ogl-sample/registry/ */ 00057 #define GLX_GLXEXT_VERSION 5 00058 00059 #ifndef GLX_VERSION_1_3 00060 #define GLX_WINDOW_BIT 0x00000001 00061 #define GLX_PIXMAP_BIT 0x00000002 00062 #define GLX_PBUFFER_BIT 0x00000004 00063 #define GLX_RGBA_BIT 0x00000001 00064 #define GLX_COLOR_INDEX_BIT 0x00000002 00065 #define GLX_PBUFFER_CLOBBER_MASK 0x08000000 00066 #define GLX_FRONT_LEFT_BUFFER_BIT 0x00000001 00067 #define GLX_FRONT_RIGHT_BUFFER_BIT 0x00000002 00068 #define GLX_BACK_LEFT_BUFFER_BIT 0x00000004 00069 #define GLX_BACK_RIGHT_BUFFER_BIT 0x00000008 00070 #define GLX_AUX_BUFFERS_BIT 0x00000010 00071 #define GLX_DEPTH_BUFFER_BIT 0x00000020 00072 #define GLX_STENCIL_BUFFER_BIT 0x00000040 00073 #define GLX_ACCUM_BUFFER_BIT 0x00000080 00074 #define GLX_CONFIG_CAVEAT 0x20 00075 #define GLX_X_VISUAL_TYPE 0x22 00076 #define GLX_TRANSPARENT_TYPE 0x23 00077 #define GLX_TRANSPARENT_INDEX_VALUE 0x24 00078 #define GLX_TRANSPARENT_RED_VALUE 0x25 00079 #define GLX_TRANSPARENT_GREEN_VALUE 0x26 00080 #define GLX_TRANSPARENT_BLUE_VALUE 0x27 00081 #define GLX_TRANSPARENT_ALPHA_VALUE 0x28 00082 #define GLX_DONT_CARE 0xFFFFFFFF 00083 #define GLX_NONE 0x8000 00084 #define GLX_SLOW_CONFIG 0x8001 00085 #define GLX_TRUE_COLOR 0x8002 00086 #define GLX_DIRECT_COLOR 0x8003 00087 #define GLX_PSEUDO_COLOR 0x8004 00088 #define GLX_STATIC_COLOR 0x8005 00089 #define GLX_GRAY_SCALE 0x8006 00090 #define GLX_STATIC_GRAY 0x8007 00091 #define GLX_TRANSPARENT_RGB 0x8008 00092 #define GLX_TRANSPARENT_INDEX 0x8009 00093 #define GLX_VISUAL_ID 0x800B 00094 #define GLX_SCREEN 0x800C 00095 #define GLX_NON_CONFORMANT_CONFIG 0x800D 00096 #define GLX_DRAWABLE_TYPE 0x8010 00097 #define GLX_RENDER_TYPE 0x8011 00098 #define GLX_X_RENDERABLE 0x8012 00099 #define GLX_FBCONFIG_ID 0x8013 00100 #define GLX_RGBA_TYPE 0x8014 00101 #define GLX_COLOR_INDEX_TYPE 0x8015 00102 #define GLX_MAX_PBUFFER_WIDTH 0x8016 00103 #define GLX_MAX_PBUFFER_HEIGHT 0x8017 00104 #define GLX_MAX_PBUFFER_PIXELS 0x8018 00105 #define GLX_PRESERVED_CONTENTS 0x801B 00106 #define GLX_LARGEST_PBUFFER 0x801C 00107 #define GLX_WIDTH 0x801D 00108 #define GLX_HEIGHT 0x801E 00109 #define GLX_EVENT_MASK 0x801F 00110 #define GLX_DAMAGED 0x8020 00111 #define GLX_SAVED 0x8021 00112 #define GLX_WINDOW 0x8022 00113 #define GLX_PBUFFER 0x8023 00114 #define GLX_PBUFFER_HEIGHT 0x8040 00115 #define GLX_PBUFFER_WIDTH 0x8041 00116 #endif 00117 00118 #ifndef GLX_VERSION_1_4 00119 #define GLX_SAMPLE_BUFFERS 100000 00120 #define GLX_SAMPLES 100001 00121 #endif 00122 00123 /* drose: the version of GL/glx.h that ships with Fedora Core 2 seems 00124 to define GLX_VERSION_1_4, but for some reason does not define 00125 GLX_SAMPLE_BUFFERS or GLX_SAMPLES. We work around that here. */ 00126 #ifndef GLX_SAMPLE_BUFFERS 00127 #define GLX_SAMPLE_BUFFERS 100000 00128 #endif 00129 #ifndef GLX_SAMPLES 00130 #define GLX_SAMPLES 100001 00131 #endif 00132 00133 #ifndef GLX_ARB_get_proc_address 00134 #endif 00135 00136 #ifndef GLX_ARB_multisample 00137 #define GLX_SAMPLE_BUFFERS_ARB 100000 00138 #define GLX_SAMPLES_ARB 100001 00139 #endif 00140 00141 #ifndef GLX_SGIS_multisample 00142 #define GLX_SAMPLE_BUFFERS_SGIS 100000 00143 #define GLX_SAMPLES_SGIS 100001 00144 #endif 00145 00146 #ifndef GLX_EXT_visual_info 00147 #define GLX_X_VISUAL_TYPE_EXT 0x22 00148 #define GLX_TRANSPARENT_TYPE_EXT 0x23 00149 #define GLX_TRANSPARENT_INDEX_VALUE_EXT 0x24 00150 #define GLX_TRANSPARENT_RED_VALUE_EXT 0x25 00151 #define GLX_TRANSPARENT_GREEN_VALUE_EXT 0x26 00152 #define GLX_TRANSPARENT_BLUE_VALUE_EXT 0x27 00153 #define GLX_TRANSPARENT_ALPHA_VALUE_EXT 0x28 00154 #define GLX_NONE_EXT 0x8000 00155 #define GLX_TRUE_COLOR_EXT 0x8002 00156 #define GLX_DIRECT_COLOR_EXT 0x8003 00157 #define GLX_PSEUDO_COLOR_EXT 0x8004 00158 #define GLX_STATIC_COLOR_EXT 0x8005 00159 #define GLX_GRAY_SCALE_EXT 0x8006 00160 #define GLX_STATIC_GRAY_EXT 0x8007 00161 #define GLX_TRANSPARENT_RGB_EXT 0x8008 00162 #define GLX_TRANSPARENT_INDEX_EXT 0x8009 00163 #endif 00164 00165 #ifndef GLX_SGI_swap_control 00166 #endif 00167 00168 #ifndef GLX_SGI_video_sync 00169 #endif 00170 00171 #ifndef GLX_SGI_make_current_read 00172 #endif 00173 00174 #ifndef GLX_SGIX_video_source 00175 #endif 00176 00177 #ifndef GLX_EXT_visual_rating 00178 #define GLX_VISUAL_CAVEAT_EXT 0x20 00179 #define GLX_SLOW_VISUAL_EXT 0x8001 00180 #define GLX_NON_CONFORMANT_VISUAL_EXT 0x800D 00181 /* reuse GLX_NONE_EXT */ 00182 #endif 00183 00184 #ifndef GLX_EXT_import_context 00185 #define GLX_SHARE_CONTEXT_EXT 0x800A 00186 #define GLX_VISUAL_ID_EXT 0x800B 00187 #define GLX_SCREEN_EXT 0x800C 00188 #endif 00189 00190 #ifndef GLX_SGIX_fbconfig 00191 #define GLX_WINDOW_BIT_SGIX 0x00000001 00192 #define GLX_PIXMAP_BIT_SGIX 0x00000002 00193 #define GLX_RGBA_BIT_SGIX 0x00000001 00194 #define GLX_COLOR_INDEX_BIT_SGIX 0x00000002 00195 #define GLX_DRAWABLE_TYPE_SGIX 0x8010 00196 #define GLX_RENDER_TYPE_SGIX 0x8011 00197 #define GLX_X_RENDERABLE_SGIX 0x8012 00198 #define GLX_FBCONFIG_ID_SGIX 0x8013 00199 #define GLX_RGBA_TYPE_SGIX 0x8014 00200 #define GLX_COLOR_INDEX_TYPE_SGIX 0x8015 00201 /* reuse GLX_SCREEN_EXT */ 00202 #endif 00203 00204 #ifndef GLX_SGIX_pbuffer 00205 #define GLX_PBUFFER_BIT_SGIX 0x00000004 00206 #define GLX_BUFFER_CLOBBER_MASK_SGIX 0x08000000 00207 #define GLX_FRONT_LEFT_BUFFER_BIT_SGIX 0x00000001 00208 #define GLX_FRONT_RIGHT_BUFFER_BIT_SGIX 0x00000002 00209 #define GLX_BACK_LEFT_BUFFER_BIT_SGIX 0x00000004 00210 #define GLX_BACK_RIGHT_BUFFER_BIT_SGIX 0x00000008 00211 #define GLX_AUX_BUFFERS_BIT_SGIX 0x00000010 00212 #define GLX_DEPTH_BUFFER_BIT_SGIX 0x00000020 00213 #define GLX_STENCIL_BUFFER_BIT_SGIX 0x00000040 00214 #define GLX_ACCUM_BUFFER_BIT_SGIX 0x00000080 00215 #define GLX_SAMPLE_BUFFERS_BIT_SGIX 0x00000100 00216 #define GLX_MAX_PBUFFER_WIDTH_SGIX 0x8016 00217 #define GLX_MAX_PBUFFER_HEIGHT_SGIX 0x8017 00218 #define GLX_MAX_PBUFFER_PIXELS_SGIX 0x8018 00219 #define GLX_OPTIMAL_PBUFFER_WIDTH_SGIX 0x8019 00220 #define GLX_OPTIMAL_PBUFFER_HEIGHT_SGIX 0x801A 00221 #define GLX_PRESERVED_CONTENTS_SGIX 0x801B 00222 #define GLX_LARGEST_PBUFFER_SGIX 0x801C 00223 #define GLX_WIDTH_SGIX 0x801D 00224 #define GLX_HEIGHT_SGIX 0x801E 00225 #define GLX_EVENT_MASK_SGIX 0x801F 00226 #define GLX_DAMAGED_SGIX 0x8020 00227 #define GLX_SAVED_SGIX 0x8021 00228 #define GLX_WINDOW_SGIX 0x8022 00229 #define GLX_PBUFFER_SGIX 0x8023 00230 #endif 00231 00232 #ifndef GLX_SGI_cushion 00233 #endif 00234 00235 #ifndef GLX_SGIX_video_resize 00236 #define GLX_SYNC_FRAME_SGIX 0x00000000 00237 #define GLX_SYNC_SWAP_SGIX 0x00000001 00238 #endif 00239 00240 #ifndef GLX_SGIX_dmbuffer 00241 #define GLX_DIGITAL_MEDIA_PBUFFER_SGIX 0x8024 00242 #endif 00243 00244 #ifndef GLX_SGIX_swap_group 00245 #endif 00246 00247 #ifndef GLX_SGIX_swap_barrier 00248 #endif 00249 00250 #ifndef GLX_SGIS_blended_overlay 00251 #define GLX_BLENDED_RGBA_SGIS 0x8025 00252 #endif 00253 00254 #ifndef GLX_SGIS_shared_multisample 00255 #define GLX_MULTISAMPLE_SUB_RECT_WIDTH_SGIS 0x8026 00256 #define GLX_MULTISAMPLE_SUB_RECT_HEIGHT_SGIS 0x8027 00257 #endif 00258 00259 #ifndef GLX_SUN_get_transparent_index 00260 #endif 00261 00262 #ifndef GLX_3DFX_multisample 00263 #define GLX_SAMPLE_BUFFERS_3DFX 0x8050 00264 #define GLX_SAMPLES_3DFX 0x8051 00265 #endif 00266 00267 #ifndef GLX_MESA_copy_sub_buffer 00268 #endif 00269 00270 #ifndef GLX_MESA_pixmap_colormap 00271 #endif 00272 00273 #ifndef GLX_MESA_release_buffers 00274 #endif 00275 00276 #ifndef GLX_MESA_set_3dfx_mode 00277 #define GLX_3DFX_WINDOW_MODE_MESA 0x1 00278 #define GLX_3DFX_FULLSCREEN_MODE_MESA 0x2 00279 #endif 00280 00281 #ifndef GLX_SGIX_visual_select_group 00282 #define GLX_VISUAL_SELECT_GROUP_SGIX 0x8028 00283 #endif 00284 00285 #ifndef GLX_OML_swap_method 00286 #define GLX_SWAP_METHOD_OML 0x8060 00287 #define GLX_SWAP_EXCHANGE_OML 0x8061 00288 #define GLX_SWAP_COPY_OML 0x8062 00289 #define GLX_SWAP_UNDEFINED_OML 0x8063 00290 #endif 00291 00292 #ifndef GLX_OML_sync_control 00293 #endif 00294 00295 00296 /*************************************************************/ 00297 00298 /* drose: glxext.h seems to have an error in that it assumes 00299 __GLXextFuncPtr will be typedeffed if GLX_ARB_get_proc_address is 00300 defined, which does not seem to be the case (at least it is not so 00301 on my redhat 8.0 box). So we work around this by typedeffing it 00302 explicitly; and we use #define in case it is already typedeffed. */ 00303 #define __GLXextFuncPtr panda__GLXextFuncPtr 00304 typedef void (*__GLXextFuncPtr)(); 00305 00306 /* 00307 #ifndef GLX_ARB_get_proc_address 00308 typedef void (*__GLXextFuncPtr)(); 00309 #endif 00310 */ 00311 00312 #ifndef GLX_SGIX_video_source 00313 typedef XID GLXVideoSourceSGIX; 00314 #endif 00315 00316 #ifndef GLX_SGIX_fbconfig 00317 typedef XID GLXFBConfigIDSGIX; 00318 typedef struct __GLXFBConfigRec *GLXFBConfigSGIX; 00319 #endif 00320 00321 #ifndef GLX_SGIX_pbuffer 00322 typedef XID GLXPbufferSGIX; 00323 typedef struct { 00324 int type; 00325 unsigned long serial; /* # of last request processed by server */ 00326 Bool send_event; /* true if this came for SendEvent request */ 00327 X11_Display *display; /* display the event was read from */ 00328 GLXDrawable drawable; /* i.d. of Drawable */ 00329 int event_type; /* GLX_DAMAGED_SGIX or GLX_SAVED_SGIX */ 00330 int draw_type; /* GLX_WINDOW_SGIX or GLX_PBUFFER_SGIX */ 00331 unsigned int mask; /* mask indicating which buffers are affected*/ 00332 int x, y; 00333 int width, height; 00334 int count; /* if nonzero, at least this many more */ 00335 } GLXBufferClobberEventSGIX; 00336 #endif 00337 00338 #ifndef GLX_VERSION_1_3 00339 #define GLX_VERSION_1_3 1 00340 /* drose: If the system glx.h isn't at least version 1.3, it won't 00341 have defined these types, so we need to do so here in order for 00342 the following to compile. */ 00343 typedef struct __GLXFBConfigRec *GLXFBConfig; 00344 typedef XID GLXPbuffer; 00345 typedef XID GLXWindow; 00346 00347 #ifdef GLX_GLXEXT_PROTOTYPES 00348 extern GLXFBConfig * glXGetFBConfigs (X11_Display *, int, int *); 00349 extern GLXFBConfig * glXChooseFBConfig (X11_Display *, int, const int *, int *); 00350 extern int glXGetFBConfigAttrib (X11_Display *, GLXFBConfig, int, int *); 00351 extern XVisualInfo * glXGetVisualFromFBConfig (X11_Display *, GLXFBConfig); 00352 extern GLXWindow glXCreateWindow (X11_Display *, GLXFBConfig, X11_Window, const int *); 00353 extern void glXDestroyWindow (X11_Display *, GLXWindow); 00354 extern GLXPixmap glXCreatePixmap (X11_Display *, GLXFBConfig, Pixmap, const int *); 00355 extern void glXDestroyPixmap (X11_Display *, GLXPixmap); 00356 extern GLXPbuffer glXCreatePbuffer (X11_Display *, GLXFBConfig, const int *); 00357 extern void glXDestroyPbuffer (X11_Display *, GLXPbuffer); 00358 extern void glXQueryDrawable (X11_Display *, GLXDrawable, int, unsigned int *); 00359 extern GLXContext glXCreateNewContext (X11_Display *, GLXFBConfig, int, GLXContext, Bool); 00360 extern Bool glXMakeContextCurrent (X11_Display *, GLXDrawable, GLXDrawable, GLXContext); 00361 extern GLXDrawable glXGetCurrentReadDrawable (); 00362 extern X11_Display * glXGetCurrentDisplay (); 00363 extern int glXQueryContext (X11_Display *, GLXContext, int, int *); 00364 extern void glXSelectEvent (X11_Display *, GLXDrawable, unsigned long); 00365 extern void glXGetSelectedEvent (X11_Display *, GLXDrawable, unsigned long *); 00366 #endif /* GLX_GLXEXT_PROTOTYPES */ 00367 /* drose: all of the following PFN... typedefs seemed to be 00368 incorrect. I put a * just inside the leading parenthesis. */ 00369 typedef GLXFBConfig * (* PFNGLXGETFBCONFIGSPROC) (X11_Display *dpy, int screen, int *nelements); 00370 typedef GLXFBConfig * (* PFNGLXCHOOSEFBCONFIGPROC) (X11_Display *dpy, int screen, const int *attrib_list, int *nelements); 00371 typedef int (* PFNGLXGETFBCONFIGATTRIBPROC) (X11_Display *dpy, GLXFBConfig config, int attribute, int *value); 00372 typedef XVisualInfo * (* PFNGLXGETVISUALFROMFBCONFIGPROC) (X11_Display *dpy, GLXFBConfig config); 00373 typedef GLXWindow (* PFNGLXCREATEWINDOWPROC) (X11_Display *dpy, GLXFBConfig config, X11_Window win, const int *attrib_list); 00374 typedef void (* PFNGLXDESTROYWINDOWPROC) (X11_Display *dpy, GLXWindow win); 00375 typedef GLXPixmap (* PFNGLXCREATEPIXMAPPROC) (X11_Display *dpy, GLXFBConfig config, Pixmap pixmap, const int *attrib_list); 00376 typedef void (* PFNGLXDESTROYPIXMAPPROC) (X11_Display *dpy, GLXPixmap pixmap); 00377 typedef GLXPbuffer (* PFNGLXCREATEPBUFFERPROC) (X11_Display *dpy, GLXFBConfig config, const int *attrib_list); 00378 typedef void (* PFNGLXDESTROYPBUFFERPROC) (X11_Display *dpy, GLXPbuffer pbuf); 00379 typedef void (* PFNGLXQUERYDRAWABLEPROC) (X11_Display *dpy, GLXDrawable draw, int attribute, unsigned int *value); 00380 typedef GLXContext (* PFNGLXCREATENEWCONTEXTPROC) (X11_Display *dpy, GLXFBConfig config, int render_type, GLXContext share_list, Bool direct); 00381 typedef Bool (* PFNGLXMAKECONTEXTCURRENTPROC) (X11_Display *dpy, GLXDrawable draw, GLXDrawable read, GLXContext ctx); 00382 typedef GLXDrawable (* PFNGLXGETCURRENTREADDRAWABLEPROC) (); 00383 typedef X11_Display * (* PFNGLXGETCURRENTDISPLAYPROC) (); 00384 typedef int (* PFNGLXQUERYCONTEXTPROC) (X11_Display *dpy, GLXContext ctx, int attribute, int *value); 00385 typedef void (* PFNGLXSELECTEVENTPROC) (X11_Display *dpy, GLXDrawable draw, unsigned long event_mask); 00386 typedef void (* PFNGLXGETSELECTEDEVENTPROC) (X11_Display *dpy, GLXDrawable draw, unsigned long *event_mask); 00387 #endif 00388 00389 #ifndef GLX_VERSION_1_4 00390 #define GLX_VERSION_1_4 1 00391 #ifdef GLX_GLXEXT_PROTOTYPES 00392 extern __GLXextFuncPtr glXGetProcAddress (const GLubyte *); 00393 #endif /* GLX_GLXEXT_PROTOTYPES */ 00394 typedef __GLXextFuncPtr (* PFNGLXGETPROCADDRESSPROC) (const GLubyte *procName); 00395 #endif 00396 00397 #ifndef GLX_ARB_get_proc_address 00398 #define GLX_ARB_get_proc_address 1 00399 #ifdef GLX_GLXEXT_PROTOTYPES 00400 extern __GLXextFuncPtr glXGetProcAddressARB (const GLubyte *); 00401 #endif /* GLX_GLXEXT_PROTOTYPES */ 00402 typedef __GLXextFuncPtr (* PFNGLXGETPROCADDRESSARBPROC) (const GLubyte *procName); 00403 #endif 00404 00405 #ifndef GLX_ARB_multisample 00406 #define GLX_ARB_multisample 1 00407 #endif 00408 00409 #ifndef GLX_SGIS_multisample 00410 #define GLX_SGIS_multisample 1 00411 #endif 00412 00413 #ifndef GLX_EXT_visual_info 00414 #define GLX_EXT_visual_info 1 00415 #endif 00416 00417 #ifndef GLX_SGI_swap_control 00418 #define GLX_SGI_swap_control 1 00419 #ifdef GLX_GLXEXT_PROTOTYPES 00420 extern int glXSwapIntervalSGI (int); 00421 #endif /* GLX_GLXEXT_PROTOTYPES */ 00422 typedef int (* PFNGLXSWAPINTERVALSGIPROC) (int interval); 00423 #endif 00424 00425 #ifndef GLX_SGI_video_sync 00426 #define GLX_SGI_video_sync 1 00427 #ifdef GLX_GLXEXT_PROTOTYPES 00428 extern int glXGetVideoSyncSGI (unsigned int *); 00429 extern int glXWaitVideoSyncSGI (int, int, unsigned int *); 00430 #endif /* GLX_GLXEXT_PROTOTYPES */ 00431 typedef int (* PFNGLXGETVIDEOSYNCSGIPROC) (unsigned int *count); 00432 typedef int (* PFNGLXWAITVIDEOSYNCSGIPROC) (int divisor, int remainder, unsigned int *count); 00433 #endif 00434 00435 #ifndef GLX_SGI_make_current_read 00436 #define GLX_SGI_make_current_read 1 00437 #ifdef GLX_GLXEXT_PROTOTYPES 00438 extern Bool glXMakeCurrentReadSGI (X11_Display *, GLXDrawable, GLXDrawable, GLXContext); 00439 extern GLXDrawable glXGetCurrentReadDrawableSGI (); 00440 #endif /* GLX_GLXEXT_PROTOTYPES */ 00441 typedef Bool (* PFNGLXMAKECURRENTREADSGIPROC) (X11_Display *dpy, GLXDrawable draw, GLXDrawable read, GLXContext ctx); 00442 typedef GLXDrawable (* PFNGLXGETCURRENTREADDRAWABLESGIPROC) (); 00443 #endif 00444 00445 #ifndef GLX_SGIX_video_source 00446 #define GLX_SGIX_video_source 1 00447 #ifdef _VL_H 00448 #ifdef GLX_GLXEXT_PROTOTYPES 00449 extern GLXVideoSourceSGIX glXCreateGLXVideoSourceSGIX (X11_Display *, int, VLServer, VLPath, int, VLNode); 00450 extern void glXDestroyGLXVideoSourceSGIX (X11_Display *, GLXVideoSourceSGIX); 00451 #endif /* GLX_GLXEXT_PROTOTYPES */ 00452 typedef GLXVideoSourceSGIX (* PFNGLXCREATEGLXVIDEOSOURCESGIXPROC) (X11_Display *display, int screen, VLServer server, VLPath path, int nodeClass, VLNode drainNode); 00453 typedef void (* PFNGLXDESTROYGLXVIDEOSOURCESGIXPROC) (X11_Display *dpy, GLXVideoSourceSGIX glxvideosource); 00454 #endif 00455 00456 #endif /* _VL_H */ 00457 #ifndef GLX_EXT_visual_rating 00458 #define GLX_EXT_visual_rating 1 00459 #endif 00460 00461 #ifndef GLX_EXT_import_context 00462 #define GLX_EXT_import_context 1 00463 #ifdef GLX_GLXEXT_PROTOTYPES 00464 extern X11_Display * glXGetCurrentDisplayEXT (); 00465 extern int glXQueryContextInfoEXT (X11_Display *, GLXContext, int, int *); 00466 extern GLXContextID glXGetContextIDEXT (const GLXContext); 00467 extern GLXContext glXImportContextEXT (X11_Display *, GLXContextID); 00468 extern void glXFreeContextEXT (X11_Display *, GLXContext); 00469 #endif /* GLX_GLXEXT_PROTOTYPES */ 00470 typedef X11_Display * (* PFNGLXGETCURRENTDISPLAYEXTPROC) (); 00471 typedef int (* PFNGLXQUERYCONTEXTINFOEXTPROC) (X11_Display *dpy, GLXContext context, int attribute, int *value); 00472 typedef GLXContextID (* PFNGLXGETCONTEXTIDEXTPROC) (const GLXContext context); 00473 typedef GLXContext (* PFNGLXIMPORTCONTEXTEXTPROC) (X11_Display *dpy, GLXContextID contextID); 00474 typedef void (* PFNGLXFREECONTEXTEXTPROC) (X11_Display *dpy, GLXContext context); 00475 #endif 00476 00477 #ifndef GLX_SGIX_fbconfig 00478 #define GLX_SGIX_fbconfig 1 00479 #ifdef GLX_GLXEXT_PROTOTYPES 00480 extern int glXGetFBConfigAttribSGIX (X11_Display *, GLXFBConfigSGIX, int, int *); 00481 extern GLXFBConfigSGIX * glXChooseFBConfigSGIX (X11_Display *, int, int *, int *); 00482 extern GLXPixmap glXCreateGLXPixmapWithConfigSGIX (X11_Display *, GLXFBConfigSGIX, Pixmap); 00483 extern GLXContext glXCreateContextWithConfigSGIX (X11_Display *, GLXFBConfigSGIX, int, GLXContext, Bool); 00484 extern XVisualInfo * glXGetVisualFromFBConfigSGIX (X11_Display *, GLXFBConfigSGIX); 00485 extern GLXFBConfigSGIX glXGetFBConfigFromVisualSGIX (X11_Display *, XVisualInfo *); 00486 #endif /* GLX_GLXEXT_PROTOTYPES */ 00487 typedef int (* PFNGLXGETFBCONFIGATTRIBSGIXPROC) (X11_Display *dpy, GLXFBConfigSGIX config, int attribute, int *value); 00488 typedef GLXFBConfigSGIX * (* PFNGLXCHOOSEFBCONFIGSGIXPROC) (X11_Display *dpy, int screen, int *attrib_list, int *nelements); 00489 typedef GLXPixmap (* PFNGLXCREATEGLXPIXMAPWITHCONFIGSGIXPROC) (X11_Display *dpy, GLXFBConfigSGIX config, Pixmap pixmap); 00490 typedef GLXContext (* PFNGLXCREATECONTEXTWITHCONFIGSGIXPROC) (X11_Display *dpy, GLXFBConfigSGIX config, int render_type, GLXContext share_list, Bool direct); 00491 typedef XVisualInfo * (* PFNGLXGETVISUALFROMFBCONFIGSGIXPROC) (X11_Display *dpy, GLXFBConfigSGIX config); 00492 typedef GLXFBConfigSGIX (* PFNGLXGETFBCONFIGFROMVISUALSGIXPROC) (X11_Display *dpy, XVisualInfo *vis); 00493 #endif 00494 00495 #ifndef GLX_SGIX_pbuffer 00496 #define GLX_SGIX_pbuffer 1 00497 #ifdef GLX_GLXEXT_PROTOTYPES 00498 extern GLXPbufferSGIX glXCreateGLXPbufferSGIX (X11_Display *, GLXFBConfigSGIX, unsigned int, unsigned int, int *); 00499 extern void glXDestroyGLXPbufferSGIX (X11_Display *, GLXPbufferSGIX); 00500 extern int glXQueryGLXPbufferSGIX (X11_Display *, GLXPbufferSGIX, int, unsigned int *); 00501 extern void glXSelectEventSGIX (X11_Display *, GLXDrawable, unsigned long); 00502 extern void glXGetSelectedEventSGIX (X11_Display *, GLXDrawable, unsigned long *); 00503 #endif /* GLX_GLXEXT_PROTOTYPES */ 00504 typedef GLXPbufferSGIX (* PFNGLXCREATEGLXPBUFFERSGIXPROC) (X11_Display *dpy, GLXFBConfigSGIX config, unsigned int width, unsigned int height, int *attrib_list); 00505 typedef void (* PFNGLXDESTROYGLXPBUFFERSGIXPROC) (X11_Display *dpy, GLXPbufferSGIX pbuf); 00506 typedef int (* PFNGLXQUERYGLXPBUFFERSGIXPROC) (X11_Display *dpy, GLXPbufferSGIX pbuf, int attribute, unsigned int *value); 00507 typedef void (* PFNGLXSELECTEVENTSGIXPROC) (X11_Display *dpy, GLXDrawable drawable, unsigned long mask); 00508 typedef void (* PFNGLXGETSELECTEDEVENTSGIXPROC) (X11_Display *dpy, GLXDrawable drawable, unsigned long *mask); 00509 #endif 00510 00511 #ifndef GLX_SGI_cushion 00512 #define GLX_SGI_cushion 1 00513 #ifdef GLX_GLXEXT_PROTOTYPES 00514 extern void glXCushionSGI (X11_Display *, X11_Window, float); 00515 #endif /* GLX_GLXEXT_PROTOTYPES */ 00516 typedef void (* PFNGLXCUSHIONSGIPROC) (X11_Display *dpy, X11_Window window, float cushion); 00517 #endif 00518 00519 #ifndef GLX_SGIX_video_resize 00520 #define GLX_SGIX_video_resize 1 00521 #ifdef GLX_GLXEXT_PROTOTYPES 00522 extern int glXBindChannelToWindowSGIX (X11_Display *, int, int, X11_Window); 00523 extern int glXChannelRectSGIX (X11_Display *, int, int, int, int, int, int); 00524 extern int glXQueryChannelRectSGIX (X11_Display *, int, int, int *, int *, int *, int *); 00525 extern int glXQueryChannelDeltasSGIX (X11_Display *, int, int, int *, int *, int *, int *); 00526 extern int glXChannelRectSyncSGIX (X11_Display *, int, int, GLenum); 00527 #endif /* GLX_GLXEXT_PROTOTYPES */ 00528 typedef int (* PFNGLXBINDCHANNELTOWINDOWSGIXPROC) (X11_Display *display, int screen, int channel, X11_Window window); 00529 typedef int (* PFNGLXCHANNELRECTSGIXPROC) (X11_Display *display, int screen, int channel, int x, int y, int w, int h); 00530 typedef int (* PFNGLXQUERYCHANNELRECTSGIXPROC) (X11_Display *display, int screen, int channel, int *dx, int *dy, int *dw, int *dh); 00531 typedef int (* PFNGLXQUERYCHANNELDELTASSGIXPROC) (X11_Display *display, int screen, int channel, int *x, int *y, int *w, int *h); 00532 typedef int (* PFNGLXCHANNELRECTSYNCSGIXPROC) (X11_Display *display, int screen, int channel, GLenum synctype); 00533 #endif 00534 00535 #ifndef GLX_SGIX_dmbuffer 00536 #define GLX_SGIX_dmbuffer 1 00537 #ifdef _DM_BUFFER_H_ 00538 #ifdef GLX_GLXEXT_PROTOTYPES 00539 extern Bool glXAssociateDMPbufferSGIX (X11_Display *, GLXPbufferSGIX, DMparams *, DMbuffer); 00540 #endif /* GLX_GLXEXT_PROTOTYPES */ 00541 typedef Bool (* PFNGLXASSOCIATEDMPBUFFERSGIXPROC) (X11_Display *dpy, GLXPbufferSGIX pbuffer, DMparams *params, DMbuffer dmbuffer); 00542 #endif 00543 00544 #endif /* _DM_BUFFER_H_ */ 00545 #ifndef GLX_SGIX_swap_group 00546 #define GLX_SGIX_swap_group 1 00547 #ifdef GLX_GLXEXT_PROTOTYPES 00548 extern void glXJoinSwapGroupSGIX (X11_Display *, GLXDrawable, GLXDrawable); 00549 #endif /* GLX_GLXEXT_PROTOTYPES */ 00550 typedef void (* PFNGLXJOINSWAPGROUPSGIXPROC) (X11_Display *dpy, GLXDrawable drawable, GLXDrawable member); 00551 #endif 00552 00553 #ifndef GLX_SGIX_swap_barrier 00554 #define GLX_SGIX_swap_barrier 1 00555 #ifdef GLX_GLXEXT_PROTOTYPES 00556 extern void glXBindSwapBarrierSGIX (X11_Display *, GLXDrawable, int); 00557 extern Bool glXQueryMaxSwapBarriersSGIX (X11_Display *, int, int *); 00558 #endif /* GLX_GLXEXT_PROTOTYPES */ 00559 typedef void (* PFNGLXBINDSWAPBARRIERSGIXPROC) (X11_Display *dpy, GLXDrawable drawable, int barrier); 00560 typedef Bool (* PFNGLXQUERYMAXSWAPBARRIERSSGIXPROC) (X11_Display *dpy, int screen, int *max); 00561 #endif 00562 00563 #ifndef GLX_SUN_get_transparent_index 00564 #define GLX_SUN_get_transparent_index 1 00565 #ifdef GLX_GLXEXT_PROTOTYPES 00566 extern Status glXGetTransparentIndexSUN (X11_Display *, X11_Window, X11_Window, long *); 00567 #endif /* GLX_GLXEXT_PROTOTYPES */ 00568 typedef Status (* PFNGLXGETTRANSPARENTINDEXSUNPROC) (X11_Display *dpy, X11_Window overlay, X11_Window underlay, long *pTransparentIndex); 00569 #endif 00570 00571 #ifndef GLX_MESA_copy_sub_buffer 00572 #define GLX_MESA_copy_sub_buffer 1 00573 #ifdef GLX_GLXEXT_PROTOTYPES 00574 extern void glXCopySubBufferMESA (X11_Display *, GLXDrawable, int, int, int, int); 00575 #endif /* GLX_GLXEXT_PROTOTYPES */ 00576 typedef void (* PFNGLXCOPYSUBBUFFERMESAPROC) (X11_Display *dpy, GLXDrawable drawable, int x, int y, int width, int height); 00577 #endif 00578 00579 #ifndef GLX_MESA_pixmap_colormap 00580 #define GLX_MESA_pixmap_colormap 1 00581 #ifdef GLX_GLXEXT_PROTOTYPES 00582 extern GLXPixmap glXCreateGLXPixmapMESA (X11_Display *, XVisualInfo *, Pixmap, Colormap); 00583 #endif /* GLX_GLXEXT_PROTOTYPES */ 00584 typedef GLXPixmap (* PFNGLXCREATEGLXPIXMAPMESAPROC) (X11_Display *dpy, XVisualInfo *visual, Pixmap pixmap, Colormap cmap); 00585 #endif 00586 00587 #ifndef GLX_MESA_release_buffers 00588 #define GLX_MESA_release_buffers 1 00589 #ifdef GLX_GLXEXT_PROTOTYPES 00590 extern Bool glXReleaseBuffersMESA (X11_Display *, GLXDrawable); 00591 #endif /* GLX_GLXEXT_PROTOTYPES */ 00592 typedef Bool (* PFNGLXRELEASEBUFFERSMESAPROC) (X11_Display *dpy, GLXDrawable drawable); 00593 #endif 00594 00595 #ifndef GLX_MESA_set_3dfx_mode 00596 #define GLX_MESA_set_3dfx_mode 1 00597 #ifdef GLX_GLXEXT_PROTOTYPES 00598 extern Bool glXSet3DfxModeMESA (int); 00599 #endif /* GLX_GLXEXT_PROTOTYPES */ 00600 typedef Bool (* PFNGLXSET3DFXMODEMESAPROC) (int mode); 00601 #endif 00602 00603 #ifndef GLX_SGIX_visual_select_group 00604 #define GLX_SGIX_visual_select_group 1 00605 #endif 00606 00607 #ifndef GLX_OML_swap_method 00608 #define GLX_OML_swap_method 1 00609 #endif 00610 00611 #ifndef GLX_OML_sync_control 00612 #define GLX_OML_sync_control 1 00613 #if defined(__STDC_VERSION__) 00614 #if __STDC_VERSION__ >= 199901L 00615 /* Include ISO C99 integer types for OML_sync_control; need a better test */ 00616 #include <inttypes.h> 00617 00618 #ifdef GLX_GLXEXT_PROTOTYPES 00619 extern Bool glXGetSyncValuesOML (X11_Display *, GLXDrawable, int64_t *, int64_t *, int64_t *); 00620 extern Bool glXGetMscRateOML (X11_Display *, GLXDrawable, int32_t *, int32_t *); 00621 extern int64_t glXSwapBuffersMscOML (X11_Display *, GLXDrawable, int64_t, int64_t, int64_t); 00622 extern Bool glXWaitForMscOML (X11_Display *, GLXDrawable, int64_t, int64_t, int64_t, int64_t *, int64_t *, int64_t *); 00623 extern Bool glXWaitForSbcOML (X11_Display *, GLXDrawable, int64_t, int64_t *, int64_t *, int64_t *); 00624 #endif /* GLX_GLXEXT_PROTOTYPES */ 00625 typedef Bool (* PFNGLXGETSYNCVALUESOMLPROC) (X11_Display *dpy, GLXDrawable drawable, int64_t *ust, int64_t *msc, int64_t *sbc); 00626 typedef Bool (* PFNGLXGETMSCRATEOMLPROC) (X11_Display *dpy, GLXDrawable drawable, int32_t *numerator, int32_t *denominator); 00627 typedef int64_t (* PFNGLXSWAPBUFFERSMSCOMLPROC) (X11_Display *dpy, GLXDrawable drawable, int64_t target_msc, int64_t divisor, int64_t remainder); 00628 typedef Bool (* PFNGLXWAITFORMSCOMLPROC) (X11_Display *dpy, GLXDrawable drawable, int64_t target_msc, int64_t divisor, int64_t remainder, int64_t *ust, int64_t *msc, int64_t *sbc); 00629 typedef Bool (* PFNGLXWAITFORSBCOMLPROC) (X11_Display *dpy, GLXDrawable drawable, int64_t target_sbc, int64_t *ust, int64_t *msc, int64_t *sbc); 00630 #endif 00631 00632 #endif /* C99 version test */ 00633 #endif /* STDC test */ 00634 00635 #ifdef __cplusplus 00636 } 00637 #endif 00638 00639 #endif