📄 glxapi.c
字号:
/*** GLX_SGIX_swap_barrier ***/void PUBLICglXBindSwapBarrierSGIX(Display *dpy, GLXDrawable drawable, int barrier){ struct _glxapi_table *t; GET_DISPATCH(dpy, t); if (!t) return; (*t->BindSwapBarrierSGIX)(dpy, drawable, barrier);}Bool PUBLICglXQueryMaxSwapBarriersSGIX(Display *dpy, int screen, int *max){ struct _glxapi_table *t; GET_DISPATCH(dpy, t); if (!t) return False; return (*t->QueryMaxSwapBarriersSGIX)(dpy, screen, max);}/*** GLX_SUN_get_transparent_index ***/Status PUBLICglXGetTransparentIndexSUN(Display *dpy, Window overlay, Window underlay, long *pTransparent){ struct _glxapi_table *t; GET_DISPATCH(dpy, t); if (!t) return False; return (*t->GetTransparentIndexSUN)(dpy, overlay, underlay, pTransparent);}/*** GLX_MESA_copy_sub_buffer ***/void PUBLICglXCopySubBufferMESA(Display *dpy, GLXDrawable drawable, int x, int y, int width, int height){ struct _glxapi_table *t; GET_DISPATCH(dpy, t); if (!t) return; (t->CopySubBufferMESA)(dpy, drawable, x, y, width, height);}/*** GLX_MESA_release_buffers ***/Bool PUBLICglXReleaseBuffersMESA(Display *dpy, Window w){ struct _glxapi_table *t; GET_DISPATCH(dpy, t); if (!t) return False; return (t->ReleaseBuffersMESA)(dpy, w);}/*** GLX_MESA_pixmap_colormap ***/GLXPixmap PUBLICglXCreateGLXPixmapMESA(Display *dpy, XVisualInfo *visinfo, Pixmap pixmap, Colormap cmap){ struct _glxapi_table *t; GET_DISPATCH(dpy, t); if (!t) return 0; return (t->CreateGLXPixmapMESA)(dpy, visinfo, pixmap, cmap);}/*** GLX_MESA_set_3dfx_mode ***/Bool PUBLICglXSet3DfxModeMESA(int mode){ struct _glxapi_table *t; Display *dpy = glXGetCurrentDisplay(); GET_DISPATCH(dpy, t); if (!t) return False; return (t->Set3DfxModeMESA)(mode);}/*** GLX_NV_vertex_array_range ***/void PUBLIC *glXAllocateMemoryNV( GLsizei size, GLfloat readFrequency, GLfloat writeFrequency, GLfloat priority ){ struct _glxapi_table *t; Display *dpy = glXGetCurrentDisplay(); GET_DISPATCH(dpy, t); if (!t) return NULL; return (t->AllocateMemoryNV)(size, readFrequency, writeFrequency, priority);}void PUBLICglXFreeMemoryNV( GLvoid *pointer ){ struct _glxapi_table *t; Display *dpy = glXGetCurrentDisplay(); GET_DISPATCH(dpy, t); if (!t) return; (t->FreeMemoryNV)(pointer);}/*** GLX_MESA_agp_offset */GLuint PUBLICglXGetAGPOffsetMESA( const GLvoid *pointer ){ struct _glxapi_table *t; Display *dpy = glXGetCurrentDisplay(); GET_DISPATCH(dpy, t); if (!t) return ~0; return (t->GetAGPOffsetMESA)(pointer);}/*** GLX_MESA_allocate_memory */void *glXAllocateMemoryMESA(Display *dpy, int scrn, size_t size, float readfreq, float writefreq, float priority){ /* dummy */ return NULL;}voidglXFreeMemoryMESA(Display *dpy, int scrn, void *pointer){ /* dummy */}GLuintglXGetMemoryOffsetMESA(Display *dpy, int scrn, const void *pointer){ /* dummy */ return 0;}/*** GLX_EXT_texture_from_pixmap */voidglXBindTexImageEXT(Display *dpy, GLXDrawable drawable, int buffer, const int *attrib_list){ struct _glxapi_table *t; GET_DISPATCH(dpy, t); if (t) t->BindTexImageEXT(dpy, drawable, buffer, attrib_list);}voidglXReleaseTexImageEXT(Display *dpy, GLXDrawable drawable, int buffer){ struct _glxapi_table *t; GET_DISPATCH(dpy, t); if (t) t->ReleaseTexImageEXT(dpy, drawable, buffer);}/**********************************************************************//* GLX API management functions *//**********************************************************************/const char *_glxapi_get_version(void){ return "1.3";}/* * Return array of extension strings. */const char **_glxapi_get_extensions(void){ static const char *extensions[] = {#ifdef GLX_EXT_import_context "GLX_EXT_import_context",#endif#ifdef GLX_SGI_video_sync "GLX_SGI_video_sync",#endif#ifdef GLX_MESA_copy_sub_buffer "GLX_MESA_copy_sub_buffer",#endif#ifdef GLX_MESA_release_buffers "GLX_MESA_release_buffers",#endif#ifdef GLX_MESA_pixmap_colormap "GLX_MESA_pixmap_colormap",#endif#ifdef GLX_MESA_set_3dfx_mode "GLX_MESA_set_3dfx_mode",#endif#ifdef GLX_SGIX_fbconfig "GLX_SGIX_fbconfig",#endif#ifdef GLX_SGIX_pbuffer "GLX_SGIX_pbuffer",#endif#ifdef GLX_EXT_texture_from_pixmap "GLX_EXT_texture_from_pixmap",#endif NULL }; return extensions;}/* * Return size of the GLX dispatch table, in entries, not bytes. */GLuint_glxapi_get_dispatch_table_size(void){ return sizeof(struct _glxapi_table) / sizeof(void *);}static intgeneric_no_op_func(void){ return 0;}/* * Initialize all functions in given dispatch table to be no-ops */void_glxapi_set_no_op_table(struct _glxapi_table *t){ typedef int (*nop_func)(void); nop_func *dispatch = (nop_func *) t; GLuint n = _glxapi_get_dispatch_table_size(); GLuint i; for (i = 0; i < n; i++) { dispatch[i] = generic_no_op_func; }}struct name_address_pair { const char *Name; __GLXextFuncPtr Address;};static struct name_address_pair GLX_functions[] = { /*** GLX_VERSION_1_0 ***/ { "glXChooseVisual", (__GLXextFuncPtr) glXChooseVisual }, { "glXCopyContext", (__GLXextFuncPtr) glXCopyContext }, { "glXCreateContext", (__GLXextFuncPtr) glXCreateContext }, { "glXCreateGLXPixmap", (__GLXextFuncPtr) glXCreateGLXPixmap }, { "glXDestroyContext", (__GLXextFuncPtr) glXDestroyContext }, { "glXDestroyGLXPixmap", (__GLXextFuncPtr) glXDestroyGLXPixmap }, { "glXGetConfig", (__GLXextFuncPtr) glXGetConfig }, { "glXGetCurrentContext", (__GLXextFuncPtr) glXGetCurrentContext }, { "glXGetCurrentDrawable", (__GLXextFuncPtr) glXGetCurrentDrawable }, { "glXIsDirect", (__GLXextFuncPtr) glXIsDirect }, { "glXMakeCurrent", (__GLXextFuncPtr) glXMakeCurrent }, { "glXQueryExtension", (__GLXextFuncPtr) glXQueryExtension }, { "glXQueryVersion", (__GLXextFuncPtr) glXQueryVersion }, { "glXSwapBuffers", (__GLXextFuncPtr) glXSwapBuffers }, { "glXUseXFont", (__GLXextFuncPtr) glXUseXFont }, { "glXWaitGL", (__GLXextFuncPtr) glXWaitGL }, { "glXWaitX", (__GLXextFuncPtr) glXWaitX }, /*** GLX_VERSION_1_1 ***/ { "glXGetClientString", (__GLXextFuncPtr) glXGetClientString }, { "glXQueryExtensionsString", (__GLXextFuncPtr) glXQueryExtensionsString }, { "glXQueryServerString", (__GLXextFuncPtr) glXQueryServerString }, /*** GLX_VERSION_1_2 ***/ { "glXGetCurrentDisplay", (__GLXextFuncPtr) glXGetCurrentDisplay }, /*** GLX_VERSION_1_3 ***/ { "glXChooseFBConfig", (__GLXextFuncPtr) glXChooseFBConfig }, { "glXCreateNewContext", (__GLXextFuncPtr) glXCreateNewContext }, { "glXCreatePbuffer", (__GLXextFuncPtr) glXCreatePbuffer }, { "glXCreatePixmap", (__GLXextFuncPtr) glXCreatePixmap }, { "glXCreateWindow", (__GLXextFuncPtr) glXCreateWindow }, { "glXDestroyPbuffer", (__GLXextFuncPtr) glXDestroyPbuffer }, { "glXDestroyPixmap", (__GLXextFuncPtr) glXDestroyPixmap }, { "glXDestroyWindow", (__GLXextFuncPtr) glXDestroyWindow }, { "glXGetCurrentReadDrawable", (__GLXextFuncPtr) glXGetCurrentReadDrawable }, { "glXGetFBConfigAttrib", (__GLXextFuncPtr) glXGetFBConfigAttrib }, { "glXGetFBConfigs", (__GLXextFuncPtr) glXGetFBConfigs }, { "glXGetSelectedEvent", (__GLXextFuncPtr) glXGetSelectedEvent }, { "glXGetVisualFromFBConfig", (__GLXextFuncPtr) glXGetVisualFromFBConfig }, { "glXMakeContextCurrent", (__GLXextFuncPtr) glXMakeContextCurrent }, { "glXQueryContext", (__GLXextFuncPtr) glXQueryContext }, { "glXQueryDrawable", (__GLXextFuncPtr) glXQueryDrawable }, { "glXSelectEvent", (__GLXextFuncPtr) glXSelectEvent }, /*** GLX_VERSION_1_4 ***/ { "glXGetProcAddress", (__GLXextFuncPtr) glXGetProcAddress }, /*** GLX_SGI_swap_control ***/ { "glXSwapIntervalSGI", (__GLXextFuncPtr) glXSwapIntervalSGI }, /*** GLX_SGI_video_sync ***/ { "glXGetVideoSyncSGI", (__GLXextFuncPtr) glXGetVideoSyncSGI }, { "glXWaitVideoSyncSGI", (__GLXextFuncPtr) glXWaitVideoSyncSGI }, /*** GLX_SGI_make_current_read ***/ { "glXMakeCurrentReadSGI", (__GLXextFuncPtr) glXMakeCurrentReadSGI }, { "glXGetCurrentReadDrawableSGI", (__GLXextFuncPtr) glXGetCurrentReadDrawableSGI }, /*** GLX_SGIX_video_source ***/#if defined(_VL_H) { "glXCreateGLXVideoSourceSGIX", (__GLXextFuncPtr) glXCreateGLXVideoSourceSGIX }, { "glXDestroyGLXVideoSourceSGIX", (__GLXextFuncPtr) glXDestroyGLXVideoSourceSGIX },#endif /*** GLX_EXT_import_context ***/ { "glXFreeContextEXT", (__GLXextFuncPtr) glXFreeContextEXT }, { "glXGetContextIDEXT", (__GLXextFuncPtr) glXGetContextIDEXT }, { "glXGetCurrentDisplayEXT", (__GLXextFuncPtr) glXGetCurrentDisplayEXT }, { "glXImportContextEXT", (__GLXextFuncPtr) glXImportContextEXT }, { "glXQueryContextInfoEXT", (__GLXextFuncPtr) glXQueryContextInfoEXT }, /*** GLX_SGIX_fbconfig ***/ { "glXGetFBConfigAttribSGIX", (__GLXextFuncPtr) glXGetFBConfigAttribSGIX }, { "glXChooseFBConfigSGIX", (__GLXextFuncPtr) glXChooseFBConfigSGIX }, { "glXCreateGLXPixmapWithConfigSGIX", (__GLXextFuncPtr) glXCreateGLXPixmapWithConfigSGIX }, { "glXCreateContextWithConfigSGIX", (__GLXextFuncPtr) glXCreateContextWithConfigSGIX }, { "glXGetVisualFromFBConfigSGIX", (__GLXextFuncPtr) glXGetVisualFromFBConfigSGIX }, { "glXGetFBConfigFromVisualSGIX", (__GLXextFuncPtr) glXGetFBConfigFromVisualSGIX }, /*** GLX_SGIX_pbuffer ***/ { "glXCreateGLXPbufferSGIX", (__GLXextFuncPtr) glXCreateGLXPbufferSGIX }, { "glXDestroyGLXPbufferSGIX", (__GLXextFuncPtr) glXDestroyGLXPbufferSGIX }, { "glXQueryGLXPbufferSGIX", (__GLXextFuncPtr) glXQueryGLXPbufferSGIX }, { "glXSelectEventSGIX", (__GLXextFuncPtr) glXSelectEventSGIX }, { "glXGetSelectedEventSGIX", (__GLXextFuncPtr) glXGetSelectedEventSGIX }, /*** GLX_SGI_cushion ***/ { "glXCushionSGI", (__GLXextFuncPtr) glXCushionSGI }, /*** GLX_SGIX_video_resize ***/ { "glXBindChannelToWindowSGIX", (__GLXextFuncPtr) glXBindChannelToWindowSGIX }, { "glXChannelRectSGIX", (__GLXextFuncPtr) glXChannelRectSGIX }, { "glXQueryChannelRectSGIX", (__GLXextFuncPtr) glXQueryChannelRectSGIX }, { "glXQueryChannelDeltasSGIX", (__GLXextFuncPtr) glXQueryChannelDeltasSGIX }, { "glXChannelRectSyncSGIX", (__GLXextFuncPtr) glXChannelRectSyncSGIX }, /*** GLX_SGIX_dmbuffer **/#if defined(_DM_BUFFER_H_) { "glXAssociateDMPbufferSGIX", (__GLXextFuncPtr) glXAssociateDMPbufferSGIX },#endif /*** GLX_SGIX_swap_group ***/ { "glXJoinSwapGroupSGIX", (__GLXextFuncPtr) glXJoinSwapGroupSGIX }, /*** GLX_SGIX_swap_barrier ***/ { "glXBindSwapBarrierSGIX", (__GLXextFuncPtr) glXBindSwapBarrierSGIX }, { "glXQueryMaxSwapBarriersSGIX", (__GLXextFuncPtr) glXQueryMaxSwapBarriersSGIX }, /*** GLX_SUN_get_transparent_index ***/ { "glXGetTransparentIndexSUN", (__GLXextFuncPtr) glXGetTransparentIndexSUN }, /*** GLX_MESA_copy_sub_buffer ***/ { "glXCopySubBufferMESA", (__GLXextFuncPtr) glXCopySubBufferMESA }, /*** GLX_MESA_pixmap_colormap ***/ { "glXCreateGLXPixmapMESA", (__GLXextFuncPtr) glXCreateGLXPixmapMESA }, /*** GLX_MESA_release_buffers ***/ { "glXReleaseBuffersMESA", (__GLXextFuncPtr) glXReleaseBuffersMESA }, /*** GLX_MESA_set_3dfx_mode ***/ { "glXSet3DfxModeMESA", (__GLXextFuncPtr) glXSet3DfxModeMESA }, /*** GLX_ARB_get_proc_address ***/ { "glXGetProcAddressARB", (__GLXextFuncPtr) glXGetProcAddressARB }, /*** GLX_NV_vertex_array_range ***/ { "glXAllocateMemoryNV", (__GLXextFuncPtr) glXAllocateMemoryNV }, { "glXFreeMemoryNV", (__GLXextFuncPtr) glXFreeMemoryNV }, /*** GLX_MESA_agp_offset ***/ { "glXGetAGPOffsetMESA", (__GLXextFuncPtr) glXGetAGPOffsetMESA }, /*** GLX_MESA_allocate_memory ***/ { "glXAllocateMemoryMESA", (__GLXextFuncPtr) glXAllocateMemoryMESA }, { "glXFreeMemoryMESA", (__GLXextFuncPtr) glXFreeMemoryMESA }, { "glXGetMemoryOffsetMESA", (__GLXextFuncPtr) glXGetMemoryOffsetMESA }, /*** GLX_EXT_texture_from_pixmap ***/ { "glXBindTexImageEXT", (__GLXextFuncPtr) glXBindTexImageEXT }, { "glXReleaseTexImageEXT", (__GLXextFuncPtr) glXReleaseTexImageEXT }, { NULL, NULL } /* end of list */};/* * Return address of named glX function, or NULL if not found. */__GLXextFuncPtr_glxapi_get_proc_address(const char *funcName){ GLuint i; for (i = 0; GLX_functions[i].Name; i++) { if (strcmp(GLX_functions[i].Name, funcName) == 0) return GLX_functions[i].Address; } return NULL;}/* * This function does not get dispatched through the dispatch table * since it's really a "meta" function. */__GLXextFuncPtrglXGetProcAddressARB(const GLubyte *procName){ __GLXextFuncPtr f; f = _glxapi_get_proc_address((const char *) procName); if (f) { return f; } f = (__GLXextFuncPtr) _glapi_get_proc_address((const char *) procName); return f;}/* GLX 1.4 */void (*glXGetProcAddress(const GLubyte *procName))(){ return glXGetProcAddressARB(procName);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -