⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 extgl.cpp

📁 PDE simulator on GPU.
💻 CPP
📖 第 1 页 / 共 5 页
字号:
#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 + -