📄 extgl.cpp
字号:
#ifdef GL_NV_primitive_restart
glPrimitiveRestartNVPROC glPrimitiveRestartNV = NULL;
glPrimitiveRestartIndexNVPROC glPrimitiveRestartIndexNV = NULL;#endif /* GL_NV_primitive_restart */#ifdef GL_ATI_draw_buffersglDrawBuffersATIPROC glDrawBuffersATI = NULL;
#endif /* GL_ATI_draw_buffers */#ifdef GL_NV_half_floatglVertex2hNVPROC glVertex2hNV = NULL;
glVertex2hvNVPROC glVertex2hvNV = NULL;
glVertex3hNVPROC glVertex3hNV = NULL;
glVertex3hvNVPROC glVertex3hvNV = NULL;
glVertex4hNVPROC glVertex4hNV = NULL;
glVertex4hvNVPROC glVertex4hvNV = NULL;
glNormal3hNVPROC glNormal3hNV = NULL;
glNormal3hvNVPROC glNormal3hvNV = NULL;
glColor3hNVPROC glColor3hNV = NULL;
glColor3hvNVPROC glColor3hvNV = NULL;
glColor4hNVPROC glColor4hNV = NULL;
glColor4hvNVPROC glColor4hvNV = NULL;
glTexCoord1hNVPROC glTexCoord1hNV = NULL;
glTexCoord1hvNVPROC glTexCoord1hvNV = NULL;
glTexCoord2hNVPROC glTexCoord2hNV = NULL;
glTexCoord2hvNVPROC glTexCoord2hvNV = NULL;
glTexCoord3hNVPROC glTexCoord3hNV = NULL;
glTexCoord3hvNVPROC glTexCoord3hvNV = NULL;
glTexCoord4hNVPROC glTexCoord4hNV = NULL;
glTexCoord4hvNVPROC glTexCoord4hvNV = NULL;
glMultiTexCoord1hNVPROC glMultiTexCoord1hNV = NULL;
glMultiTexCoord1hvNVPROC glMultiTexCoord1hvNV = NULL;
glMultiTexCoord2hNVPROC glMultiTexCoord2hNV = NULL;
glMultiTexCoord2hvNVPROC glMultiTexCoord2hvNV = NULL;
glMultiTexCoord3hNVPROC glMultiTexCoord3hNV = NULL;
glMultiTexCoord3hvNVPROC glMultiTexCoord3hvNV = NULL;
glMultiTexCoord4hNVPROC glMultiTexCoord4hNV = NULL;
glMultiTexCoord4hvNVPROC glMultiTexCoord4hvNV = NULL;
glFogCoordhNVPROC glFogCoordhNV = NULL;
glFogCoordhvNVPROC glFogCoordhvNV = NULL;
glSecondaryColor3hNVPROC glSecondaryColor3hNV = NULL;
glSecondaryColor3hvNVPROC glSecondaryColor3hvNV = NULL;
glVertexWeighthNVPROC glVertexWeighthNV = NULL;
glVertexWeighthvNVPROC glVertexWeighthvNV = NULL;
glVertexAttrib1hNVPROC glVertexAttrib1hNV = NULL;
glVertexAttrib1hvNVPROC glVertexAttrib1hvNV = NULL;
glVertexAttrib2hNVPROC glVertexAttrib2hNV = NULL;
glVertexAttrib2hvNVPROC glVertexAttrib2hvNV = NULL;
glVertexAttrib3hNVPROC glVertexAttrib3hNV = NULL;
glVertexAttrib3hvNVPROC glVertexAttrib3hvNV = NULL;
glVertexAttrib4hNVPROC glVertexAttrib4hNV = NULL;
glVertexAttrib4hvNVPROC glVertexAttrib4hvNV = NULL;
glVertexAttribs1hvNVPROC glVertexAttribs1hvNV = NULL;
glVertexAttribs2hvNVPROC glVertexAttribs2hvNV = NULL;
glVertexAttribs3hvNVPROC glVertexAttribs3hvNV = NULL;
glVertexAttribs4hvNVPROC glVertexAttribs4hvNV = NULL;
#endif /* GL_NV_half_float */#ifdef GL_NV_pixel_data_range
glPixelDataRangeNVPROC glPixelDataRangeNV = NULL;
glFlushPixelDataRangeNVPROC glFlushPixelDataRangeNV = NULL;
#endif /* GL_NV_pixel_data_range */
#ifdef GL_ATI_map_object_buffer
glMapObjectBufferATIPROC glMapObjectBufferATI = NULL;
glUnmapObjectBufferATIPROC glUnmapObjectBufferATI = NULL;
#endif /* GL_ATI_map_object_buffer */ #ifdef GL_ATI_separate_stencil
glStencilOpSeparateATIPROC glStencilOpSeparateATI = NULL;
glStencilFuncSeparateATIPROC glStencilFuncSeparateATI = NULL;
#endif /* GL_ATI_separate_stencil */
#ifdef GL_ATI_vertex_attrib_array_object
glVertexAttribArrayObjectATIPROC glVertexAttribArrayObjectATI = NULL;
glGetVertexAttribArrayObjectfvATIPROC glGetVertexAttribArrayObjectfvATI = NULL;
glGetVertexAttribArrayObjectivATIPROC glGetVertexAttribArrayObjectivATI = NULL;
#endif /* GL_ATI_vertex_attrib_array_object */
#ifdef GL_EXT_blend_color
glBlendColorEXTPROC glBlendColorEXT = NULL;
#endif /* GL_EXT_blend_color */
#ifdef GL_EXT_blend_minmax
glBlendEquationEXTPROC glBlendEquationEXT = NULL;
#endif /* GL_EXT_blend_minmax */
#ifdef GL_ARB_vertex_buffer_object
glBindBufferARBPROC glBindBufferARB = NULL;
glDeleteBuffersARBPROC glDeleteBuffersARB = NULL;
glGenBuffersARBPROC glGenBuffersARB = NULL;
glIsBufferARBPROC glIsBufferARB = NULL;
glBufferDataARBPROC glBufferDataARB = NULL;
glBufferSubDataARBPROC glBufferSubDataARB = NULL;
glGetBufferSubDataARBPROC glGetBufferSubDataARB = NULL;
glMapBufferARBPROC glMapBufferARB = NULL;
glUnmapBufferARBPROC glUnmapBufferARB = NULL;
glGetBufferParameterivARBPROC glGetBufferParameterivARB = NULL;
glGetBufferPointervARBPROC glGetBufferPointervARB = NULL;
#endif /* GL_ARB_vertex_buffer_object */
#ifdef GL_EXT_depth_bounds_testglDepthBoundsEXTPROC glDepthBoundsEXT = NULL;#endif /* GL_EXT_depth_bounds_test *//* other definitions */static int extgl_error = 0;struct ExtensionTypes extgl_Extensions;struct ExtensionTypes SupportedExtensions; /* deprecated, please do not use *//* getProcAddress */void *extgl_GetProcAddress(char *name){#if defined(_WIN32) || defined(__CYGWIN__) || defined(__MINGW32__) void *t = (void*)wglGetProcAddress(name); if (t == NULL) { extgl_error = 1; } return t;#else void *t = (void*)glXGetProcAddressARB((char*)name); if (t == NULL) { extgl_error = 1; } return t;#endif}/*-----------------------------------------------------*//* WGL stuff *//*-----------------------------------------------------*/#if defined(_WIN32) || defined(__CYGWIN__) || defined(__MINGW32__)/** returns true if the extention is available */int QueryWGLExtension(const char *name){ const GLubyte *extensions; const GLubyte *start; GLubyte *where, *terminator; /* Extension names should not have spaces. */ where = (GLubyte *) strchr(name, ' '); if (where || *name == '\0') return 0; if (wglGetExtensionsStringARB == NULL) if (wglGetExtensionsStringEXT == NULL) return 0; else extensions = (GLubyte*)wglGetExtensionsStringEXT(); else extensions = (GLubyte*)wglGetExtensionsStringARB(wglGetCurrentDC()); /* It takes a bit of care to be fool-proof about parsing the OpenGL extensions string. Don't be fooled by sub-strings, etc. */ start = extensions; for (;;) { where = (GLubyte *) strstr((const char *) start, name); if (!where) break; terminator = where + strlen(name); if (where == start || *(where - 1) == ' ') if (*terminator == ' ' || *terminator == '\0') return 1; start = terminator; } return 0;}void extgl_InitWGLARBBufferRegion(){#ifdef WGL_ARB_buffer_region if (!extgl_Extensions.wgl.ARB_buffer_region) return; wglCreateBufferRegionARB = (wglCreateBufferRegionARBPROC) extgl_GetProcAddress("wglCreateBufferRegionARB"); wglDeleteBufferRegionARB = (wglDeleteBufferRegionARBPROC) extgl_GetProcAddress("wglDeleteBufferRegionARB"); wglSaveBufferRegionARB = (wglSaveBufferRegionARBPROC) extgl_GetProcAddress("wglSaveBufferRegionARB"); wglRestoreBufferRegionARB = (wglRestoreBufferRegionARBPROC) extgl_GetProcAddress("wglRestoreBufferRegionARB");#endif}void extgl_InitWGLARBPbuffer(){#ifdef WGL_ARB_pbuffer if (!extgl_Extensions.wgl.ARB_pbuffer) return; wglCreatePbufferARB = (wglCreatePbufferARBPROC) extgl_GetProcAddress("wglCreatePbufferARB"); wglGetPbufferDCARB = (wglGetPbufferDCARBPROC) extgl_GetProcAddress("wglGetPbufferDCARB"); wglReleasePbufferDCARB = (wglReleasePbufferDCARBPROC) extgl_GetProcAddress("wglReleasePbufferDCARB"); wglDestroyPbufferARB = (wglDestroyPbufferARBPROC) extgl_GetProcAddress("wglDestroyPbufferARB"); wglQueryPbufferARB = (wglQueryPbufferARBPROC) extgl_GetProcAddress("wglQueryPbufferARB");#endif}void extgl_InitWGLARBPixelFormat(){#ifdef WGL_ARB_pixel_format if (!extgl_Extensions.wgl.ARB_pixel_format) return; wglGetPixelFormatAttribivARB = (wglGetPixelFormatAttribivARBPROC) extgl_GetProcAddress("wglGetPixelFormatAttribivARB"); wglGetPixelFormatAttribfvARB = (wglGetPixelFormatAttribfvARBPROC) extgl_GetProcAddress("wglGetPixelFormatAttribfvARB"); wglChoosePixelFormatARB = (wglChoosePixelFormatARBPROC) extgl_GetProcAddress("wglChoosePixelFormatARB");#endif}void extgl_InitWGLARBRenderTexture(){#ifdef WGL_ARB_render_texture if (!extgl_Extensions.wgl.ARB_render_texture) return; wglBindTexImageARB = (wglBindTexImageARBPROC) extgl_GetProcAddress("wglBindTexImageARB"); wglReleaseTexImageARB = (wglReleaseTexImageARBPROC) extgl_GetProcAddress("wglReleaseTexImageARB"); wglSetPbufferAttribARB = (wglSetPbufferAttribARBPROC) extgl_GetProcAddress("wglSetPbufferAttribARB");#endif}void extgl_InitWGLEXTSwapControl(){#ifdef WGL_EXT_swap_control if (!extgl_Extensions.wgl.EXT_swap_control) return; wglSwapIntervalEXT = (wglSwapIntervalEXTPROC) extgl_GetProcAddress("wglSwapIntervalEXT"); wglGetSwapIntervalEXT = (wglGetSwapIntervalEXTPROC) extgl_GetProcAddress("wglGetSwapIntervalEXT");#endif}void extgl_InitWGLARBMakeCurrentRead(){#ifdef WGL_ARB_make_current_read if (!extgl_Extensions.wgl.ARB_make_current_read) return; wglMakeContextCurrentARB = (wglMakeContextCurrentARBPROC) extgl_GetProcAddress("wglMakeContextCurrentARB"); wglGetCurrentReadDCARB = (wglGetCurrentReadDCARBPROC) extgl_GetProcAddress("wglGetCurrentReadDCARB");#endif}void extgl_InitSupportedWGLExtensions(){ extgl_Extensions.wgl.ARB_buffer_region = QueryWGLExtension("WGL_ARB_buffer_region"); extgl_Extensions.wgl.ARB_make_current_read = QueryWGLExtension("WGL_ARB_make_current_read"); extgl_Extensions.wgl.ARB_multisample = QueryWGLExtension("WGL_ARB_multisample"); extgl_Extensions.wgl.ARB_pbuffer = QueryWGLExtension("WGL_ARB_pbuffer"); extgl_Extensions.wgl.ARB_pixel_format = QueryWGLExtension("WGL_ARB_pixel_format"); extgl_Extensions.wgl.ARB_render_texture = QueryWGLExtension("WGL_ARB_render_texture"); extgl_Extensions.wgl.ATI_pixel_format_float = QueryWGLExtension("WGL_ATI_pixel_format_float"); extgl_Extensions.wgl.EXT_swap_control = QueryWGLExtension("WGL_EXT_swap_control"); extgl_Extensions.wgl.NV_render_depth_texture = QueryWGLExtension("WGL_NV_render_depth_texture"); extgl_Extensions.wgl.NV_render_texture_rectangle = QueryWGLExtension("WGL_NV_render_texture_rectangle");}int extgl_InitializeWGL(){ extgl_error = 0; wglGetExtensionsStringARB = (wglGetExtensionsStringARBPROC) extgl_GetProcAddress("wglGetExtensionsStringARB"); wglGetExtensionsStringEXT = (wglGetExtensionsStringEXTPROC) extgl_GetProcAddress("wglGetExtensionsStringEXT"); extgl_Extensions.wgl.ARB_extensions_string = wglGetExtensionsStringARB != NULL; extgl_Extensions.wgl.EXT_extensions_string = wglGetExtensionsStringEXT != NULL; extgl_error = 0; extgl_InitSupportedWGLExtensions(); extgl_InitWGLARBMakeCurrentRead(); extgl_InitWGLEXTSwapControl(); extgl_InitWGLARBRenderTexture(); extgl_InitWGLARBPixelFormat(); extgl_InitWGLARBPbuffer(); extgl_InitWGLARBBufferRegion(); return extgl_error;}#endif /* WIN32 *//*-----------------------------------------------------*//* WGL stuff END*//*-----------------------------------------------------*/char extgl_ExtString[5000] = "";/** returns true if the extention is available */int QueryExtension(const char *name){ const GLubyte *extensions; const GLubyte *start; GLubyte *where, *terminator;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -