Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'source/blender/freestyle/intern/rendering/extgl.cpp')
-rwxr-xr-xsource/blender/freestyle/intern/rendering/extgl.cpp2249
1 files changed, 2249 insertions, 0 deletions
diff --git a/source/blender/freestyle/intern/rendering/extgl.cpp b/source/blender/freestyle/intern/rendering/extgl.cpp
new file mode 100755
index 00000000000..d7207f21299
--- /dev/null
+++ b/source/blender/freestyle/intern/rendering/extgl.cpp
@@ -0,0 +1,2249 @@
+/* ----------------------------------------------------------------------------
+Copyright (c) 2001-2002, Lev Povalahev
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+ * The name of the author may be used to endorse or promote products
+ derived from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
+OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+THE POSSIBILITY OF SUCH DAMAGE.
+------------------------------------------------------------------------------*/
+/*
+ Lev Povalahev
+
+ levp@gmx.net
+
+ http://www.uni-karlsruhe.de/~uli2/
+
+*/
+
+#include "extgl.h"
+#include <stdio.h>
+#include <string.h>
+
+#ifndef _WIN32
+#include <GL/glx.h>
+#endif /* _WIN32 */
+
+/* turn off the warning for the borland compiler*/
+#ifdef __BORLANDC__
+#pragma warn -8064
+#pragma warn -8065
+#endif /* __BORLANDC__ */
+
+/* function variables */
+
+/*-------------------------------------*/
+/* WGL stuff */
+/*-------------------------------------*/
+
+#ifdef _WIN32
+
+/* WGL_EXT_etxension_string */
+
+#ifdef WGL_EXT_extensions_string
+wglGetExtensionsStringEXTPROC wglGetExtensionsStringEXT = NULL;
+#endif /* WGL_EXT_extension_string */
+
+/* WGL_ARB_buffer_region */
+
+#ifdef WGL_ARB_buffer_region
+wglCreateBufferRegionARBPROC wglCreateBufferRegionARB = NULL;
+wglDeleteBufferRegionARBPROC wglDeleteBufferRegionARB = NULL;
+wglSaveBufferRegionARBPROC wglSaveBufferRegionARB = NULL;
+wglRestoreBufferRegionARBPROC wglRestoreBufferRegionARB = NULL;
+#endif /* WGL_ARB_buffer_region */
+
+/* WGL_ARB_extension_string */
+
+
+#ifdef WGL_ARB_extensions_string
+wglGetExtensionsStringARBPROC wglGetExtensionsStringARB = NULL;
+#endif /* WGL_ARB_extension_string */
+
+/* WGL_ARB_pbuffer */
+
+#ifdef WGL_ARB_pbuffer
+wglCreatePbufferARBPROC wglCreatePbufferARB = NULL;
+wglGetPbufferDCARBPROC wglGetPbufferDCARB = NULL;
+wglReleasePbufferDCARBPROC wglReleasePbufferDCARB = NULL;
+wglDestroyPbufferARBPROC wglDestroyPbufferARB = NULL;
+wglQueryPbufferARBPROC wglQueryPbufferARB = NULL;
+#endif /* WGL_ARB_pbuffer */
+
+/* WGL_ARB_pixel_format */
+
+#ifdef WGL_ARB_pixel_format
+wglGetPixelFormatAttribivARBPROC wglGetPixelFormatAttribivARB = NULL;
+wglGetPixelFormatAttribfvARBPROC wglGetPixelFormatAttribfvARB = NULL;
+wglChoosePixelFormatARBPROC wglChoosePixelFormatARB = NULL;
+#endif /* WGL_ARB_pixel_format */
+
+/* WGL_ARB_render_texture */
+
+#ifdef WGL_ARB_render_texture
+wglBindTexImageARBPROC wglBindTexImageARB = NULL;
+wglReleaseTexImageARBPROC wglReleaseTexImageARB = NULL;
+wglSetPbufferAttribARBPROC wglSetPbufferAttribARB = NULL;
+#endif /* WGL_ARB_render_texture */
+
+/* WGL_EXT_swap_control */
+
+#ifdef WGL_EXT_swap_control
+wglSwapIntervalEXTPROC wglSwapIntervalEXT = NULL;
+wglGetSwapIntervalEXTPROC wglGetSwapIntervalEXT = NULL;
+#endif /* WGL_EXT_swap_control */
+
+/* WGL_ARB_make_current_read */
+
+#ifdef WGL_ARB_make_current_read
+wglMakeContextCurrentARBPROC wglMakeContextCurrentARB = NULL;
+wglGetCurrentReadDCARBPROC wglGetCurrentReadDCARB = NULL;
+#endif /* WGL_ARB_make_current_read*/
+
+/* VAR */
+
+#endif /* WIN32 */
+
+/*-------------------------------------*/
+/*---WGL STUFF END---------------------*/
+/*-------------------------------------*/
+
+#ifdef _WIN32
+
+#ifdef GL_VERSION_1_2
+glDrawRangeElementsPROC glDrawRangeElements = NULL;
+glTexImage3DPROC glTexImage3D = NULL;
+glTexSubImage3DPROC glTexSubImage3D = NULL;
+glCopyTexSubImage3DPROC glCopyTexSubImage3D = NULL;
+#endif /* GL_VERSION_1_2 */
+
+#ifdef GL_ARB_imaging
+glBlendColorPROC glBlendColor = NULL;
+LIB_RENDERING_EXPORT
+glBlendEquationPROC glBlendEquation = NULL;
+glColorTablePROC glColorTable = NULL;
+glColorTableParameterfvPROC glColorTableParameterfv = NULL;
+glColorTableParameterivPROC glColorTableParameteriv = NULL;
+glCopyColorTablePROC glCopyColorTable = NULL;
+glGetColorTablePROC glGetColorTable = NULL;
+glGetColorTableParameterfvPROC glGetColorTableParameterfv = NULL;
+glGetColorTableParameterivPROC glGetColorTableParameteriv = NULL;
+glColorSubTablePROC glColorSubTable = NULL;
+glCopyColorSubTablePROC glCopyColorSubTable = NULL;
+glConvolutionFilter1DPROC glConvolutionFilter1D = NULL;
+glConvolutionFilter2DPROC glConvolutionFilter2D = NULL;
+glConvolutionParameterfPROC glConvolutionParameterf = NULL;
+glConvolutionParameterfvPROC glConvolutionParameterfv = NULL;
+glConvolutionParameteriPROC glConvolutionParameteri = NULL;
+glConvolutionParameterivPROC glConvolutionParameteriv = NULL;
+glCopyConvolutionFilter1DPROC glCopyConvolutionFilter1D = NULL;
+glCopyConvolutionFilter2DPROC glCopyConvolutionFilter2D = NULL;
+glGetConvolutionFilterPROC glGetConvolutionFilter = NULL;
+glGetConvolutionParameterfvPROC glGetConvolutionParameterfv = NULL;
+glGetConvolutionParameterivPROC glGetConvolutionParameteriv = NULL;
+glGetSeparableFilterPROC glGetSeparableFilter = NULL;
+glSeparableFilter2DPROC glSeparableFilter2D = NULL;
+glGetHistogramPROC glGetHistogram = NULL;
+glGetHistogramParameterfvPROC glGetHistogramParameterfv = NULL;
+glGetHistogramParameterivPROC glGetHistogramParameteriv = NULL;
+glGetMinmaxPROC glGetMinmax = NULL;
+glGetMinmaxParameterfvPROC glGetMinmaxParameterfv = NULL;
+glGetMinmaxParameterivPROC glGetMinmaxParameteriv = NULL;
+glHistogramPROC glHistogram = NULL;
+glMinmaxPROC glMinmax = NULL;
+glResetHistogramPROC glResetHistogram = NULL;
+glResetMinmaxPROC glResetMinmax = NULL;
+#endif /* GL_ARB_imaging */
+
+/* 1.3 */
+
+#ifdef GL_VERSION_1_3
+glActiveTexturePROC glActiveTexture = NULL;
+glClientActiveTexturePROC glClientActiveTexture = NULL;
+glMultiTexCoord1dPROC glMultiTexCoord1d = NULL;
+glMultiTexCoord1dvPROC glMultiTexCoord1dv = NULL;
+glMultiTexCoord1fPROC glMultiTexCoord1f = NULL;
+glMultiTexCoord1fvPROC glMultiTexCoord1fv = NULL;
+glMultiTexCoord1iPROC glMultiTexCoord1i = NULL;
+glMultiTexCoord1ivPROC glMultiTexCoord1iv = NULL;
+glMultiTexCoord1sPROC glMultiTexCoord1s = NULL;
+glMultiTexCoord1svPROC glMultiTexCoord1sv = NULL;
+glMultiTexCoord2dPROC glMultiTexCoord2d = NULL;
+glMultiTexCoord2dvPROC glMultiTexCoord2dv = NULL;
+glMultiTexCoord2fPROC glMultiTexCoord2f = NULL;
+glMultiTexCoord2fvPROC glMultiTexCoord2fv = NULL;
+glMultiTexCoord2iPROC glMultiTexCoord2i = NULL;
+glMultiTexCoord2ivPROC glMultiTexCoord2iv = NULL;
+glMultiTexCoord2sPROC glMultiTexCoord2s = NULL;
+glMultiTexCoord2svPROC glMultiTexCoord2sv = NULL;
+glMultiTexCoord3dPROC glMultiTexCoord3d = NULL;
+glMultiTexCoord3dvPROC glMultiTexCoord3dv = NULL;
+glMultiTexCoord3fPROC glMultiTexCoord3f = NULL;
+glMultiTexCoord3fvPROC glMultiTexCoord3fv = NULL;
+glMultiTexCoord3iPROC glMultiTexCoord3i = NULL;
+glMultiTexCoord3ivPROC glMultiTexCoord3iv = NULL;
+glMultiTexCoord3sPROC glMultiTexCoord3s = NULL;
+glMultiTexCoord3svPROC glMultiTexCoord3sv = NULL;
+glMultiTexCoord4dPROC glMultiTexCoord4d = NULL;
+glMultiTexCoord4dvPROC glMultiTexCoord4dv = NULL;
+glMultiTexCoord4fPROC glMultiTexCoord4f = NULL;
+glMultiTexCoord4fvPROC glMultiTexCoord4fv = NULL;
+glMultiTexCoord4iPROC glMultiTexCoord4i = NULL;
+glMultiTexCoord4ivPROC glMultiTexCoord4iv = NULL;
+glMultiTexCoord4sPROC glMultiTexCoord4s = NULL;
+glMultiTexCoord4svPROC glMultiTexCoord4sv = NULL;
+glLoadTransposeMatrixfPROC glLoadTransposeMatrixf = NULL;
+glLoadTransposeMatrixdPROC glLoadTransposeMatrixd = NULL;
+glMultTransposeMatrixfPROC glMultTransposeMatrixf = NULL;
+glMultTransposeMatrixdPROC glMultTransposeMatrixd = NULL;
+glCompressedTexImage3DPROC glCompressedTexImage3D = NULL;
+glCompressedTexImage2DPROC glCompressedTexImage2D = NULL;
+glCompressedTexImage1DPROC glCompressedTexImage1D = NULL;
+glCompressedTexSubImage3DPROC glCompressedTexSubImage3D = NULL;
+glCompressedTexSubImage2DPROC glCompressedTexSubImage2D = NULL;
+glCompressedTexSubImage1DPROC glCompressedTexSubImage1D = NULL;
+glGetCompressedTexImagePROC glGetCompressedTexImage = NULL;
+glSampleCoveragePROC glSampleCoverage = NULL;
+#endif /* GL_VERSION_1_3 */
+
+/* ARB_multitexture */
+
+#ifdef GL_ARB_multitexture
+glActiveTextureARBPROC glActiveTextureARB = NULL;
+glClientActiveTextureARBPROC glClientActiveTextureARB = NULL;
+glMultiTexCoord1dARBPROC glMultiTexCoord1dARB = NULL;
+glMultiTexCoord1dvARBPROC glMultiTexCoord1dvARB = NULL;
+glMultiTexCoord1fARBPROC glMultiTexCoord1fARB = NULL;
+glMultiTexCoord1fvARBPROC glMultiTexCoord1fvARB = NULL;
+glMultiTexCoord1iARBPROC glMultiTexCoord1iARB = NULL;
+glMultiTexCoord1ivARBPROC glMultiTexCoord1ivARB = NULL;
+glMultiTexCoord1sARBPROC glMultiTexCoord1sARB = NULL;
+glMultiTexCoord1svARBPROC glMultiTexCoord1svARB = NULL;
+glMultiTexCoord2dARBPROC glMultiTexCoord2dARB = NULL;
+glMultiTexCoord2dvARBPROC glMultiTexCoord2dvARB = NULL;
+glMultiTexCoord2fARBPROC glMultiTexCoord2fARB = NULL;
+glMultiTexCoord2fvARBPROC glMultiTexCoord2fvARB = NULL;
+glMultiTexCoord2iARBPROC glMultiTexCoord2iARB = NULL;
+glMultiTexCoord2ivARBPROC glMultiTexCoord2ivARB = NULL;
+glMultiTexCoord2sARBPROC glMultiTexCoord2sARB = NULL;
+glMultiTexCoord2svARBPROC glMultiTexCoord2svARB = NULL;
+glMultiTexCoord3dARBPROC glMultiTexCoord3dARB = NULL;
+glMultiTexCoord3dvARBPROC glMultiTexCoord3dvARB = NULL;
+glMultiTexCoord3fARBPROC glMultiTexCoord3fARB = NULL;
+glMultiTexCoord3fvARBPROC glMultiTexCoord3fvARB = NULL;
+glMultiTexCoord3iARBPROC glMultiTexCoord3iARB = NULL;
+glMultiTexCoord3ivARBPROC glMultiTexCoord3ivARB = NULL;
+glMultiTexCoord3sARBPROC glMultiTexCoord3sARB = NULL;
+glMultiTexCoord3svARBPROC glMultiTexCoord3svARB = NULL;
+glMultiTexCoord4dARBPROC glMultiTexCoord4dARB = NULL;
+glMultiTexCoord4dvARBPROC glMultiTexCoord4dvARB = NULL;
+glMultiTexCoord4fARBPROC glMultiTexCoord4fARB = NULL;
+glMultiTexCoord4fvARBPROC glMultiTexCoord4fvARB = NULL;
+glMultiTexCoord4iARBPROC glMultiTexCoord4iARB = NULL;
+glMultiTexCoord4ivARBPROC glMultiTexCoord4ivARB = NULL;
+glMultiTexCoord4sARBPROC glMultiTexCoord4sARB = NULL;
+glMultiTexCoord4svARBPROC glMultiTexCoord4svARB = NULL;
+#endif /* GL_ARB_multitexture */
+
+#endif /* WIN32 */
+
+/* ARB_transpose_matrix */
+
+#ifdef GL_ARB_transpose_matrix
+glLoadTransposeMatrixfARBPROC glLoadTransposeMatrixfARB = NULL;
+glLoadTransposeMatrixdARBPROC glLoadTransposeMatrixdARB = NULL;
+glMultTransposeMatrixfARBPROC glMultTransposeMatrixfARB = NULL;
+glMultTransposeMatrixdARBPROC glMultTransposeMatrixdARB = NULL;
+#endif /* GL_ARB_transpose_matrix */
+
+/* ARB_texture_compression */
+
+#ifdef GL_ARB_texture_compression
+glCompressedTexImage3DARBPROC glCompressedTexImage3DARB = NULL;
+glCompressedTexImage2DARBPROC glCompressedTexImage2DARB = NULL;
+glCompressedTexImage1DARBPROC glCompressedTexImage1DARB = NULL;
+glCompressedTexSubImage3DARBPROC glCompressedTexSubImage3DARB = NULL;
+glCompressedTexSubImage2DARBPROC glCompressedTexSubImage2DARB = NULL;
+glCompressedTexSubImage1DARBPROC glCompressedTexSubImage1DARB = NULL;
+glGetCompressedTexImageARBPROC glGetCompressedTexImageARB = NULL;
+#endif /* GL_ARB_texture_compression */
+
+/* EXT_secondary_color */
+
+#ifdef GL_EXT_secondary_color
+glSecondaryColor3bEXTPROC glSecondaryColor3bEXT = NULL;
+glSecondaryColor3bvEXTPROC glSecondaryColor3bvEXT = NULL;
+glSecondaryColor3dEXTPROC glSecondaryColor3dEXT = NULL;
+glSecondaryColor3dvEXTPROC glSecondaryColor3dvEXT = NULL;
+glSecondaryColor3fEXTPROC glSecondaryColor3fEXT = NULL;
+glSecondaryColor3fvEXTPROC glSecondaryColor3fvEXT = NULL;
+glSecondaryColor3iEXTPROC glSecondaryColor3iEXT = NULL;
+glSecondaryColor3ivEXTPROC glSecondaryColor3ivEXT = NULL;
+glSecondaryColor3sEXTPROC glSecondaryColor3sEXT = NULL;
+glSecondaryColor3svEXTPROC glSecondaryColor3svEXT = NULL;
+glSecondaryColor3ubEXTPROC glSecondaryColor3ubEXT = NULL;
+glSecondaryColor3ubvEXTPROC glSecondaryColor3ubvEXT = NULL;
+glSecondaryColor3uiEXTPROC glSecondaryColor3uiEXT = NULL;
+glSecondaryColor3uivEXTPROC glSecondaryColor3uivEXT = NULL;
+glSecondaryColor3usEXTPROC glSecondaryColor3usEXT = NULL;
+glSecondaryColor3usvEXTPROC glSecondaryColor3usvEXT = NULL;
+glSecondaryColorPointerEXTPROC glSecondaryColorPointerEXT = NULL;
+#endif /* GL_EXT_secondary_color */
+
+/* EXT_compiled_vertex_array */
+
+#ifdef GL_EXT_compiled_vertex_array
+glLockArraysEXTPROC glLockArraysEXT = NULL;
+glUnlockArraysEXTPROC glUnlockArraysEXT = NULL;
+#endif /* GL_EXT_compiled_vertex_array */
+
+/* EXT_fog_coord */
+
+#ifdef GL_EXT_fog_coord
+glFogCoordfEXTPROC glFogCoordfEXT = NULL;
+glFogCoordfvEXTPROC glFogCoordfvEXT = NULL;
+glFogCoorddEXTPROC glFogCoorddEXT = NULL;
+glFogCoorddvEXTPROC glFogCoorddvEXT = NULL;
+glFogCoordPointerEXTPROC glFogCoordPointerEXT = NULL;
+#endif /* GL_EXT_for_color */
+
+/* NV_vertex_array_range */
+
+#ifdef GL_NV_vertex_array_range
+glFlushVertexArrayRangeNVPROC glFlushVertexArrayRangeNV = NULL;
+glVertexArrayRangeNVPROC glVertexArrayRangeNV = NULL;
+
+#ifdef _WIN32
+wglAllocateMemoryNVPROC wglAllocateMemoryNV = NULL;
+wglFreeMemoryNVPROC wglFreeMemoryNV = NULL;
+#else
+glXAllocateMemoryNVPROC glXAllocateMemoryNV = NULL;
+glXFreeMemoryNVPROC glXFreeMemoryNV = NULL;
+#endif /* WIN32 */
+
+#endif /* GL_NV_vertex_array_range */
+
+/* EXT_point_parameters */
+
+#ifdef GL_EXT_point_parameters
+glPointParameterfEXTPROC glPointParameterfEXT = NULL;
+glPointParameterfvEXTPROC glPointParameterfvEXT = NULL;
+#endif /* GL_EXT_point_parameters */
+
+/* NV_register_combiners */
+
+#ifdef GL_NV_register_combiners
+glCombinerParameterfvNVPROC glCombinerParameterfvNV = NULL;
+glCombinerParameterfNVPROC glCombinerParameterfNV = NULL;
+glCombinerParameterivNVPROC glCombinerParameterivNV = NULL;
+glCombinerParameteriNVPROC glCombinerParameteriNV = NULL;
+glCombinerInputNVPROC glCombinerInputNV = NULL;
+glCombinerOutputNVPROC glCombinerOutputNV = NULL;
+glFinalCombinerInputNVPROC glFinalCombinerInputNV = NULL;
+glGetCombinerInputParameterfvNVPROC glGetCombinerInputParameterfvNV = NULL;
+glGetCombinerInputParameterivNVPROC glGetCombinerInputParameterivNV = NULL;
+glGetCombinerOutputParameterfvNVPROC glGetCombinerOutputParameterfvNV = NULL;
+glGetCombinerOutputParameterivNVPROC glGetCombinerOutputParameterivNV = NULL;
+glGetFinalCombinerInputParameterfvNVPROC glGetFinalCombinerInputParameterfvNV = NULL;
+glGetFinalCombinerInputParameterivNVPROC glGetFinalCombinerInputParameterivNV = NULL;
+#endif /* GL_NV_register_combiners */
+
+/* ARB_multisample */
+
+#ifdef GL_ARB_multisample
+glSampleCoverageARBPROC glSampleCoverageARB = NULL;
+#endif /* GL_ARB_multisample */
+
+/* EXT_vertex_weighting */
+
+#ifdef GL_EXT_vertex_weighting
+glVertexWeightfEXTPROC glVertexWeightfEXT = NULL;
+glVertexWeightfvEXTPROC glVertexWeightfvEXT = NULL;
+glVertexWeightPointerEXTPROC glVertexWeightPointerEXT = NULL;
+#endif /* GL_EXT_vertex_weighting */
+
+/* NV_vertex_program */
+
+#ifdef GL_NV_vertex_program
+glBindProgramNVPROC glBindProgramNV = NULL;
+glDeleteProgramsNVPROC glDeleteProgramsNV = NULL;
+glExecuteProgramNVPROC glExecuteProgramNV = NULL;
+glGenProgramsNVPROC glGenProgramsNV = NULL;
+glAreProgramsResidentNVPROC glAreProgramsResidentNV = NULL;
+glRequestResidentProgramsNVPROC glRequestResidentProgramsNV = NULL;
+glGetProgramParameterfvNVPROC glGetProgramParameterfvNV = NULL;
+glGetProgramParameterdvNVPROC glGetProgramParameterdvNV = NULL;
+glGetProgramivNVPROC glGetProgramivNV = NULL;
+glGetProgramStringNVPROC glGetProgramStringNV = NULL;
+glGetTrackMatrixivNVPROC glGetTrackMatrixivNV = NULL;
+glGetVertexAttribdvNVPROC glGetVertexAttribdvNV = NULL;
+glGetVertexAttribfvNVPROC glGetVertexAttribfvNV = NULL;
+glGetVertexAttribivNVPROC glGetVertexAttribivNV = NULL;
+glGetVertexAttribPointervNVPROC glGetVertexAttribPointervNV = NULL;
+glIsProgramNVPROC glIsProgramNV = NULL;
+glLoadProgramNVPROC glLoadProgramNV = NULL;
+glProgramParameter4fNVPROC glProgramParameter4fNV = NULL;
+glProgramParameter4dNVPROC glProgramParameter4dNV = NULL;
+glProgramParameter4dvNVPROC glProgramParameter4dvNV = NULL;
+glProgramParameter4fvNVPROC glProgramParameter4fvNV = NULL;
+glProgramParameters4dvNVPROC glProgramParameters4dvNV = NULL;
+glProgramParameters4fvNVPROC glProgramParameters4fvNV = NULL;
+glTrackMatrixNVPROC glTrackMatrixNV = NULL;
+glVertexAttribPointerNVPROC glVertexAttribPointerNV = NULL;
+glVertexAttrib1sNVPROC glVertexAttrib1sNV = NULL;
+glVertexAttrib1fNVPROC glVertexAttrib1fNV = NULL;
+glVertexAttrib1dNVPROC glVertexAttrib1dNV = NULL;
+glVertexAttrib2sNVPROC glVertexAttrib2sNV = NULL;
+glVertexAttrib2fNVPROC glVertexAttrib2fNV = NULL;
+glVertexAttrib2dNVPROC glVertexAttrib2dNV = NULL;
+glVertexAttrib3sNVPROC glVertexAttrib3sNV = NULL;
+glVertexAttrib3fNVPROC glVertexAttrib3fNV = NULL;
+glVertexAttrib3dNVPROC glVertexAttrib3dNV = NULL;
+glVertexAttrib4sNVPROC glVertexAttrib4sNV = NULL;
+glVertexAttrib4fNVPROC glVertexAttrib4fNV = NULL;
+glVertexAttrib4dNVPROC glVertexAttrib4dNV = NULL;
+glVertexAttrib4ubNVPROC glVertexAttrib4ubNV = NULL;
+glVertexAttrib1svNVPROC glVertexAttrib1svNV = NULL;
+glVertexAttrib1fvNVPROC glVertexAttrib1fvNV = NULL;
+glVertexAttrib1dvNVPROC glVertexAttrib1dvNV = NULL;
+glVertexAttrib2svNVPROC glVertexAttrib2svNV = NULL;
+glVertexAttrib2fvNVPROC glVertexAttrib2fvNV = NULL;
+glVertexAttrib2dvNVPROC glVertexAttrib2dvNV = NULL;
+glVertexAttrib3svNVPROC glVertexAttrib3svNV = NULL;
+glVertexAttrib3fvNVPROC glVertexAttrib3fvNV = NULL;
+glVertexAttrib3dvNVPROC glVertexAttrib3dvNV = NULL;
+glVertexAttrib4svNVPROC glVertexAttrib4svNV = NULL;
+glVertexAttrib4fvNVPROC glVertexAttrib4fvNV = NULL;
+glVertexAttrib4dvNVPROC glVertexAttrib4dvNV = NULL;
+glVertexAttrib4ubvNVPROC glVertexAttrib4ubvNV = NULL;
+glVertexAttribs1svNVPROC glVertexAttribs1svNV = NULL;
+glVertexAttribs1fvNVPROC glVertexAttribs1fvNV = NULL;
+glVertexAttribs1dvNVPROC glVertexAttribs1dvNV = NULL;
+glVertexAttribs2svNVPROC glVertexAttribs2svNV = NULL;
+glVertexAttribs2fvNVPROC glVertexAttribs2fvNV = NULL;
+glVertexAttribs2dvNVPROC glVertexAttribs2dvNV = NULL;
+glVertexAttribs3svNVPROC glVertexAttribs3svNV = NULL;
+glVertexAttribs3fvNVPROC glVertexAttribs3fvNV = NULL;
+glVertexAttribs3dvNVPROC glVertexAttribs3dvNV = NULL;
+glVertexAttribs4svNVPROC glVertexAttribs4svNV = NULL;
+glVertexAttribs4fvNVPROC glVertexAttribs4fvNV = NULL;
+glVertexAttribs4dvNVPROC glVertexAttribs4dvNV = NULL;
+glVertexAttribs4ubvNVPROC glVertexAttribs4ubvNV = NULL;
+#endif /* GL_NV_vertex_program */
+
+/* NV_fence */
+
+#ifdef GL_NV_fence
+glGenFencesNVPROC glGenFencesNV = NULL;
+glDeleteFencesNVPROC glDeleteFencesNV = NULL;
+glSetFenceNVPROC glSetFenceNV = NULL;
+glTestFenceNVPROC glTestFenceNV = NULL;
+glFinishFenceNVPROC glFinishFenceNV = NULL;
+glIsFenceNVPROC glIsFenceNV = NULL;
+glGetFenceivNVPROC glGetFenceivNV = NULL;
+#endif /* GL_NV_fence */
+
+/* NV_register_combiners2 */
+
+#ifdef GL_NV_register_combiners2
+glCombinerStageParameterfvNVPROC glCombinerStageParameterfvNV = NULL;
+glGetCombinerStageParameterfvNVPROC glGetCombinerStageParameterfvNV = NULL;
+#endif /* GL_NV_register_combiners2 */
+
+/* NV_evaluators */
+
+#ifdef GL_NV_evaluators
+glMapControlPointsNVPROC glMapControlPointsNV = NULL;
+glMapParameterivNVPROC glMapParameterivNV = NULL;
+glMapParameterfvNVPROC glMapParameterfvNV = NULL;
+glGetMapControlPointsNVPROC glGetMapControlPointsNV = NULL;
+glGetMapParameterivNVPROC glGetMapParameterivNV = NULL;
+glGetMapParameterfvNVPROC glGetMapParameterfvNV = NULL;
+glGetMapAttribParameterivNVPROC glGetMapAttribParameterivNV = NULL;
+glGetMapAttribParameterfvNVPROC glGetMapAttribParameterfvNV = NULL;
+glEvalMapsNVPROC glEvalMapsNV = NULL;
+#endif /* GL_NV_evaluators */
+
+/* ATI_pn_triangles */
+
+#ifdef GL_ATI_pn_triangles
+glPNTrianglesiATIPROC glPNTrianglesiATI = NULL;
+glPNTrianglesfATIPROC glPNTrianglesfATI = NULL;
+#endif /* GL_ATI_pn_triangles */
+
+/* ARB_point_parameters */
+
+#ifdef GL_ARB_point_parameters
+glPointParameterfARBPROC glPointParameterfARB = NULL;
+glPointParameterfvARBPROC glPointParameterfvARB = NULL;
+#endif /* GL_ABR_point_parameters */
+
+/* ARB_vertex_blend */
+
+#ifdef GL_ARB_vertex_blend
+glWeightbvARBPROC glWeightbvARB = NULL;
+glWeightsvARBPROC glWeightsvARB = NULL;
+glWeightivARBPROC glWeightivARB = NULL;
+glWeightfvARBPROC glWeightfvARB = NULL;
+glWeightdvARBPROC glWeightdvARB = NULL;
+glWeightubvARBPROC glWeightubvARB = NULL;
+glWeightusvARBPROC glWeightusvARB = NULL;
+glWeightuivARBPROC glWeightuivARB = NULL;
+glWeightPointerARBPROC glWeightPointerARB = NULL;
+glVertexBlendARBPROC glVertexBlendARB = NULL;
+#endif /* GL_ARB_vertex_blend */
+
+/* EXT_multi_draw_arrays */
+
+#ifdef GL_EXT_multi_draw_arrays
+glMultiDrawArraysEXTPROC glMultiDrawArraysEXT = NULL;
+glMultiDrawElementsEXTPROC glMultiDrawElementsEXT = NULL;
+#endif /* GL_EXT_multi_draw_arrays */
+
+/* ARB_matrix_palette */
+
+#ifdef GL_ARB_matrix_palette
+glCurrentPaletteMatrixARBPROC glCurrentPaletteMatrixARB = NULL;
+glMatrixIndexubvARBPROC glMatrixIndexubvARB = NULL;
+glMatrixIndexusvARBPROC glMatrixIndexusvARB = NULL;
+glMatrixIndexuivARBPROC glMatrixIndexuivARB = NULL;
+glMatrixIndexPointerARBPROC glMatrixIndexPointerARB = NULL;
+#endif /* GL_ARB_matrix_palette */
+
+/* EXT_vertex_shader */
+
+#ifdef GL_EXT_vertex_shader
+glBeginVertexShaderEXTPROC glBeginVertexShaderEXT = NULL;
+glEndVertexShaderEXTPROC glEndVertexShaderEXT = NULL;
+glBindVertexShaderEXTPROC glBindVertexShaderEXT = NULL;
+glGenVertexShadersEXTPROC glGenVertexShadersEXT = NULL;
+glDeleteVertexShaderEXTPROC glDeleteVertexShaderEXT = NULL;
+glShaderOp1EXTPROC glShaderOp1EXT = NULL;
+glShaderOp2EXTPROC glShaderOp2EXT = NULL;
+glShaderOp3EXTPROC glShaderOp3EXT = NULL;
+glSwizzleEXTPROC glSwizzleEXT = NULL;
+glWriteMaskEXTPROC glWriteMaskEXT = NULL;
+glInsertComponentEXTPROC glInsertComponentEXT = NULL;
+glExtractComponentEXTPROC glExtractComponentEXT = NULL;
+glGenSymbolsEXTPROC glGenSymbolsEXT = NULL;
+glSetInvariantEXTPROC glSetInvariantEXT = NULL;
+glSetLocalConstantEXTPROC glSetLocalConstantEXT = NULL;
+glVariantbvEXTPROC glVariantbvEXT = NULL;
+glVariantsvEXTPROC glVariantsvEXT = NULL;
+glVariantivEXTPROC glVariantivEXT = NULL;
+glVariantfvEXTPROC glVariantfvEXT = NULL;
+glVariantdvEXTPROC glVariantdvEXT = NULL;
+glVariantubvEXTPROC glVariantubvEXT = NULL;
+glVariantusvEXTPROC glVariantusvEXT = NULL;
+glVariantuivEXTPROC glVariantuivEXT = NULL;
+glVariantPointerEXTPROC glVariantPointerEXT = NULL;
+glEnableVariantClientStateEXTPROC glEnableVariantClientStateEXT = NULL;
+glDisableVariantClientStateEXTPROC glDisableVariantClientStateEXT = NULL;
+glBindLightParameterEXTPROC glBindLightParameterEXT = NULL;
+glBindMaterialParameterEXTPROC glBindMaterialParameterEXT = NULL;
+glBindTexGenParameterEXTPROC glBindTexGenParameterEXT = NULL;
+glBindTextureUnitParameterEXTPROC glBindTextureUnitParameterEXT = NULL;
+glBindParameterEXTPROC glBindParameterEXT = NULL;
+glIsVariantEnabledEXTPROC glIsVariantEnabledEXT = NULL;
+glGetVariantBooleanvEXTPROC glGetVariantBooleanvEXT = NULL;
+glGetVariantIntegervEXTPROC glGetVariantIntegervEXT = NULL;
+glGetVariantFloatvEXTPROC glGetVariantFloatvEXT = NULL;
+glGetVariantPointervEXTPROC glGetVariantPointervEXT = NULL;
+glGetInvariantBooleanvEXTPROC glGetInvariantBooleanvEXT = NULL;
+glGetInvariantIntegervEXTPROC glGetInvariantIntegervEXT = NULL;
+glGetInvariantFloatvEXTPROC glGetInvariantFloatvEXT = NULL;
+glGetLocalConstantBooleanvEXTPROC glGetLocalConstantBooleanvEXT = NULL;
+glGetLocalConstantIntegervEXTPROC glGetLocalConstantIntegervEXT = NULL;
+glGetLocalConstantFloatvEXTPROC glGetLocalConstantFloatvEXT = NULL;
+#endif /* GL_EXT_vertex_shader */
+
+/* ATI_envmap_bumpmap */
+
+#ifdef GL_ATI_envmap_bumpmap
+glTexBumpParameterivATIPROC glTexBumpParameterivATI = NULL;
+glTexBumpParameterfvATIPROC glTexBumpParameterfvATI = NULL;
+glGetTexBumpParameterivATIPROC glGetTexBumpParameterivATI = NULL;
+glGetTexBumpParameterfvATIPROC glGetTexBumpParameterfvATI = NULL;
+#endif /* GL_ATI_envmap_bumpmap */
+
+/* ATI_fragment_shader */
+
+#ifdef GL_ATI_fragment_shader
+glGenFragmentShadersATIPROC glGenFragmentShadersATI = NULL;
+glBindFragmentShaderATIPROC glBindFragmentShaderATI = NULL;
+glDeleteFragmentShaderATIPROC glDeleteFragmentShaderATI = NULL;
+glBeginFragmentShaderATIPROC glBeginFragmentShaderATI = NULL;
+glEndFragmentShaderATIPROC glEndFragmentShaderATI = NULL;
+glPassTexCoordATIPROC glPassTexCoordATI = NULL;
+glSampleMapATIPROC glSampleMapATI = NULL;
+glColorFragmentOp1ATIPROC glColorFragmentOp1ATI = NULL;
+glColorFragmentOp2ATIPROC glColorFragmentOp2ATI = NULL;
+glColorFragmentOp3ATIPROC glColorFragmentOp3ATI = NULL;
+glAlphaFragmentOp1ATIPROC glAlphaFragmentOp1ATI = NULL;
+glAlphaFragmentOp2ATIPROC glAlphaFragmentOp2ATI = NULL;
+glAlphaFragmentOp3ATIPROC glAlphaFragmentOp3ATI = NULL;
+glSetFragmentShaderConstantATIPROC glSetFragmentShaderConstantATI = NULL;
+#endif /* GL_ATI_fragment_shader */
+
+/* ATI_element_array */
+
+#ifdef GL_ATI_element_array
+glElementPointerATIPROC glElementPointerATI = NULL;
+glDrawElementArrayATIPROC glDrawElementArrayATI = NULL;
+glDrawRangeElementArrayATIPROC glDrawRangeElementArrayATI = NULL;
+#endif /* GL_ATI_element_array */
+
+/* ATI_vertex_streams */
+
+#ifdef GL_ATI_vertex_streams
+glClientActiveVertexStreamATIPROC glClientActiveVertexStreamATI = NULL;
+glVertexBlendEnviATIPROC glVertexBlendEnviATI = NULL;
+glVertexBlendEnvfATIPROC glVertexBlendEnvfATI = NULL;
+glVertexStream2sATIPROC glVertexStream2sATI = NULL;
+glVertexStream2svATIPROC glVertexStream2svATI = NULL;
+glVertexStream2iATIPROC glVertexStream2iATI = NULL;
+glVertexStream2ivATIPROC glVertexStream2ivATI = NULL;
+glVertexStream2fATIPROC glVertexStream2fATI = NULL;
+glVertexStream2fvATIPROC glVertexStream2fvATI = NULL;
+glVertexStream2dATIPROC glVertexStream2dATI = NULL;
+glVertexStream2dvATIPROC glVertexStream2dvATI = NULL;
+glVertexStream3sATIPROC glVertexStream3sATI = NULL;
+glVertexStream3svATIPROC glVertexStream3svATI = NULL;
+glVertexStream3iATIPROC glVertexStream3iATI = NULL;
+glVertexStream3ivATIPROC glVertexStream3ivATI = NULL;
+glVertexStream3fATIPROC glVertexStream3fATI = NULL;
+glVertexStream3fvATIPROC glVertexStream3fvATI = NULL;
+glVertexStream3dATIPROC glVertexStream3dATI = NULL;
+glVertexStream3dvATIPROC glVertexStream3dvATI = NULL;
+glVertexStream4sATIPROC glVertexStream4sATI = NULL;
+glVertexStream4svATIPROC glVertexStream4svATI = NULL;
+glVertexStream4iATIPROC glVertexStream4iATI = NULL;
+glVertexStream4ivATIPROC glVertexStream4ivATI = NULL;
+glVertexStream4fATIPROC glVertexStream4fATI = NULL;
+glVertexStream4fvATIPROC glVertexStream4fvATI = NULL;
+glVertexStream4dATIPROC glVertexStream4dATI = NULL;
+glVertexStream4dvATIPROC glVertexStream4dvATI = NULL;
+glNormalStream3bATIPROC glNormalStream3bATI = NULL;
+glNormalStream3bvATIPROC glNormalStream3bvATI = NULL;
+glNormalStream3sATIPROC glNormalStream3sATI = NULL;
+glNormalStream3svATIPROC glNormalStream3svATI = NULL;
+glNormalStream3iATIPROC glNormalStream3iATI = NULL;
+glNormalStream3ivATIPROC glNormalStream3ivATI = NULL;
+glNormalStream3fATIPROC glNormalStream3fATI = NULL;
+glNormalStream3fvATIPROC glNormalStream3fvATI = NULL;
+glNormalStream3dATIPROC glNormalStream3dATI = NULL;
+glNormalStream3dvATIPROC glNormalStream3dvATI = NULL;
+#endif /* GL_ATI_vertex_streams */
+
+/* ATI_vertex_array_object */
+
+#ifdef GL_ATI_vertex_array_object
+glNewObjectBufferATIPROC glNewObjectBufferATI = NULL;
+glIsObjectBufferATIPROC glIsObjectBufferATI = NULL;
+glUpdateObjectBufferATIPROC glUpdateObjectBufferATI = NULL;
+glGetObjectBufferfvATIPROC glGetObjectBufferfvATI = NULL;
+glGetObjectBufferivATIPROC glGetObjectBufferivATI = NULL;
+glFreeObjectBufferATIPROC glFreeObjectBufferATI = NULL;
+glArrayObjectATIPROC glArrayObjectATI = NULL;
+glGetArrayObjectfvATIPROC glGetArrayObjectfvATI = NULL;
+glGetArrayObjectivATIPROC glGetArrayObjectivATI = NULL;
+glVariantArrayObjectATIPROC glVariantArrayObjectATI = NULL;
+glGetVariantArrayObjectfvATIPROC glGetVariantArrayObjectfvATI = NULL;
+glGetVariantArrayObjectivATIPROC glGetVariantArrayObjectivATI = NULL;
+#endif /* GL_ATI_vertex_array_object */
+
+/* NV_occlusion_query */
+
+#ifdef GL_NV_occlusion_query
+glGenOcclusionQueriesNVPROC glGenOcclusionQueriesNV = NULL;
+glDeleteOcclusionQueriesNVPROC glDeleteOcclusionQueriesNV = NULL;
+glIsOcclusionQueryNVPROC glIsOcclusionQueryNV = NULL;
+glBeginOcclusionQueryNVPROC glBeginOcclusionQueryNV = NULL;
+glEndOcclusionQueryNVPROC glEndOcclusionQueryNV = NULL;
+glGetOcclusionQueryivNVPROC glGetOcclusionQueryivNV = NULL;
+glGetOcclusionQueryuivNVPROC glGetOcclusionQueryuivNV = NULL;
+#endif /* GL_NV_occlusion_query */
+
+/* NV_point_sprite */
+
+#ifdef GL_NV_point_sprite
+glPointParameteriNVPROC glPointParameteriNV = NULL;
+glPointParameterivNVPROC glPointParameterivNV = NULL;
+#endif /* GL_NV_point_sprite */
+
+/* ARB_window_pos */
+
+#ifdef GL_ARB_window_pos
+glWindowPos2dARBPROC glWindowPos2dARB = NULL;
+glWindowPos2fARBPROC glWindowPos2fARB = NULL;
+glWindowPos2iARBPROC glWindowPos2iARB = NULL;
+glWindowPos2sARBPROC glWindowPos2sARB = NULL;
+glWindowPos2dvARBPROC glWindowPos2dvARB = NULL;
+glWindowPos2fvARBPROC glWindowPos2fvARB = NULL;
+glWindowPos2ivARBPROC glWindowPos2ivARB = NULL;
+glWindowPos2svARBPROC glWindowPos2svARB = NULL;
+glWindowPos3dARBPROC glWindowPos3dARB = NULL;
+glWindowPos3fARBPROC glWindowPos3fARB = NULL;
+glWindowPos3iARBPROC glWindowPos3iARB = NULL;
+glWindowPos3sARBPROC glWindowPos3sARB = NULL;
+glWindowPos3dvARBPROC glWindowPos3dvARB = NULL;
+glWindowPos3fvARBPROC glWindowPos3fvARB = NULL;
+glWindowPos3ivARBPROC glWindowPos3ivARB = NULL;
+glWindowPos3svARBPROC glWindowPos3svARB = NULL;
+#endif /* GL_ARB_window_pos */
+
+/* EXT_draw_range_elements */
+
+#ifdef GL_EXT_draw_range_elements
+glDrawRangeElementsEXTPROC glDrawRangeElementsEXT = NULL;
+#endif /* GL_EXT_draw_range_elements */
+
+/* EXT_stencil_two_side */
+
+#ifdef GL_EXT_stencil_two_side
+glActiveStencilFaceEXTPROC glActiveStencilFaceEXT = NULL;
+#endif /* GL_EXT_stencil_two_side */
+
+/* ARB_vertex_program */
+
+#ifdef GL_ARB_vertex_program
+glVertexAttrib1sARBPROC glVertexAttrib1sARB = NULL;
+glVertexAttrib1fARBPROC glVertexAttrib1fARB = NULL;
+glVertexAttrib1dARBPROC glVertexAttrib1dARB = NULL;
+glVertexAttrib2sARBPROC glVertexAttrib2sARB = NULL;
+glVertexAttrib2fARBPROC glVertexAttrib2fARB = NULL;
+glVertexAttrib2dARBPROC glVertexAttrib2dARB = NULL;
+glVertexAttrib3sARBPROC glVertexAttrib3sARB = NULL;
+glVertexAttrib3fARBPROC glVertexAttrib3fARB = NULL;
+glVertexAttrib3dARBPROC glVertexAttrib3dARB = NULL;
+glVertexAttrib4sARBPROC glVertexAttrib4sARB = NULL;
+glVertexAttrib4fARBPROC glVertexAttrib4fARB = NULL;
+glVertexAttrib4dARBPROC glVertexAttrib4dARB = NULL;
+glVertexAttrib4NubARBPROC glVertexAttrib4NubARB = NULL;
+glVertexAttrib1svARBPROC glVertexAttrib1svARB = NULL;
+glVertexAttrib1fvARBPROC glVertexAttrib1fvARB = NULL;
+glVertexAttrib1dvARBPROC glVertexAttrib1dvARB = NULL;
+glVertexAttrib2svARBPROC glVertexAttrib2svARB = NULL;
+glVertexAttrib2fvARBPROC glVertexAttrib2fvARB = NULL;
+glVertexAttrib2dvARBPROC glVertexAttrib2dvARB = NULL;
+glVertexAttrib3svARBPROC glVertexAttrib3svARB = NULL;
+glVertexAttrib3fvARBPROC glVertexAttrib3fvARB = NULL;
+glVertexAttrib3dvARBPROC glVertexAttrib3dvARB = NULL;
+glVertexAttrib4bvARBPROC glVertexAttrib4bvARB = NULL;
+glVertexAttrib4svARBPROC glVertexAttrib4svARB = NULL;
+glVertexAttrib4ivARBPROC glVertexAttrib4ivARB = NULL;
+glVertexAttrib4ubvARBPROC glVertexAttrib4ubvARB = NULL;
+glVertexAttrib4usvARBPROC glVertexAttrib4usvARB = NULL;
+glVertexAttrib4uivARBPROC glVertexAttrib4uivARB = NULL;
+glVertexAttrib4fvARBPROC glVertexAttrib4fvARB = NULL;
+glVertexAttrib4dvARBPROC glVertexAttrib4dvARB = NULL;
+glVertexAttrib4NbvARBPROC glVertexAttrib4NbvARB = NULL;
+glVertexAttrib4NsvARBPROC glVertexAttrib4NsvARB = NULL;
+glVertexAttrib4NivARBPROC glVertexAttrib4NivARB = NULL;
+glVertexAttrib4NubvARBPROC glVertexAttrib4NubvARB = NULL;
+glVertexAttrib4NusvARBPROC glVertexAttrib4NusvARB = NULL;
+glVertexAttrib4NuivARBPROC glVertexAttrib4NuivARB = NULL;
+glVertexAttribPointerARBPROC glVertexAttribPointerARB = NULL;
+glEnableVertexAttribArrayARBPROC glEnableVertexAttribArrayARB = NULL;
+glDisableVertexAttribArrayARBPROC glDisableVertexAttribArrayARB = NULL;
+glProgramStringARBPROC glProgramStringARB = NULL;
+glBindProgramARBPROC glBindProgramARB = NULL;
+glDeleteProgramsARBPROC glDeleteProgramsARB = NULL;
+glGenProgramsARBPROC glGenProgramsARB = NULL;
+glProgramEnvParameter4dARBPROC glProgramEnvParameter4dARB = NULL;
+glProgramEnvParameter4dvARBPROC glProgramEnvParameter4dvARB = NULL;
+glProgramEnvParameter4fARBPROC glProgramEnvParameter4fARB = NULL;
+glProgramEnvParameter4fvARBPROC glProgramEnvParameter4fvARB = NULL;
+glProgramLocalParameter4dARBPROC glProgramLocalParameter4dARB = NULL;
+glProgramLocalParameter4dvARBPROC glProgramLocalParameter4dvARB = NULL;
+glProgramLocalParameter4fARBPROC glProgramLocalParameter4fARB = NULL;
+glProgramLocalParameter4fvARBPROC glProgramLocalParameter4fvARB = NULL;
+glGetProgramEnvParameterdvARBPROC glGetProgramEnvParameterdvARB = NULL;
+glGetProgramEnvParameterfvARBPROC glGetProgramEnvParameterfvARB = NULL;
+glGetProgramLocalParameterdvARBPROC glGetProgramLocalParameterdvARB = NULL;
+glGetProgramLocalParameterfvARBPROC glGetProgramLocalParameterfvARB = NULL;
+glGetProgramivARBPROC glGetProgramivARB = NULL;
+glGetProgramStringARBPROC glGetProgramStringARB = NULL;
+glGetVertexAttribdvARBPROC glGetVertexAttribdvARB = NULL;
+glGetVertexAttribfvARBPROC glGetVertexAttribfvARB = NULL;
+glGetVertexAttribivARBPROC glGetVertexAttribivARB = NULL;
+glGetVertexAttribPointervARBPROC glGetVertexAttribPointervARB = NULL;
+glIsProgramARBPROC glIsProgramARB = NULL;
+#endif /* GL_ARB_vertex_program */
+
+/* EXT_cull_vertex */
+
+#ifdef GL_EXT_cull_vertex
+glCullParameterfvEXTPROC glCullParameterfvEXT = NULL;
+glCullParameterdvEXTPROC glCullParameterdvEXT = NULL;
+#endif /* GL_EXT_cull_vertex */
+
+#ifdef GL_EXT_blend_function_sepatate
+glBlendFuncSeparateEXTPROC glBlendFuncSeparateEXT = NULL;
+glBlendFuncSeparateINGRPROC glBlendFuncSeparateINGR = NULL;
+#endif /* GL_EXT_blend_func_separate */
+
+#ifdef _WIN32
+#ifdef GL_VERSION_1_4
+/*#ifndef GL_VERSION_1_2
+glBlendColorPROC glBlendColor = NULL;
+glBlendEquationPROC glBlendEquation = NULL;
+#endif *//* GL_VERSION_1_2 */
+glFogCoordfPROC glFogCoordf = NULL;
+glFogCoordfvPROC glFogCoordfv = NULL;
+glFogCoorddPROC glFogCoordd = NULL;
+glFogCoorddvPROC glFogCoorddv = NULL;
+glFogCoordPointerPROC glFogCoordPointer = NULL;
+glMultiDrawArraysPROC glMultiDrawArrays = NULL;
+glMultiDrawElementsPROC glMultiDrawElements = NULL;
+glPointParameterfPROC glPointParameterf = NULL;
+glPointParameterfvPROC glPointParameterfv = NULL;
+glSecondaryColor3bPROC glSecondaryColor3b = NULL;
+glSecondaryColor3bvPROC glSecondaryColor3bv = NULL;
+glSecondaryColor3dPROC glSecondaryColor3d = NULL;
+glSecondaryColor3dvPROC glSecondaryColor3dv = NULL;
+glSecondaryColor3fPROC glSecondaryColor3f = NULL;
+glSecondaryColor3fvPROC glSecondaryColor3fv = NULL;
+glSecondaryColor3iPROC glSecondaryColor3i = NULL;
+glSecondaryColor3ivPROC glSecondaryColor3iv = NULL;
+glSecondaryColor3sPROC glSecondaryColor3s = NULL;
+glSecondaryColor3svPROC glSecondaryColor3sv = NULL;
+glSecondaryColor3ubPROC glSecondaryColor3ub = NULL;
+glSecondaryColor3ubvPROC glSecondaryColor3ubv = NULL;
+glSecondaryColor3uiPROC glSecondaryColor3ui = NULL;
+glSecondaryColor3uivPROC glSecondaryColor3uiv = NULL;
+glSecondaryColor3usPROC glSecondaryColor3us = NULL;
+glSecondaryColor3usvPROC glSecondaryColor3usv = NULL;
+glSecondaryColorPointerPROC glSecondaryColorPointer = NULL;
+glBlendFuncSeparatePROC glBlendFuncSeparate = NULL;
+glWindowPos2dPROC glWindowPos2d = NULL;
+glWindowPos2fPROC glWindowPos2f = NULL;
+glWindowPos2iPROC glWindowPos2i = NULL;
+glWindowPos2sPROC glWindowPos2s = NULL;
+glWindowPos2dvPROC glWindowPos2dv = NULL;
+glWindowPos2fvPROC glWindowPos2fv = NULL;
+glWindowPos2ivPROC glWindowPos2iv = NULL;
+glWindowPos2svPROC glWindowPos2sv = NULL;
+glWindowPos3dPROC glWindowPos3d = NULL;
+glWindowPos3fPROC glWindowPos3f = NULL;
+glWindowPos3iPROC glWindowPos3i = NULL;
+glWindowPos3sPROC glWindowPos3s = NULL;
+glWindowPos3dvPROC glWindowPos3dv = NULL;
+glWindowPos3fvPROC glWindowPos3fv = NULL;
+glWindowPos3ivPROC glWindowPos3iv = NULL;
+glWindowPos3svPROC glWindowPos3sv = NULL;
+#endif /* GL_VERSION_1_4 */
+#endif /* WIN32 */
+
+#ifdef GL_EXT_blend_func_separate
+glBlendFuncSeparateEXTPROC glBlendFuncSeparateEXT = NULL;
+#endif /* GL_EXT_blend_func_separate */
+
+
+#ifdef GL_NV_element_array
+glElementPointerNVPROC glElementPointerNV = NULL;
+glDrawElementArrayNVPROC glDrawElementArrayNV = NULL;
+glDrawRangeElementArrayNVPROC glDrawRangeElementArrayNV = NULL;
+glMultiDrawElementArrayNVPROC glMultiDrawElementArrayNV = NULL;
+glMultiDrawRangeElementArrayNVPROC glMultiDrawRangeElementArrayNV = NULL;
+#endif /* GL_NV_element_array */
+
+#ifdef GL_NV_fragment_program
+glProgramNamedParameter4fNVPROC glProgramNamedParameter4fNV = NULL;
+glProgramNamedParameter4dNVPROC glProgramNamedParameter4dNV = NULL;
+glProgramNamedParameter4fvNVPROC glProgramNamedParameter4fvNV = NULL;
+glProgramNamedParameter4dvNVPROC glProgramNamedParameter4dvNV = NULL;
+glGetProgramNamedParameterfvNVPROC glGetProgramNamedParameterfvNV = NULL;
+glGetProgramNamedParameterdvNVPROC glGetProgramNamedParameterdvNV = NULL;
+#ifndef GL_ARB_vertex_program
+glProgramLocalParameter4dARBPROC glProgramLocalParameter4dARB = NULL;
+glProgramLocalParameter4dvARBPROC glProgramLocalParameter4dvARB = NULL;
+glProgramLocalParameter4fARBPROC glProgramLocalParameter4fARB = NULL;
+glProgramLocalParameter4fvARBPROC glProgramLocalParameter4fvARB = NULL;
+glGetProgramLocalParameterdvARBPROC glGetProgramLocalParameterdvARB = NULL;
+glGetProgramLocalParameterfvARBPROC glGetProgramLocalParameterfvARB = NULL;
+#endif /* GL_ARB_vertex_program */
+#endif /* GL_NV_fragment_program */
+
+
+#ifdef GL_NV_primitive_restart
+glPrimitiveRestartNVPROC glPrimitiveRestartNV = NULL;
+glPrimitiveRestartIndexNVPROC glPrimitiveRestartIndexNV = NULL;
+#endif /* GL_NV_primitive_restart */
+
+// added -ec
+#ifdef GL_ATI_draw_buffers
+PFNGLDRAWBUFFERS glDrawBuffersATI;
+#endif
+
+static int extgl_error = 0;
+
+struct ExtensionTypes extgl_Extensions;
+
+struct ExtensionTypes SupportedExtensions; /* deprecated, please do not use */
+
+
+/* getProcAddress */
+
+void *extgl_GetProcAddress(const char *name)
+{
+#ifdef _WIN32
+ void *t = wglGetProcAddress(name);
+ if (t == NULL)
+ {
+ extgl_error = 1;
+ }
+ return t;
+#else
+ void *t = (void*)glXGetProcAddressARB((GLubyte *)name);
+ if (t == NULL)
+ {
+ extgl_error = 1;
+ }
+ return t;
+#endif
+}
+
+/*-----------------------------------------------------*/
+/* WGL stuff */
+/*-----------------------------------------------------*/
+
+#ifdef _WIN32
+
+/** 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.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");
+ extgl_Extensions.wgl.ATI_pixel_format_float = QueryWGLExtension("WGL_ATI_pixel_format_float"); // added -ec
+}
+
+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*/
+/*-----------------------------------------------------*/
+
+/** returns true if the extention is available */
+int QueryExtension(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;
+ extensions = glGetString(GL_EXTENSIONS);
+ /* 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;
+}
+
+// added -ec
+/* ATI_draw_buffers */
+void extgl_InitATIDrawBuffers()
+{
+#ifdef GL_ATI_draw_buffers
+ if (!extgl_Extensions.ATI_draw_buffers)
+ return;
+ glDrawBuffersATI = (PFNGLDRAWBUFFERS) extgl_GetProcAddress("glDrawBuffersATI");
+#endif
+}
+
+void extgl_InitARBFragmentProgram()
+{
+#ifdef GL_ARB_fragment_program
+ if (!extgl_Extensions.ARB_fragment_program)
+ return;
+ glProgramStringARB = (glProgramStringARBPROC) extgl_GetProcAddress("glProgramStringARB");
+ glBindProgramARB = (glBindProgramARBPROC) extgl_GetProcAddress("glBindProgramARB");
+ glDeleteProgramsARB = (glDeleteProgramsARBPROC) extgl_GetProcAddress("glDeleteProgramsARB");
+ glGenProgramsARB = (glGenProgramsARBPROC) extgl_GetProcAddress("glGenProgramsARB");
+ glProgramEnvParameter4dARB = (glProgramEnvParameter4dARBPROC) extgl_GetProcAddress("glProgramEnvParameter4dARB");
+ glProgramEnvParameter4dvARB = (glProgramEnvParameter4dvARBPROC) extgl_GetProcAddress("glProgramEnvParameter4dvARB");
+ glProgramEnvParameter4fARB = (glProgramEnvParameter4fARBPROC) extgl_GetProcAddress("glProgramEnvParameter4fARB");
+ glProgramEnvParameter4fvARB = (glProgramEnvParameter4fvARBPROC) extgl_GetProcAddress("glProgramEnvParameter4fvARB");
+ glProgramLocalParameter4dARB = (glProgramLocalParameter4dARBPROC) extgl_GetProcAddress("glProgramLocalParameter4dARB");
+ glProgramLocalParameter4dvARB = (glProgramLocalParameter4dvARBPROC) extgl_GetProcAddress("glProgramLocalParameter4dvARB");
+ glProgramLocalParameter4fARB = (glProgramLocalParameter4fARBPROC) extgl_GetProcAddress("glProgramLocalParameter4fARB");
+ glProgramLocalParameter4fvARB = (glProgramLocalParameter4fvARBPROC) extgl_GetProcAddress("glProgramLocalParameter4fvARB");
+ glGetProgramEnvParameterdvARB = (glGetProgramEnvParameterdvARBPROC) extgl_GetProcAddress("glGetProgramEnvParameterdvARB");
+ glGetProgramEnvParameterfvARB = (glGetProgramEnvParameterfvARBPROC) extgl_GetProcAddress("glGetProgramEnvParameterfvARB");
+ glGetProgramLocalParameterdvARB = (glGetProgramLocalParameterdvARBPROC) extgl_GetProcAddress("glGetProgramLocalParameterdvARB");
+ glGetProgramLocalParameterfvARB = (glGetProgramLocalParameterfvARBPROC) extgl_GetProcAddress("glGetProgramLocalParameterfvARB");
+ glGetProgramivARB = (glGetProgramivARBPROC) extgl_GetProcAddress("glGetProgramivARB");
+ glGetProgramStringARB = (glGetProgramStringARBPROC) extgl_GetProcAddress("glGetProgramStringARB");
+ glIsProgramARB = (glIsProgramARBPROC) extgl_GetProcAddress("glIsProgramARB");
+#endif
+}
+
+void extgl_InitNVPrimitiveRestart()
+{
+#ifdef GL_NV_primitive_restart
+ if (!extgl_Extensions.NV_primitive_restart)
+ return;
+ glPrimitiveRestartNV = (glPrimitiveRestartNVPROC) extgl_GetProcAddress("glPrimitiveRestartNV");
+ glPrimitiveRestartIndexNV = (glPrimitiveRestartIndexNVPROC) extgl_GetProcAddress("glPrimitiveRestartIndexNV");
+#endif /* GL_NV_primitive_restart */
+}
+
+void extgl_InitNVFragmentProgram()
+{
+#ifdef GL_NV_fragment_program
+ if (!extgl_Extensions.NV_fragment_program)
+ return;
+ glProgramNamedParameter4fNV = (glProgramNamedParameter4fNVPROC) extgl_GetProcAddress("glProgramNamedParameter4fNV");
+ glProgramNamedParameter4dNV = (glProgramNamedParameter4dNVPROC) extgl_GetProcAddress("glProgramNamedParameter4dNV");
+ glProgramNamedParameter4fvNV = (glProgramNamedParameter4fvNVPROC) extgl_GetProcAddress("glProgramNamedParameter4fvNV");
+ glProgramNamedParameter4dvNV = (glProgramNamedParameter4dvNVPROC) extgl_GetProcAddress("glProgramNamedParameter4dvNV");
+ glGetProgramNamedParameterfvNV = (glGetProgramNamedParameterfvNVPROC) extgl_GetProcAddress("glGetProgramNamedParameterfvNV");
+ glGetProgramNamedParameterdvNV = (glGetProgramNamedParameterdvNVPROC) extgl_GetProcAddress("glGetProgramNamedParameterdvNV");
+#ifndef GL_ARB_vertex_program
+ glProgramLocalParameter4dARB = (glProgramLocalParameter4dARBPROC) extgl_GetProcAddress("glProgramLocalParameter4dARB");
+ glProgramLocalParameter4dvARB = (glProgramLocalParameter4dvARBPROC) extgl_GetProcAddress("glProgramLocalParameter4dvARB");
+ glProgramLocalParameter4fARB = (glProgramLocalParameter4fARBPROC) extgl_GetProcAddress("glProgramLocalParameter4fARB");
+ glProgramLocalParameter4fvARB = (glProgramLocalParameter4fvARBPROC) extgl_GetProcAddress("glProgramLocalParameter4fvARB");
+ glGetProgramLocalParameterdvARB = (glGetProgramLocalParameterdvARBPROC) extgl_GetProcAddress("glGetProgramLocalParameterdvARB");
+ glGetProgramLocalParameterfvARB = (glGetProgramLocalParameterfvARBPROC) extgl_GetProcAddress("glGetProgramLocalParameterfvARB");
+#endif /* GL_ARB_vertex_program */
+#endif /* GL_NV_fragment_program */
+}
+
+void extgl_InitNVElementArray()
+{
+#ifdef GL_NV_element_array
+ if (!extgl_Extensions.NV_element_array)
+ return;
+ glElementPointerNV = (glElementPointerNVPROC) extgl_GetProcAddress("glElementPointerNV");
+ glDrawElementArrayNV = (glDrawElementArrayNVPROC) extgl_GetProcAddress("glDrawElementArrayNV");
+ glDrawRangeElementArrayNV = (glDrawRangeElementArrayNVPROC) extgl_GetProcAddress("glDrawRangeElementArrayNV");
+ glMultiDrawElementArrayNV = (glMultiDrawElementArrayNVPROC) extgl_GetProcAddress("glMultiDrawElementArrayNV");
+ glMultiDrawRangeElementArrayNV = (glMultiDrawRangeElementArrayNVPROC) extgl_GetProcAddress("glMultiDrawRangeElementArrayNV");
+#endif
+}
+
+
+void extgl_InitEXTBlendFuncSeparate()
+{
+#ifdef GL_EXT_blend_func_separate
+ if (!extgl_Extensions.EXT_blend_func_separate)
+ return;
+ glBlendFuncSeparateEXT = (glBlendFuncSeparateEXTPROC) extgl_GetProcAddress("glBlendFuncSeparateEXT");
+#endif
+}
+
+void extgl_InitEXTCullVertex()
+{
+#ifdef GL_EXT_cull_vertex
+ if (!extgl_Extensions.EXT_cull_vertex)
+ return;
+ glCullParameterfvEXT = (glCullParameterfvEXTPROC) extgl_GetProcAddress("glCullParameterfvEXT");
+ glCullParameterdvEXT = (glCullParameterdvEXTPROC) extgl_GetProcAddress("glCullParameterdvEXT");
+#endif
+}
+
+void extgl_InitARBVertexProgram()
+{
+#ifdef GL_ARB_vertex_program
+ if (!extgl_Extensions.ARB_vertex_program)
+ return;
+ glVertexAttrib1sARB = (glVertexAttrib1sARBPROC) extgl_GetProcAddress("glVertexAttrib1sARB");
+ glVertexAttrib1fARB = (glVertexAttrib1fARBPROC) extgl_GetProcAddress("glVertexAttrib1fARB");
+ glVertexAttrib1dARB = (glVertexAttrib1dARBPROC) extgl_GetProcAddress("glVertexAttrib1dARB");
+ glVertexAttrib2sARB = (glVertexAttrib2sARBPROC) extgl_GetProcAddress("glVertexAttrib2sARB");
+ glVertexAttrib2fARB = (glVertexAttrib2fARBPROC) extgl_GetProcAddress("glVertexAttrib2fARB");
+ glVertexAttrib2dARB = (glVertexAttrib2dARBPROC) extgl_GetProcAddress("glVertexAttrib2dARB");
+ glVertexAttrib3sARB = (glVertexAttrib3sARBPROC) extgl_GetProcAddress("glVertexAttrib3sARB");
+ glVertexAttrib3fARB = (glVertexAttrib3fARBPROC) extgl_GetProcAddress("glVertexAttrib3fARB");
+ glVertexAttrib3dARB = (glVertexAttrib3dARBPROC) extgl_GetProcAddress("glVertexAttrib3dARB");
+ glVertexAttrib4sARB = (glVertexAttrib4sARBPROC) extgl_GetProcAddress("glVertexAttrib4sARB");
+ glVertexAttrib4fARB = (glVertexAttrib4fARBPROC) extgl_GetProcAddress("glVertexAttrib4fARB");
+ glVertexAttrib4dARB = (glVertexAttrib4dARBPROC) extgl_GetProcAddress("glVertexAttrib4dARB");
+ glVertexAttrib4NubARB = (glVertexAttrib4NubARBPROC) extgl_GetProcAddress("glVertexAttrib4NubARB");
+ glVertexAttrib1svARB = (glVertexAttrib1svARBPROC) extgl_GetProcAddress("glVertexAttrib1svARB");
+ glVertexAttrib1fvARB = (glVertexAttrib1fvARBPROC) extgl_GetProcAddress("glVertexAttrib1fvARB");
+ glVertexAttrib1dvARB = (glVertexAttrib1dvARBPROC) extgl_GetProcAddress("glVertexAttrib1dvARB");
+ glVertexAttrib2svARB = (glVertexAttrib2svARBPROC) extgl_GetProcAddress("glVertexAttrib2svARB");
+ glVertexAttrib2fvARB = (glVertexAttrib2fvARBPROC) extgl_GetProcAddress("glVertexAttrib2fvARB");
+ glVertexAttrib2dvARB = (glVertexAttrib2dvARBPROC) extgl_GetProcAddress("glVertexAttrib2dvARB");
+ glVertexAttrib3svARB = (glVertexAttrib3svARBPROC) extgl_GetProcAddress("glVertexAttrib3svARB");
+ glVertexAttrib3fvARB = (glVertexAttrib3fvARBPROC) extgl_GetProcAddress("glVertexAttrib3fvARB");
+ glVertexAttrib3dvARB = (glVertexAttrib3dvARBPROC) extgl_GetProcAddress("glVertexAttrib3dvARB");
+ glVertexAttrib4bvARB = (glVertexAttrib4bvARBPROC) extgl_GetProcAddress("glVertexAttrib4bvARB");
+ glVertexAttrib4svARB = (glVertexAttrib4svARBPROC) extgl_GetProcAddress("glVertexAttrib4svARB");
+ glVertexAttrib4ivARB = (glVertexAttrib4ivARBPROC) extgl_GetProcAddress("glVertexAttrib4ivARB");
+ glVertexAttrib4ubvARB = (glVertexAttrib4ubvARBPROC) extgl_GetProcAddress("glVertexAttrib4ubvARB");
+ glVertexAttrib4usvARB = (glVertexAttrib4usvARBPROC) extgl_GetProcAddress("glVertexAttrib4usvARB");
+ glVertexAttrib4uivARB = (glVertexAttrib4uivARBPROC) extgl_GetProcAddress("glVertexAttrib4uivARB");
+ glVertexAttrib4fvARB = (glVertexAttrib4fvARBPROC) extgl_GetProcAddress("glVertexAttrib4fvARB");
+ glVertexAttrib4dvARB = (glVertexAttrib4dvARBPROC) extgl_GetProcAddress("glVertexAttrib4dvARB");
+ glVertexAttrib4NbvARB = (glVertexAttrib4NbvARBPROC) extgl_GetProcAddress("glVertexAttrib4NbvARB");
+ glVertexAttrib4NsvARB = (glVertexAttrib4NsvARBPROC) extgl_GetProcAddress("glVertexAttrib4NsvARB");
+ glVertexAttrib4NivARB = (glVertexAttrib4NivARBPROC) extgl_GetProcAddress("glVertexAttrib4NivARB");
+ glVertexAttrib4NubvARB = (glVertexAttrib4NubvARBPROC) extgl_GetProcAddress("glVertexAttrib4NubvARB");
+ glVertexAttrib4NusvARB = (glVertexAttrib4NusvARBPROC) extgl_GetProcAddress("glVertexAttrib4NusvARB");
+ glVertexAttrib4NuivARB = (glVertexAttrib4NuivARBPROC) extgl_GetProcAddress("glVertexAttrib4NuivARB");
+ glVertexAttribPointerARB = (glVertexAttribPointerARBPROC) extgl_GetProcAddress("glVertexAttribPointerARB");
+ glEnableVertexAttribArrayARB = (glEnableVertexAttribArrayARBPROC) extgl_GetProcAddress("glEnableVertexAttribArrayARB");
+ glDisableVertexAttribArrayARB = (glDisableVertexAttribArrayARBPROC) extgl_GetProcAddress("glDisableVertexAttribArrayARB");
+ glProgramStringARB = (glProgramStringARBPROC) extgl_GetProcAddress("glProgramStringARB");
+ glBindProgramARB = (glBindProgramARBPROC) extgl_GetProcAddress("glBindProgramARB");
+ glDeleteProgramsARB = (glDeleteProgramsARBPROC) extgl_GetProcAddress("glDeleteProgramsARB");
+ glGenProgramsARB = (glGenProgramsARBPROC) extgl_GetProcAddress("glGenProgramsARB");
+ glProgramEnvParameter4dARB = (glProgramEnvParameter4dARBPROC) extgl_GetProcAddress("glProgramEnvParameter4dARB");
+ glProgramEnvParameter4dvARB = (glProgramEnvParameter4dvARBPROC) extgl_GetProcAddress("glProgramEnvParameter4dvARB");
+ glProgramEnvParameter4fARB = (glProgramEnvParameter4fARBPROC) extgl_GetProcAddress("glProgramEnvParameter4fARB");
+ glProgramEnvParameter4fvARB = (glProgramEnvParameter4fvARBPROC) extgl_GetProcAddress("glProgramEnvParameter4fvARB");
+ glProgramLocalParameter4dARB = (glProgramLocalParameter4dARBPROC) extgl_GetProcAddress("glProgramLocalParameter4dARB");
+ glProgramLocalParameter4dvARB = (glProgramLocalParameter4dvARBPROC) extgl_GetProcAddress("glProgramLocalParameter4dvARB");
+ glProgramLocalParameter4fARB = (glProgramLocalParameter4fARBPROC) extgl_GetProcAddress("glProgramLocalParameter4fARB");
+ glProgramLocalParameter4fvARB = (glProgramLocalParameter4fvARBPROC) extgl_GetProcAddress("glProgramLocalParameter4fvARB");
+ glGetProgramEnvParameterdvARB = (glGetProgramEnvParameterdvARBPROC) extgl_GetProcAddress("glGetProgramEnvParameterdvARB");
+ glGetProgramEnvParameterfvARB = (glGetProgramEnvParameterfvARBPROC) extgl_GetProcAddress("glGetProgramEnvParameterfvARB");
+ glGetProgramLocalParameterdvARB = (glGetProgramLocalParameterdvARBPROC) extgl_GetProcAddress("glGetProgramLocalParameterdvARB");
+ glGetProgramLocalParameterfvARB = (glGetProgramLocalParameterfvARBPROC) extgl_GetProcAddress("glGetProgramLocalParameterfvARB");
+ glGetProgramivARB = (glGetProgramivARBPROC) extgl_GetProcAddress("glGetProgramivARB");
+ glGetProgramStringARB = (glGetProgramStringARBPROC) extgl_GetProcAddress("glGetProgramStringARB");
+ glGetVertexAttribdvARB = (glGetVertexAttribdvARBPROC) extgl_GetProcAddress("glGetVertexAttribdvARB");
+ glGetVertexAttribfvARB = (glGetVertexAttribfvARBPROC) extgl_GetProcAddress("glGetVertexAttribfvARB");
+ glGetVertexAttribivARB = (glGetVertexAttribivARBPROC) extgl_GetProcAddress("glGetVertexAttribivARB");
+ glGetVertexAttribPointervARB = (glGetVertexAttribPointervARBPROC) extgl_GetProcAddress("glGetVertexAttribPointervARB");
+ glIsProgramARB = (glIsProgramARBPROC) extgl_GetProcAddress("glIsProgramARB");
+#endif
+}
+
+void extgl_InitEXTStencilTwoSide()
+{
+#ifdef GL_EXT_stencil_two_side
+ if (!extgl_Extensions.EXT_stencil_two_side)
+ return;
+ glActiveStencilFaceEXT = (glActiveStencilFaceEXTPROC) extgl_GetProcAddress("glActiveStencilFaceEXT");
+#endif
+}
+
+void extgl_InitARBWindowPos()
+{
+#ifdef GL_ARB_window_pos
+ if (!extgl_Extensions.ARB_window_pos)
+ return;
+ glWindowPos2dARB = (glWindowPos2dARBPROC) extgl_GetProcAddress("glWindowPos2dARB");
+ glWindowPos2fARB = (glWindowPos2fARBPROC) extgl_GetProcAddress("glWindowPos2fARB");
+ glWindowPos2iARB = (glWindowPos2iARBPROC) extgl_GetProcAddress("glWindowPos2iARB");
+ glWindowPos2sARB = (glWindowPos2sARBPROC) extgl_GetProcAddress("glWindowPos2sARB");
+ glWindowPos2dvARB = (glWindowPos2dvARBPROC) extgl_GetProcAddress("glWindowPos2dvARB");
+ glWindowPos2fvARB = (glWindowPos2fvARBPROC) extgl_GetProcAddress("glWindowPos2fvARB");
+ glWindowPos2ivARB = (glWindowPos2ivARBPROC) extgl_GetProcAddress("glWindowPos2ivARB");
+ glWindowPos2svARB = (glWindowPos2svARBPROC) extgl_GetProcAddress("glWindowPos2svARB");
+ glWindowPos3dARB = (glWindowPos3dARBPROC) extgl_GetProcAddress("glWindowPos3dARB");
+ glWindowPos3fARB = (glWindowPos3fARBPROC) extgl_GetProcAddress("glWindowPos3fARB");
+ glWindowPos3iARB = (glWindowPos3iARBPROC) extgl_GetProcAddress("glWindowPos3iARB");
+ glWindowPos3sARB = (glWindowPos3sARBPROC) extgl_GetProcAddress("glWindowPos3sARB");
+ glWindowPos3dvARB = (glWindowPos3dvARBPROC) extgl_GetProcAddress("glWindowPos3dvARB");
+ glWindowPos3fvARB = (glWindowPos3fvARBPROC) extgl_GetProcAddress("glWindowPos3fvARB");
+ glWindowPos3ivARB = (glWindowPos3ivARBPROC) extgl_GetProcAddress("glWindowPos3ivARB");
+ glWindowPos3svARB = (glWindowPos3svARBPROC) extgl_GetProcAddress("glWindowPos3svARB");
+#endif
+}
+
+void extgl_InitARBTextureCompression()
+{
+#ifdef GL_ARB_texture_compression
+ if (!extgl_Extensions.ARB_texture_compression)
+ return;
+ glCompressedTexImage3DARB = (glCompressedTexImage3DARBPROC) extgl_GetProcAddress("glCompressedTexImage3DARB");
+ glCompressedTexImage2DARB = (glCompressedTexImage2DARBPROC) extgl_GetProcAddress("glCompressedTexImage2DARB");
+ glCompressedTexImage1DARB = (glCompressedTexImage1DARBPROC) extgl_GetProcAddress("glCompressedTexImage1DARB");
+ glCompressedTexSubImage3DARB = (glCompressedTexSubImage3DARBPROC) extgl_GetProcAddress("glCompressedTexSubImage3DARB");
+ glCompressedTexSubImage2DARB = (glCompressedTexSubImage2DARBPROC) extgl_GetProcAddress("glCompressedTexSubImage2DARB");
+ glCompressedTexSubImage1DARB = (glCompressedTexSubImage1DARBPROC) extgl_GetProcAddress("glCompressedTexSubImage1DARB");
+ glGetCompressedTexImageARB = (glGetCompressedTexImageARBPROC) extgl_GetProcAddress("glGetCompressedTexImageARB");
+#endif
+}
+
+void extgl_InitNVPointSprite()
+{
+#ifdef GL_NV_point_sprite
+ if (!extgl_Extensions.NV_point_sprite)
+ return;
+ glPointParameteriNV = (glPointParameteriNVPROC) extgl_GetProcAddress("glPointParameteriNV");
+ glPointParameterivNV = (glPointParameterivNVPROC) extgl_GetProcAddress("glPointParameterivNV");
+#endif
+}
+
+void extgl_InitNVOcclusionQuery()
+{
+#ifdef GL_NV_occlusion_query
+ if (!extgl_Extensions.NV_occlusion_query)
+ return;
+ glGenOcclusionQueriesNV = (glGenOcclusionQueriesNVPROC) extgl_GetProcAddress("glGenOcclusionQueriesNV");
+ glDeleteOcclusionQueriesNV = (glDeleteOcclusionQueriesNVPROC) extgl_GetProcAddress("glDeleteOcclusionQueriesNV");
+ glIsOcclusionQueryNV = (glIsOcclusionQueryNVPROC) extgl_GetProcAddress("glIsOcclusionQueryNV");
+ glBeginOcclusionQueryNV = (glBeginOcclusionQueryNVPROC) extgl_GetProcAddress("glBeginOcclusionQueryNV");
+ glEndOcclusionQueryNV = (glEndOcclusionQueryNVPROC) extgl_GetProcAddress("glEndOcclusionQueryNV");
+ glGetOcclusionQueryivNV = (glGetOcclusionQueryivNVPROC) extgl_GetProcAddress("glGetOcclusionQueryivNV");
+ glGetOcclusionQueryuivNV = (glGetOcclusionQueryuivNVPROC) extgl_GetProcAddress("glGetOcclusionQueryuivNV");
+#endif
+}
+
+void extgl_InitATIVertexArrayObject()
+{
+#ifdef GL_ATI_vertex_array_object
+ if (!extgl_Extensions.ATI_vertex_array_object)
+ return;
+ glNewObjectBufferATI = (glNewObjectBufferATIPROC) extgl_GetProcAddress("glNewObjectBufferATI");
+ glIsObjectBufferATI = (glIsObjectBufferATIPROC) extgl_GetProcAddress("glIsObjectBufferATI");
+ glUpdateObjectBufferATI = (glUpdateObjectBufferATIPROC) extgl_GetProcAddress("glUpdateObjectBufferATI");
+ glGetObjectBufferfvATI = (glGetObjectBufferfvATIPROC) extgl_GetProcAddress("glGetObjectBufferfvATI");
+ glGetObjectBufferivATI = (glGetObjectBufferivATIPROC) extgl_GetProcAddress("glGetObjectBufferivATI");
+ glFreeObjectBufferATI = (glFreeObjectBufferATIPROC) extgl_GetProcAddress("glFreeObjectBufferATI");
+ glArrayObjectATI = (glArrayObjectATIPROC) extgl_GetProcAddress("glArrayObjectATI");
+ glGetArrayObjectfvATI = (glGetArrayObjectfvATIPROC) extgl_GetProcAddress("glGetArrayObjectfvATI");
+ glGetArrayObjectivATI = (glGetArrayObjectivATIPROC) extgl_GetProcAddress("glGetArrayObjectivATI");
+ glVariantArrayObjectATI = (glVariantArrayObjectATIPROC) extgl_GetProcAddress("glVariantArrayObjectATI");
+ glGetVariantArrayObjectfvATI = (glGetVariantArrayObjectfvATIPROC) extgl_GetProcAddress("glGetVariantArrayObjectfvATI");
+ glGetVariantArrayObjectivATI = (glGetVariantArrayObjectivATIPROC) extgl_GetProcAddress("glGetVariantArrayObjectivATI");
+#endif
+}
+
+void extgl_InitATIVertexStreams()
+{
+#ifdef GL_ATI_vertex_streams
+ if (!extgl_Extensions.ATI_vertex_streams)
+ return;
+ glClientActiveVertexStreamATI = (glClientActiveVertexStreamATIPROC) extgl_GetProcAddress("glClientActiveVertexStreamATI");
+ glVertexBlendEnviATI = (glVertexBlendEnviATIPROC) extgl_GetProcAddress("glVertexBlendEnviATI");
+ glVertexBlendEnvfATI = (glVertexBlendEnvfATIPROC) extgl_GetProcAddress("glVertexBlendEnvfATI");
+ glVertexStream2sATI = (glVertexStream2sATIPROC) extgl_GetProcAddress("glVertexStream2sATI");
+ glVertexStream2svATI = (glVertexStream2svATIPROC) extgl_GetProcAddress("glVertexStream2svATI");
+ glVertexStream2iATI = (glVertexStream2iATIPROC) extgl_GetProcAddress("glVertexStream2iATI");
+ glVertexStream2ivATI = (glVertexStream2ivATIPROC) extgl_GetProcAddress("glVertexStream2ivATI");
+ glVertexStream2fATI = (glVertexStream2fATIPROC) extgl_GetProcAddress("glVertexStream2fATI");
+ glVertexStream2fvATI = (glVertexStream2fvATIPROC) extgl_GetProcAddress("glVertexStream2fvATI");
+ glVertexStream2dATI = (glVertexStream2dATIPROC) extgl_GetProcAddress("glVertexStream2dATI");
+ glVertexStream2dvATI = (glVertexStream2dvATIPROC) extgl_GetProcAddress("glVertexStream2dvATI");
+ glVertexStream3sATI = (glVertexStream3sATIPROC) extgl_GetProcAddress("glVertexStream3sATI");
+ glVertexStream3svATI = (glVertexStream3svATIPROC) extgl_GetProcAddress("glVertexStream3svATI");
+ glVertexStream3iATI = (glVertexStream3iATIPROC) extgl_GetProcAddress("glVertexStream3iATI");
+ glVertexStream3ivATI = (glVertexStream3ivATIPROC) extgl_GetProcAddress("glVertexStream3ivATI");
+ glVertexStream3fATI = (glVertexStream3fATIPROC) extgl_GetProcAddress("glVertexStream3fATI");
+ glVertexStream3fvATI = (glVertexStream3fvATIPROC) extgl_GetProcAddress("glVertexStream3fvATI");
+ glVertexStream3dATI = (glVertexStream3dATIPROC) extgl_GetProcAddress("glVertexStream3dATI");
+ glVertexStream3dvATI = (glVertexStream3dvATIPROC) extgl_GetProcAddress("glVertexStream3dvATI");
+ glVertexStream4sATI = (glVertexStream4sATIPROC) extgl_GetProcAddress("glVertexStream4sATI");
+ glVertexStream4svATI = (glVertexStream4svATIPROC) extgl_GetProcAddress("glVertexStream4svATI");
+ glVertexStream4iATI = (glVertexStream4iATIPROC) extgl_GetProcAddress("glVertexStream4iATI");
+ glVertexStream4ivATI = (glVertexStream4ivATIPROC) extgl_GetProcAddress("glVertexStream4ivATI");
+ glVertexStream4fATI = (glVertexStream4fATIPROC) extgl_GetProcAddress("glVertexStream4fATI");
+ glVertexStream4fvATI = (glVertexStream4fvATIPROC) extgl_GetProcAddress("glVertexStream4fvATI");
+ glVertexStream4dATI = (glVertexStream4dATIPROC) extgl_GetProcAddress("glVertexStream4dATI");
+ glVertexStream4dvATI = (glVertexStream4dvATIPROC) extgl_GetProcAddress("glVertexStream4dvATI");
+ glNormalStream3bATI = (glNormalStream3bATIPROC) extgl_GetProcAddress("glNormalStream3bATI");
+ glNormalStream3bvATI = (glNormalStream3bvATIPROC) extgl_GetProcAddress("glNormalStream3bvATI");
+ glNormalStream3sATI = (glNormalStream3sATIPROC) extgl_GetProcAddress("glNormalStream3sATI");
+ glNormalStream3svATI = (glNormalStream3svATIPROC) extgl_GetProcAddress("glNormalStream3svATI");
+ glNormalStream3iATI = (glNormalStream3iATIPROC) extgl_GetProcAddress("glNormalStream3iATI");
+ glNormalStream3ivATI = (glNormalStream3ivATIPROC) extgl_GetProcAddress("glNormalStream3ivATI");
+ glNormalStream3fATI = (glNormalStream3fATIPROC) extgl_GetProcAddress("glNormalStream3fATI");
+ glNormalStream3fvATI = (glNormalStream3fvATIPROC) extgl_GetProcAddress("glNormalStream3fvATI");
+ glNormalStream3dATI = (glNormalStream3dATIPROC) extgl_GetProcAddress("glNormalStream3dATI");
+ glNormalStream3dvATI = (glNormalStream3dvATIPROC) extgl_GetProcAddress("glNormalStream3dvATI");
+#endif
+}
+
+void extgl_InitATIElementArray()
+{
+#ifdef GL_ATI_element_array
+ if (!extgl_Extensions.ATI_element_array)
+ return;
+ glElementPointerATI = (glElementPointerATIPROC) extgl_GetProcAddress("glElementPointerATI");
+ glDrawElementArrayATI = (glDrawElementArrayATIPROC) extgl_GetProcAddress("glDrawElementArrayATI");
+ glDrawRangeElementArrayATI = (glDrawRangeElementArrayATIPROC) extgl_GetProcAddress("glDrawRangeElementArrayATI");
+#endif
+}
+
+void extgl_InitATIFragmentShader()
+{
+#ifdef GL_ATI_fragment_shader
+ if (!extgl_Extensions.ATI_fragment_shader)
+ return;
+ glGenFragmentShadersATI = (glGenFragmentShadersATIPROC) extgl_GetProcAddress("glGenFragmentShadersATI");
+ glBindFragmentShaderATI = (glBindFragmentShaderATIPROC) extgl_GetProcAddress("glBindFragmentShaderATI");
+ glDeleteFragmentShaderATI = (glDeleteFragmentShaderATIPROC) extgl_GetProcAddress("glDeleteFragmentShaderATI");
+ glBeginFragmentShaderATI = (glBeginFragmentShaderATIPROC) extgl_GetProcAddress("glBeginFragmentShaderATI");
+ glEndFragmentShaderATI = (glEndFragmentShaderATIPROC) extgl_GetProcAddress("glEndFragmentShaderATI");
+ glPassTexCoordATI = (glPassTexCoordATIPROC) extgl_GetProcAddress("glPassTexCoordATI");
+ glSampleMapATI = (glSampleMapATIPROC) extgl_GetProcAddress("glSampleMapATI");
+ glColorFragmentOp1ATI = (glColorFragmentOp1ATIPROC) extgl_GetProcAddress("glColorFragmentOp1ATI");
+ glColorFragmentOp2ATI = (glColorFragmentOp2ATIPROC) extgl_GetProcAddress("glColorFragmentOp2ATI");
+ glColorFragmentOp3ATI = (glColorFragmentOp3ATIPROC) extgl_GetProcAddress("glColorFragmentOp3ATI");
+ glAlphaFragmentOp1ATI = (glAlphaFragmentOp1ATIPROC) extgl_GetProcAddress("glAlphaFragmentOp1ATI");
+ glAlphaFragmentOp2ATI = (glAlphaFragmentOp2ATIPROC) extgl_GetProcAddress("glAlphaFragmentOp2ATI");
+ glAlphaFragmentOp3ATI = (glAlphaFragmentOp3ATIPROC) extgl_GetProcAddress("glAlphaFragmentOp3ATI");
+ glSetFragmentShaderConstantATI = (glSetFragmentShaderConstantATIPROC) extgl_GetProcAddress("glSetFragmentShaderConstantATI");
+#endif
+}
+
+
+void extgl_InitATIEnvmapBumpmap()
+{
+#ifdef GL_ATI_envmap_bumpmap
+ if (!extgl_Extensions.ATI_envmap_bumpmap)
+ return;
+ glTexBumpParameterivATI = (glTexBumpParameterivATIPROC) extgl_GetProcAddress("glTexBumpParameterivATI");
+ glTexBumpParameterfvATI = (glTexBumpParameterfvATIPROC) extgl_GetProcAddress("glTexBumpParameterfvATI");
+ glGetTexBumpParameterivATI = (glGetTexBumpParameterivATIPROC) extgl_GetProcAddress("glGetTexBumpParameterivATI");
+ glGetTexBumpParameterfvATI = (glGetTexBumpParameterfvATIPROC) extgl_GetProcAddress("glGetTexBumpParameterfvATI");
+#endif
+}
+
+void extgl_InitEXTVertexShader()
+{
+#ifdef GL_EXT_vertex_shader
+ if (!extgl_Extensions.EXT_vertex_shader)
+ return;
+ glBeginVertexShaderEXT = (glBeginVertexShaderEXTPROC) extgl_GetProcAddress("glBeginVertexShaderEXT");
+ glEndVertexShaderEXT = (glEndVertexShaderEXTPROC) extgl_GetProcAddress("glEndVertexShaderEXT");
+ glBindVertexShaderEXT = (glBindVertexShaderEXTPROC) extgl_GetProcAddress("glBindVertexShaderEXT");
+ glGenVertexShadersEXT = (glGenVertexShadersEXTPROC) extgl_GetProcAddress("glGenVertexShadersEXT");
+ glDeleteVertexShaderEXT = (glDeleteVertexShaderEXTPROC) extgl_GetProcAddress("glDeleteVertexShaderEXT");
+ glShaderOp1EXT = (glShaderOp1EXTPROC) extgl_GetProcAddress("glShaderOp1EXT");
+ glShaderOp2EXT = (glShaderOp2EXTPROC) extgl_GetProcAddress("glShaderOp2EXT");
+ glShaderOp3EXT = (glShaderOp3EXTPROC) extgl_GetProcAddress("glShaderOp3EXT");
+ glSwizzleEXT = (glSwizzleEXTPROC) extgl_GetProcAddress("glSwizzleEXT");
+ glWriteMaskEXT = (glWriteMaskEXTPROC) extgl_GetProcAddress("glWriteMaskEXT");
+ glInsertComponentEXT = (glInsertComponentEXTPROC) extgl_GetProcAddress("glInsertComponentEXT");
+ glExtractComponentEXT = (glExtractComponentEXTPROC) extgl_GetProcAddress("glExtractComponentEXT");
+ glGenSymbolsEXT = (glGenSymbolsEXTPROC) extgl_GetProcAddress("glGenSymbolsEXT");
+ glSetInvariantEXT = (glSetInvariantEXTPROC) extgl_GetProcAddress("glSetInvarianceEXT");
+ glSetLocalConstantEXT = (glSetLocalConstantEXTPROC) extgl_GetProcAddress("glSetLocalConstantEXT");
+ glVariantbvEXT = (glVariantbvEXTPROC) extgl_GetProcAddress("glVariantbvEXT");
+ glVariantsvEXT = (glVariantsvEXTPROC) extgl_GetProcAddress("glVariantsvEXT");
+ glVariantivEXT = (glVariantivEXTPROC) extgl_GetProcAddress("glVariantivEXT");
+ glVariantfvEXT = (glVariantfvEXTPROC) extgl_GetProcAddress("glVariantfvEXT");
+ glVariantdvEXT = (glVariantdvEXTPROC) extgl_GetProcAddress("glVariantdvEXT");
+ glVariantubvEXT = (glVariantubvEXTPROC) extgl_GetProcAddress("glVariantubvEXT");
+ glVariantusvEXT = (glVariantusvEXTPROC) extgl_GetProcAddress("glVariantusvEXT");
+ glVariantuivEXT = (glVariantuivEXTPROC) extgl_GetProcAddress("glVariantuivEXT");
+ glVariantPointerEXT = (glVariantPointerEXTPROC) extgl_GetProcAddress("glVariantPointerEXT");
+ glEnableVariantClientStateEXT = (glEnableVariantClientStateEXTPROC) extgl_GetProcAddress("glEnableVariantClientStateEXT");
+ glDisableVariantClientStateEXT = (glDisableVariantClientStateEXTPROC) extgl_GetProcAddress("glDisableVariantClientStateEXT");
+ glBindLightParameterEXT = (glBindLightParameterEXTPROC) extgl_GetProcAddress("glBindLightParameterEXT");
+ glBindMaterialParameterEXT = (glBindMaterialParameterEXTPROC) extgl_GetProcAddress("glBindMaterialParameterEXT");
+ glBindTexGenParameterEXT = (glBindTexGenParameterEXTPROC) extgl_GetProcAddress("glBindTexGenParameterEXT");
+ glBindTextureUnitParameterEXT = (glBindTextureUnitParameterEXTPROC) extgl_GetProcAddress("glBindTextureUnitParameterEXT");
+ glBindParameterEXT = (glBindParameterEXTPROC) extgl_GetProcAddress("glBindParameterEXT");
+ glIsVariantEnabledEXT = (glIsVariantEnabledEXTPROC) extgl_GetProcAddress("glIsVariantEnabledEXT");
+ glGetVariantBooleanvEXT = (glGetVariantBooleanvEXTPROC) extgl_GetProcAddress("glGetVariantBooleanvEXT");
+ glGetVariantIntegervEXT = (glGetVariantIntegervEXTPROC) extgl_GetProcAddress("glGetVariantIntegervEXT");
+ glGetVariantFloatvEXT = (glGetVariantFloatvEXTPROC) extgl_GetProcAddress("glGetVariantFloatvEXT");
+ glGetVariantPointervEXT = (glGetVariantPointervEXTPROC) extgl_GetProcAddress("glGetVariantPointervEXT");
+ glGetInvariantBooleanvEXT = (glGetInvariantBooleanvEXTPROC) extgl_GetProcAddress("glGetInvariantBooleanvEXT");
+ glGetInvariantIntegervEXT = (glGetInvariantIntegervEXTPROC) extgl_GetProcAddress("glGetInvariantIntegervEXT");
+ glGetInvariantFloatvEXT = (glGetInvariantFloatvEXTPROC) extgl_GetProcAddress("glGetInvariantFloatvEXT");
+ glGetLocalConstantBooleanvEXT = (glGetLocalConstantBooleanvEXTPROC) extgl_GetProcAddress("glGetLocalConstantBooleanvEXT");
+ glGetLocalConstantIntegervEXT = (glGetLocalConstantIntegervEXTPROC) extgl_GetProcAddress("glGetLocalConstantIntegervEXT");
+ glGetLocalConstantFloatvEXT = (glGetLocalConstantFloatvEXTPROC) extgl_GetProcAddress("glGetLocalConstantFloatvEXT");
+#endif
+}
+
+void extgl_InitARBMatrixPalette()
+{
+#ifdef GL_ARB_matrix_palette
+ if (!extgl_Extensions.ARB_matrix_palette)
+ return;
+ glCurrentPaletteMatrixARB = (glCurrentPaletteMatrixARBPROC) extgl_GetProcAddress("glCurrentPaletteMatrixARB");
+ glMatrixIndexubvARB = (glMatrixIndexubvARBPROC) extgl_GetProcAddress("glMatrixIndexubvARB");
+ glMatrixIndexusvARB = (glMatrixIndexusvARBPROC) extgl_GetProcAddress("glMatrixIndexusvARB");
+ glMatrixIndexuivARB = (glMatrixIndexuivARBPROC) extgl_GetProcAddress("glMatrixIndexuivARB");
+ glMatrixIndexPointerARB = (glMatrixIndexPointerARBPROC) extgl_GetProcAddress("glMatrixIndexPointerARB");
+#endif
+}
+
+void extgl_InitEXTMultiDrawArrays()
+{
+#ifdef GL_EXT_multi_draw_arrays
+ if (!extgl_Extensions.EXT_multi_draw_arrays)
+ return;
+ glMultiDrawArraysEXT = (glMultiDrawArraysEXTPROC) extgl_GetProcAddress("glMultiDrawArraysEXT");
+ glMultiDrawElementsEXT = (glMultiDrawElementsEXTPROC) extgl_GetProcAddress("glMultiDrawElementsEXT");
+#endif
+}
+
+void extgl_InitARBVertexBlend()
+{
+#ifdef GL_ARB_vertex_blend
+ if (!extgl_Extensions.ARB_vertex_blend)
+ return;
+ glWeightbvARB = (glWeightbvARBPROC) extgl_GetProcAddress("glWeightbvARB");
+ glWeightsvARB = (glWeightsvARBPROC) extgl_GetProcAddress("glWeightsvARB");
+ glWeightivARB = (glWeightivARBPROC) extgl_GetProcAddress("glWeightivARB");
+ glWeightfvARB = (glWeightfvARBPROC) extgl_GetProcAddress("glWeightfvARB");
+ glWeightdvARB = (glWeightdvARBPROC) extgl_GetProcAddress("glWeightdvARB");
+ glWeightubvARB = (glWeightubvARBPROC) extgl_GetProcAddress("glWeightubvARB");
+ glWeightusvARB = (glWeightusvARBPROC) extgl_GetProcAddress("glWeightusvARB");
+ glWeightuivARB = (glWeightuivARBPROC) extgl_GetProcAddress("glWeightuivARB");
+ glWeightPointerARB = (glWeightPointerARBPROC) extgl_GetProcAddress("glWeightPointerARB");
+ glVertexBlendARB = (glVertexBlendARBPROC) extgl_GetProcAddress("glVertexBlendARB");
+#endif
+}
+
+void extgl_InitARBPointParameters()
+{
+#ifdef GL_ARB_point_parameters
+ if (!extgl_Extensions.ARB_point_parameters)
+ return;
+ glPointParameterfARB = (glPointParameterfARBPROC) extgl_GetProcAddress("glPointParameterfARB");
+ glPointParameterfvARB = (glPointParameterfvARBPROC) extgl_GetProcAddress("glPointParameterfvARB");
+#endif
+}
+
+void extgl_InitATIPNTriangles()
+{
+#ifdef GL_ATI_pn_triangles
+ if (!extgl_Extensions.ATI_pn_triangles)
+ return;
+ glPNTrianglesiATI = (glPNTrianglesiATIPROC) extgl_GetProcAddress("glPNTrianglesiATI");
+ glPNTrianglesfATI = (glPNTrianglesfATIPROC) extgl_GetProcAddress("glPNTrianglesfATI");
+#endif
+}
+
+void extgl_InitNVEvaluators()
+{
+#ifdef GL_NV_evaluators
+ if (!extgl_Extensions.NV_evaluators)
+ return;
+ glMapControlPointsNV = (glMapControlPointsNVPROC) extgl_GetProcAddress("glMapControlPointsNV");
+ glMapParameterivNV = (glMapParameterivNVPROC) extgl_GetProcAddress("glMapParameterivNV");
+ glMapParameterfvNV = (glMapParameterfvNVPROC) extgl_GetProcAddress("glMapParameterfvNV");
+ glGetMapControlPointsNV = (glGetMapControlPointsNVPROC) extgl_GetProcAddress("glGetMapControlPointsNV");
+ glGetMapParameterivNV = (glGetMapParameterivNVPROC) extgl_GetProcAddress("glGetMapParameterivNV");
+ glGetMapParameterfvNV = (glGetMapParameterfvNVPROC) extgl_GetProcAddress("glGetMapParameterfvNV");
+ glGetMapAttribParameterivNV = (glGetMapAttribParameterivNVPROC) extgl_GetProcAddress("glGetMapAttribParameterivNV");
+ glGetMapAttribParameterfvNV = (glGetMapAttribParameterfvNVPROC) extgl_GetProcAddress("glGetMapAttribParameterfvNV");
+ glEvalMapsNV = (glEvalMapsNVPROC) extgl_GetProcAddress("glEvalMapsNV");
+#endif
+}
+
+void extgl_InitNVRegisterCombiners2()
+{
+#ifdef GL_NV_register_combiners
+ if (!extgl_Extensions.NV_register_combiners2)
+ return;
+ glCombinerStageParameterfvNV = (glCombinerStageParameterfvNVPROC) extgl_GetProcAddress("glCombinerStageParameterfvNV");
+ glGetCombinerStageParameterfvNV = (glGetCombinerStageParameterfvNVPROC) extgl_GetProcAddress("glGetCombinerStageParameterfvNV");
+#endif
+}
+
+void extgl_InitNVFence()
+{
+#ifdef GL_NV_fence
+ if (!extgl_Extensions.NV_fence)
+ return;
+ glGenFencesNV = (glGenFencesNVPROC) extgl_GetProcAddress("glGenFencesNV");
+ glDeleteFencesNV = (glDeleteFencesNVPROC) extgl_GetProcAddress("glDeleteFencesNV");
+ glSetFenceNV = (glSetFenceNVPROC) extgl_GetProcAddress("glSetFenceNV");
+ glTestFenceNV = (glTestFenceNVPROC) extgl_GetProcAddress("glTestFenceNV");
+ glFinishFenceNV = (glFinishFenceNVPROC) extgl_GetProcAddress("glFinishFenceNV");
+ glIsFenceNV = (glIsFenceNVPROC) extgl_GetProcAddress("glIsFenceNV");
+ glGetFenceivNV = (glGetFenceivNVPROC) extgl_GetProcAddress("glGetFenceivNV");
+#endif
+}
+
+void extgl_InitNVVertexProgram()
+{
+#ifdef GL_NV_vertex_program
+ if (!extgl_Extensions.NV_vertex_program)
+ return;
+ glBindProgramNV = (glBindProgramNVPROC) extgl_GetProcAddress("glBindProgramNV");
+ glDeleteProgramsNV = (glDeleteProgramsNVPROC) extgl_GetProcAddress("glDeleteProgramsNV");
+ glExecuteProgramNV = (glExecuteProgramNVPROC) extgl_GetProcAddress("glExecuteProgramNV");
+ glGenProgramsNV = (glGenProgramsNVPROC) extgl_GetProcAddress("glGenProgramsNV");
+ glAreProgramsResidentNV = (glAreProgramsResidentNVPROC) extgl_GetProcAddress("glAreProgramsResidentNV");
+ glRequestResidentProgramsNV = (glRequestResidentProgramsNVPROC) extgl_GetProcAddress("glRequestResidentProgramsNV");
+ glGetProgramParameterfvNV = (glGetProgramParameterfvNVPROC) extgl_GetProcAddress("glGetProgramParameterfvNV");
+ glGetProgramParameterdvNV = (glGetProgramParameterdvNVPROC) extgl_GetProcAddress("glGetProgramParameterdvNV");
+ glGetProgramivNV = (glGetProgramivNVPROC) extgl_GetProcAddress("glGetProgramivNV");
+ glGetProgramStringNV = (glGetProgramStringNVPROC) extgl_GetProcAddress("glGetProgramStringNV");
+ glGetTrackMatrixivNV = (glGetTrackMatrixivNVPROC) extgl_GetProcAddress("glGetTrackMatrixivNV");
+ glGetVertexAttribdvNV = (glGetVertexAttribdvNVPROC) extgl_GetProcAddress("glGetVertexAttribdvNV");
+ glGetVertexAttribfvNV = (glGetVertexAttribfvNVPROC) extgl_GetProcAddress("glGetVertexAttribfvNV");
+ glGetVertexAttribivNV = (glGetVertexAttribivNVPROC) extgl_GetProcAddress("glGetVertexAttribivNV");
+ glGetVertexAttribPointervNV = (glGetVertexAttribPointervNVPROC) extgl_GetProcAddress("glGetVertexAttribPointervNV");
+ glIsProgramNV = (glIsProgramNVPROC) extgl_GetProcAddress("glIsProgramNV");
+ glLoadProgramNV = (glLoadProgramNVPROC) extgl_GetProcAddress("glLoadProgramNV");
+ glProgramParameter4fNV = (glProgramParameter4fNVPROC) extgl_GetProcAddress("glProgramParameter4fNV");
+ glProgramParameter4dNV = (glProgramParameter4dNVPROC) extgl_GetProcAddress("glProgramParameter4dNV");
+ glProgramParameter4dvNV = (glProgramParameter4dvNVPROC) extgl_GetProcAddress("glProgramParameter4dvNV");
+ glProgramParameter4fvNV = (glProgramParameter4fvNVPROC) extgl_GetProcAddress("glProgramParameter4fvNV");
+ glProgramParameters4dvNV = (glProgramParameters4dvNVPROC) extgl_GetProcAddress("glProgramParameters4dvNV");
+ glProgramParameters4fvNV = (glProgramParameters4fvNVPROC) extgl_GetProcAddress("glProgramParameters4fvNV");
+ glTrackMatrixNV = (glTrackMatrixNVPROC) extgl_GetProcAddress("glTrackMatrixNV");
+ glVertexAttribPointerNV = (glVertexAttribPointerNVPROC) extgl_GetProcAddress("glVertexAttribPointerNV");
+ glVertexAttrib1sNV = (glVertexAttrib1sNVPROC) extgl_GetProcAddress("glVertexAttrib1sNV");
+ glVertexAttrib1fNV = (glVertexAttrib1fNVPROC) extgl_GetProcAddress("glVertexAttrib1fNV");
+ glVertexAttrib1dNV = (glVertexAttrib1dNVPROC) extgl_GetProcAddress("glVertexAttrib1dNV");
+ glVertexAttrib2sNV = (glVertexAttrib2sNVPROC) extgl_GetProcAddress("glVertexAttrib2sNV");
+ glVertexAttrib2fNV = (glVertexAttrib2fNVPROC) extgl_GetProcAddress("glVertexAttrib2fNV");
+ glVertexAttrib2dNV = (glVertexAttrib2dNVPROC) extgl_GetProcAddress("glVertexAttrib2dNV");
+ glVertexAttrib3sNV = (glVertexAttrib3sNVPROC) extgl_GetProcAddress("glVertexAttrib3sNV");
+ glVertexAttrib3fNV = (glVertexAttrib3fNVPROC) extgl_GetProcAddress("glVertexAttrib3fNV");
+ glVertexAttrib3dNV = (glVertexAttrib3dNVPROC) extgl_GetProcAddress("glVertexAttrib3dNV");
+ glVertexAttrib4sNV = (glVertexAttrib4sNVPROC) extgl_GetProcAddress("glVertexAttrib4sNV");
+ glVertexAttrib4fNV = (glVertexAttrib4fNVPROC) extgl_GetProcAddress("glVertexAttrib4fNV");
+ glVertexAttrib4dNV = (glVertexAttrib4dNVPROC) extgl_GetProcAddress("glVertexAttrib4dNV");
+ glVertexAttrib4ubNV = (glVertexAttrib4ubNVPROC) extgl_GetProcAddress("glVertexAttrib4ubNV");
+ glVertexAttrib1svNV = (glVertexAttrib1svNVPROC) extgl_GetProcAddress("glVertexAttrib1svNV");
+ glVertexAttrib1fvNV = (glVertexAttrib1fvNVPROC) extgl_GetProcAddress("glVertexAttrib1fvNV");
+ glVertexAttrib1dvNV = (glVertexAttrib1dvNVPROC) extgl_GetProcAddress("glVertexAttrib1dvNV");
+ glVertexAttrib2svNV = (glVertexAttrib2svNVPROC) extgl_GetProcAddress("glVertexAttrib2svNV");
+ glVertexAttrib2fvNV = (glVertexAttrib2fvNVPROC) extgl_GetProcAddress("glVertexAttrib2fvNV");
+ glVertexAttrib2dvNV = (glVertexAttrib2dvNVPROC) extgl_GetProcAddress("glVertexAttrib2dvNV");
+ glVertexAttrib3svNV = (glVertexAttrib3svNVPROC) extgl_GetProcAddress("glVertexAttrib3svNV");
+ glVertexAttrib3fvNV = (glVertexAttrib3fvNVPROC) extgl_GetProcAddress("glVertexAttrib3fvNV");
+ glVertexAttrib3dvNV = (glVertexAttrib3dvNVPROC) extgl_GetProcAddress("glVertexAttrib3dvNV");
+ glVertexAttrib4svNV = (glVertexAttrib4svNVPROC) extgl_GetProcAddress("glVertexAttrib4svNV");
+ glVertexAttrib4fvNV = (glVertexAttrib4fvNVPROC) extgl_GetProcAddress("glVertexAttrib4fvNV");
+ glVertexAttrib4dvNV = (glVertexAttrib4dvNVPROC) extgl_GetProcAddress("glVertexAttrib4dvNV");
+ glVertexAttrib4ubvNV = (glVertexAttrib4ubvNVPROC) extgl_GetProcAddress("glVertexAttrib4ubvNV");
+ glVertexAttribs1svNV = (glVertexAttribs1svNVPROC) extgl_GetProcAddress("glVertexAttribs1svNV");
+ glVertexAttribs1fvNV = (glVertexAttribs1fvNVPROC) extgl_GetProcAddress("glVertexAttribs1fvNV");
+ glVertexAttribs1dvNV = (glVertexAttribs1dvNVPROC) extgl_GetProcAddress("glVertexAttribs1dvNV");
+ glVertexAttribs2svNV = (glVertexAttribs2svNVPROC) extgl_GetProcAddress("glVertexAttribs2svNV");
+ glVertexAttribs2fvNV = (glVertexAttribs2fvNVPROC) extgl_GetProcAddress("glVertexAttribs2fvNV");
+ glVertexAttribs2dvNV = (glVertexAttribs2dvNVPROC) extgl_GetProcAddress("glVertexAttribs2dvNV");
+ glVertexAttribs3svNV = (glVertexAttribs3svNVPROC) extgl_GetProcAddress("glVertexAttribs3svNV");
+ glVertexAttribs3fvNV = (glVertexAttribs3fvNVPROC) extgl_GetProcAddress("glVertexAttribs3fvNV");
+ glVertexAttribs3dvNV = (glVertexAttribs3dvNVPROC) extgl_GetProcAddress("glVertexAttribs3dvNV");
+ glVertexAttribs4svNV = (glVertexAttribs4svNVPROC) extgl_GetProcAddress("glVertexAttribs4svNV");
+ glVertexAttribs4fvNV = (glVertexAttribs4fvNVPROC) extgl_GetProcAddress("glVertexAttribs4fvNV");
+ glVertexAttribs4dvNV = (glVertexAttribs4dvNVPROC) extgl_GetProcAddress("glVertexAttribs4dvNV");
+ glVertexAttribs4ubvNV = (glVertexAttribs4ubvNVPROC) extgl_GetProcAddress("glVertexAttribs4ubvNV");
+#endif
+}
+
+void extgl_InitEXTVertexWeighting()
+{
+#ifdef GL_EXT_vertex_weighting
+ if (!extgl_Extensions.EXT_vertex_weighting)
+ return;
+ glVertexWeightfEXT = (glVertexWeightfEXTPROC) extgl_GetProcAddress("glVertexWeightfEXT");
+ glVertexWeightfvEXT = (glVertexWeightfvEXTPROC) extgl_GetProcAddress("glVertexWeightfvEXT");
+ glVertexWeightPointerEXT = (glVertexWeightPointerEXTPROC) extgl_GetProcAddress("glVertexWeightPointerEXT");
+#endif
+}
+
+void extgl_InitARBMultisample()
+{
+#ifdef GL_ARB_multisample
+ if (!extgl_Extensions.ARB_multisample)
+ return;
+ glSampleCoverageARB = (glSampleCoverageARBPROC) extgl_GetProcAddress("glSampleCoverageARB");
+#endif
+}
+
+void extgl_InitNVRegisterCombiners()
+{
+#ifdef GL_NV_register_combiners
+ if (!extgl_Extensions.NV_register_combiners)
+ return;
+ glCombinerParameterfvNV = (glCombinerParameterfvNVPROC) extgl_GetProcAddress("glCombinerParameterfvNV");
+ glCombinerParameterfNV = (glCombinerParameterfNVPROC) extgl_GetProcAddress("glCombinerParameterfNV");
+ glCombinerParameterivNV = (glCombinerParameterivNVPROC) extgl_GetProcAddress("glCombinerParameterivNV");
+ glCombinerParameteriNV = (glCombinerParameteriNVPROC) extgl_GetProcAddress("glCombinerParameteriNV");
+ glCombinerInputNV = (glCombinerInputNVPROC) extgl_GetProcAddress("glCombinerInputNV");
+ glCombinerOutputNV = (glCombinerOutputNVPROC) extgl_GetProcAddress("glCombinerOutputNV");
+ glFinalCombinerInputNV = (glFinalCombinerInputNVPROC) extgl_GetProcAddress("glFinalCombinerInputNV");
+ glGetCombinerInputParameterfvNV = (glGetCombinerInputParameterfvNVPROC) extgl_GetProcAddress("glGetCombinerInputParameterfvNV");
+ glGetCombinerInputParameterivNV = (glGetCombinerInputParameterivNVPROC) extgl_GetProcAddress("glGetCombinerInputParameterivNV");
+ glGetCombinerOutputParameterfvNV = (glGetCombinerOutputParameterfvNVPROC) extgl_GetProcAddress("glGetCombinerOutputParameterfvNV");
+ glGetCombinerOutputParameterivNV = (glGetCombinerOutputParameterivNVPROC) extgl_GetProcAddress("glGetCombinerOutputParameterivNV");
+ glGetFinalCombinerInputParameterfvNV = (glGetFinalCombinerInputParameterfvNVPROC) extgl_GetProcAddress("glGetFinalCombinerInputParameterfvNV");
+ glGetFinalCombinerInputParameterivNV = (glGetFinalCombinerInputParameterivNVPROC) extgl_GetProcAddress("glGetFinalCombinerInputParameterivNV");
+#endif
+}
+
+void extgl_InitEXTPointParameters()
+{
+#ifdef GL_EXT_point_parameters
+ if (!extgl_Extensions.EXT_point_parameters)
+ return;
+ glPointParameterfEXT = (glPointParameterfEXTPROC) extgl_GetProcAddress("glPointParameterfEXT");
+ glPointParameterfvEXT = (glPointParameterfvEXTPROC) extgl_GetProcAddress("glPointParameterfvEXT");
+#endif
+}
+
+void extgl_InitNVVertexArrayRange()
+{
+#ifdef GL_NV_vertex_array_range
+ if (!extgl_Extensions.NV_vertex_array_range)
+ return;
+ glFlushVertexArrayRangeNV = (glFlushVertexArrayRangeNVPROC) extgl_GetProcAddress("glFlushVertexArrayRangeNV");
+ glVertexArrayRangeNV = (glVertexArrayRangeNVPROC) extgl_GetProcAddress("glVertexArrayRangeNV");
+#ifdef _WIN32
+ wglAllocateMemoryNV = (wglAllocateMemoryNVPROC) extgl_GetProcAddress("wglAllocateMemoryNV");
+ wglFreeMemoryNV = (wglFreeMemoryNVPROC) extgl_GetProcAddress("wglFreeMemoryNV");
+#else
+ glXAllocateMemoryNV = (glXAllocateMemoryNVPROC) extgl_GetProcAddress("glXAllocateMemoryNV");
+ glXFreeMemoryNV = (glXFreeMemoryNVPROC) extgl_GetProcAddress("glXFreeMemoryNV");
+#endif /* WIN32 */
+#endif
+}
+
+void extgl_InitEXTFogCoord()
+{
+#ifdef GL_EXT_fog_coord
+ if (!extgl_Extensions.EXT_fog_coord)
+ return;
+ glFogCoordfEXT = (glFogCoordfEXTPROC) extgl_GetProcAddress("glFogCoordfEXT");
+ glFogCoordfvEXT = (glFogCoordfvEXTPROC) extgl_GetProcAddress("glFogCoordfvEXT");
+ glFogCoorddEXT = (glFogCoorddEXTPROC) extgl_GetProcAddress("glFogCoorddEXT");
+ glFogCoorddvEXT = (glFogCoorddvEXTPROC) extgl_GetProcAddress("glFogCoorddvEXT");
+ glFogCoordPointerEXT = (glFogCoordPointerEXTPROC) extgl_GetProcAddress("glFogCoordPointerEXT");
+#endif
+}
+
+void extgl_InitEXTSecondaryColor()
+{
+#ifdef GL_EXT_secondary_color
+ if (!extgl_Extensions.EXT_secondary_color)
+ return;
+ glSecondaryColor3bEXT = (glSecondaryColor3bEXTPROC) extgl_GetProcAddress("glSecondaryColor3bEXT");
+ glSecondaryColor3bvEXT = (glSecondaryColor3bvEXTPROC) extgl_GetProcAddress("glSecondaryColor3bvEXT");
+ glSecondaryColor3dEXT = (glSecondaryColor3dEXTPROC) extgl_GetProcAddress("glSecondaryColor3dEXT");
+ glSecondaryColor3dvEXT = (glSecondaryColor3dvEXTPROC) extgl_GetProcAddress("glSecondaryColor3dvEXT");
+ glSecondaryColor3fEXT = (glSecondaryColor3fEXTPROC) extgl_GetProcAddress("glSecondaryColor3fEXT");
+ glSecondaryColor3fvEXT = (glSecondaryColor3fvEXTPROC) extgl_GetProcAddress("glSecondaryColor3fvEXT");
+ glSecondaryColor3iEXT = (glSecondaryColor3iEXTPROC) extgl_GetProcAddress("glSecondaryColor3iEXT");
+ glSecondaryColor3ivEXT = (glSecondaryColor3ivEXTPROC) extgl_GetProcAddress("glSecondaryColor3ivEXT");
+ glSecondaryColor3sEXT = (glSecondaryColor3sEXTPROC) extgl_GetProcAddress("glSecondaryColor3sEXT");
+ glSecondaryColor3svEXT = (glSecondaryColor3svEXTPROC) extgl_GetProcAddress("glSecondaryColor3svEXT");
+ glSecondaryColor3ubEXT = (glSecondaryColor3ubEXTPROC) extgl_GetProcAddress("glSecondaryColor3ubEXT");
+ glSecondaryColor3ubvEXT = (glSecondaryColor3ubvEXTPROC) extgl_GetProcAddress("glSecondaryColor3ubvEXT");
+ glSecondaryColor3uiEXT = (glSecondaryColor3uiEXTPROC) extgl_GetProcAddress("glSecondaryColor3uiEXT");
+ glSecondaryColor3uivEXT = (glSecondaryColor3uivEXTPROC) extgl_GetProcAddress("glSecondaryColor3uivEXT");
+ glSecondaryColor3usEXT = (glSecondaryColor3usEXTPROC) extgl_GetProcAddress("glSecondaryColor3usEXT");
+ glSecondaryColor3usvEXT = (glSecondaryColor3usvEXTPROC) extgl_GetProcAddress("glSecondaryColor3usvEXT");
+ glSecondaryColorPointerEXT = (glSecondaryColorPointerEXTPROC) extgl_GetProcAddress("glSecondaryColorPointerEXT");
+#endif
+}
+
+void extgl_InitEXTCompiledVertexArray()
+{
+#ifdef GL_EXT_compiled_vertex_array
+ if (!extgl_Extensions.EXT_compiled_vertex_array)
+ return;
+ glLockArraysEXT = (glLockArraysEXTPROC) extgl_GetProcAddress("glLockArraysEXT");
+ glUnlockArraysEXT = (glUnlockArraysEXTPROC) extgl_GetProcAddress("glUnlockArraysEXT");
+#endif
+}
+
+void extgl_InitARBTransposeMatrix()
+{
+#ifdef GL_ARB_transpose_matrix
+ if (!extgl_Extensions.ARB_transpose_matrix)
+ return;
+ glLoadTransposeMatrixfARB = (glLoadTransposeMatrixfARBPROC) extgl_GetProcAddress("glLoadTransposeMatrixfARB");
+ glLoadTransposeMatrixdARB = (glLoadTransposeMatrixdARBPROC) extgl_GetProcAddress("glLoadTransposeMatrixdARB");
+ glMultTransposeMatrixfARB = (glMultTransposeMatrixfARBPROC) extgl_GetProcAddress("glMultTransposeMatrixfARB");
+ glMultTransposeMatrixdARB = (glMultTransposeMatrixdARBPROC) extgl_GetProcAddress("glMultTransposeMatrixdARB");
+#endif
+}
+
+void extgl_InitEXTDrawRangeElements()
+{
+#ifdef GL_EXT_draw_range_elements
+ if (!extgl_Extensions.EXT_draw_range_elements)
+ return;
+ glDrawRangeElementsEXT = (glDrawRangeElementsEXTPROC) extgl_GetProcAddress("glDrawRangeElementsEXT");
+#endif
+}
+
+void extgl_InitARBMultitexture()
+{
+#ifdef _WIN32
+#ifdef GL_ARB_multitexture
+ if (!extgl_Extensions.ARB_multitexture)
+ return;
+ glActiveTextureARB = (glActiveTextureARBPROC) extgl_GetProcAddress("glActiveTextureARB");
+ glClientActiveTextureARB = (glClientActiveTextureARBPROC) extgl_GetProcAddress("glClientActiveTextureARB");
+
+ glMultiTexCoord1dARB = (glMultiTexCoord1dARBPROC) extgl_GetProcAddress("glMultiTexCoord1dARB");
+ glMultiTexCoord1dvARB = (glMultiTexCoord1dvARBPROC) extgl_GetProcAddress("glMultiTexCoord1dvARB");
+ glMultiTexCoord1fARB = (glMultiTexCoord1fARBPROC) extgl_GetProcAddress("glMultiTexCoord1fARB");
+ glMultiTexCoord1fvARB = (glMultiTexCoord1fvARBPROC) extgl_GetProcAddress("glMultiTexCoord1fvARB");
+ glMultiTexCoord1iARB = (glMultiTexCoord1iARBPROC) extgl_GetProcAddress("glMultiTexCoord1iARB");
+ glMultiTexCoord1ivARB = (glMultiTexCoord1ivARBPROC) extgl_GetProcAddress("glMultiTexCoord1ivARB");
+ glMultiTexCoord1sARB = (glMultiTexCoord1sARBPROC) extgl_GetProcAddress("glMultiTexCoord1sARB");
+ glMultiTexCoord1svARB = (glMultiTexCoord1svARBPROC) extgl_GetProcAddress("glMultiTexCoord1svARB");
+
+ glMultiTexCoord2dARB = (glMultiTexCoord2dARBPROC) extgl_GetProcAddress("glMultiTexCoord2dARB");
+ glMultiTexCoord2dvARB = (glMultiTexCoord2dvARBPROC) extgl_GetProcAddress("glMultiTexCoord2dvARB");
+ glMultiTexCoord2fARB = (glMultiTexCoord2fARBPROC) extgl_GetProcAddress("glMultiTexCoord2fARB");
+ glMultiTexCoord2fvARB = (glMultiTexCoord2fvARBPROC) extgl_GetProcAddress("glMultiTexCoord2fvARB");
+ glMultiTexCoord2iARB = (glMultiTexCoord2iARBPROC) extgl_GetProcAddress("glMultiTexCoord2iARB");
+ glMultiTexCoord2ivARB = (glMultiTexCoord2ivARBPROC) extgl_GetProcAddress("glMultiTexCoord2ivARB");
+ glMultiTexCoord2sARB = (glMultiTexCoord2sARBPROC) extgl_GetProcAddress("glMultiTexCoord2sARB");
+ glMultiTexCoord2svARB = (glMultiTexCoord2svARBPROC) extgl_GetProcAddress("glMultiTexCoord2svARB");
+
+ glMultiTexCoord3dARB = (glMultiTexCoord3dARBPROC) extgl_GetProcAddress("glMultiTexCoord3dARB");
+ glMultiTexCoord3dvARB = (glMultiTexCoord3dvARBPROC) extgl_GetProcAddress("glMultiTexCoord3dvARB");
+ glMultiTexCoord3fARB = (glMultiTexCoord3fARBPROC) extgl_GetProcAddress("glMultiTexCoord3fARB");
+ glMultiTexCoord3fvARB = (glMultiTexCoord3fvARBPROC) extgl_GetProcAddress("glMultiTexCoord3fvARB");
+ glMultiTexCoord3iARB = (glMultiTexCoord3iARBPROC) extgl_GetProcAddress("glMultiTexCoord3iARB");
+ glMultiTexCoord3ivARB = (glMultiTexCoord3ivARBPROC) extgl_GetProcAddress("glMultiTexCoord3ivARB");
+ glMultiTexCoord3sARB = (glMultiTexCoord3sARBPROC) extgl_GetProcAddress("glMultiTexCoord3sARB");
+ glMultiTexCoord3svARB = (glMultiTexCoord3svARBPROC) extgl_GetProcAddress("glMultiTexCoord3svARB");
+
+ glMultiTexCoord4dARB = (glMultiTexCoord4dARBPROC) extgl_GetProcAddress("glMultiTexCoord4dARB");
+ glMultiTexCoord4dvARB = (glMultiTexCoord4dvARBPROC) extgl_GetProcAddress("glMultiTexCoord4dvARB");
+ glMultiTexCoord4fARB = (glMultiTexCoord4fARBPROC) extgl_GetProcAddress("glMultiTexCoord4fARB");
+ glMultiTexCoord4fvARB = (glMultiTexCoord4fvARBPROC) extgl_GetProcAddress("glMultiTexCoord4fvARB");
+ glMultiTexCoord4iARB = (glMultiTexCoord4iARBPROC) extgl_GetProcAddress("glMultiTexCoord4iARB");
+ glMultiTexCoord4ivARB = (glMultiTexCoord4ivARBPROC) extgl_GetProcAddress("glMultiTexCoord4ivARB");
+ glMultiTexCoord4sARB = (glMultiTexCoord4sARBPROC) extgl_GetProcAddress("glMultiTexCoord4sARB");
+ glMultiTexCoord4svARB = (glMultiTexCoord4svARBPROC) extgl_GetProcAddress("glMultiTexCoord4svARB");
+#endif /* GL_ARB_multitexture */
+#endif /* WIN32 */
+}
+
+void extgl_InitOpenGL1_2()
+{
+#ifdef _WIN32
+#ifdef GL_VERSION_1_2
+ if (!extgl_Extensions.OpenGL12)
+ return;
+ glTexImage3D = (glTexImage3DPROC) extgl_GetProcAddress("glTexImage3D");
+ glTexSubImage3D = (glTexSubImage3DPROC) extgl_GetProcAddress("glTexSubImage3D");
+ glCopyTexSubImage3D = (glCopyTexSubImage3DPROC) extgl_GetProcAddress("glCopyTexSubImage3D");
+ glDrawRangeElements = (glDrawRangeElementsPROC) extgl_GetProcAddress("glDrawRangeElements");
+#endif /* GL_VERSION_1_2 */
+#endif /* WIN32 */
+}
+
+void extgl_InitARBImaging()
+{
+#ifdef _WIN32
+#ifdef GL_ARB_imaging
+ if (!extgl_Extensions.ARB_imaging)
+ return;
+ glBlendColor = (glBlendColorPROC) extgl_GetProcAddress("glBlendColor");
+ glBlendEquation = (glBlendEquationPROC) extgl_GetProcAddress("glBlendEquation");
+ glColorTable = (glColorTablePROC) extgl_GetProcAddress("glColorTable");
+ glColorTableParameterfv = (glColorTableParameterfvPROC) extgl_GetProcAddress("glColorTableParameterfv");
+ glColorTableParameteriv = (glColorTableParameterivPROC) extgl_GetProcAddress("glColorTableParameteriv");
+ glCopyColorTable = (glCopyColorTablePROC) extgl_GetProcAddress("glCopyColorTable");
+ glGetColorTable = (glGetColorTablePROC) extgl_GetProcAddress("glGetColorTable");
+ glGetColorTableParameterfv = (glGetColorTableParameterfvPROC) extgl_GetProcAddress("glGetColorTableParameterfv");
+ glGetColorTableParameteriv = (glGetColorTableParameterivPROC) extgl_GetProcAddress("glGetColorTableParameteriv");
+ glColorSubTable = (glColorSubTablePROC) extgl_GetProcAddress("glColorSubTable");
+ glCopyColorSubTable = (glCopyColorSubTablePROC) extgl_GetProcAddress("glCopyColorSubTable");
+ glConvolutionFilter1D = (glConvolutionFilter1DPROC) extgl_GetProcAddress("glConvolutionFilter1D");
+ glConvolutionFilter2D = (glConvolutionFilter2DPROC) extgl_GetProcAddress("glConvolutionFilter2D");
+ glConvolutionParameterf = (glConvolutionParameterfPROC) extgl_GetProcAddress("glConvolutionParameterf");
+ glConvolutionParameterfv = (glConvolutionParameterfvPROC) extgl_GetProcAddress("glConvolutionParameterfv");
+ glConvolutionParameteri = (glConvolutionParameteriPROC) extgl_GetProcAddress("glConvolutionParameteri");
+ glConvolutionParameteriv = (glConvolutionParameterivPROC) extgl_GetProcAddress("glConvolutionParameteriv");
+ glCopyConvolutionFilter1D = (glCopyConvolutionFilter1DPROC) extgl_GetProcAddress("glCopyConvolutionFilter1D");
+ glCopyConvolutionFilter2D = (glCopyConvolutionFilter2DPROC) extgl_GetProcAddress("glCopyConvolutionFilter2D");
+ glGetConvolutionFilter = (glGetConvolutionFilterPROC) extgl_GetProcAddress("glGetConvolutionFilter");
+ glGetConvolutionParameterfv = (glGetConvolutionParameterfvPROC) extgl_GetProcAddress("glGetConvolutionParameterfv");
+ glGetConvolutionParameteriv = (glGetConvolutionParameterivPROC) extgl_GetProcAddress("glGetConvolutionParameteriv");
+ glGetSeparableFilter = (glGetSeparableFilterPROC) extgl_GetProcAddress("glGetSeparableFilter");
+ glSeparableFilter2D = (glSeparableFilter2DPROC) extgl_GetProcAddress("glSeparableFilter2D");
+ glGetHistogram = (glGetHistogramPROC) extgl_GetProcAddress("glGetHistogram");
+ glGetHistogramParameterfv = (glGetHistogramParameterfvPROC) extgl_GetProcAddress("glGetHistogramParameterfv");
+ glGetHistogramParameteriv = (glGetHistogramParameterivPROC) extgl_GetProcAddress("glGetHistogramParameteriv");
+ glGetMinmax = (glGetMinmaxPROC) extgl_GetProcAddress("glGetMinmax");
+ glGetMinmaxParameterfv = (glGetMinmaxParameterfvPROC) extgl_GetProcAddress("glGetMinmaxParameterfv");
+ glGetMinmaxParameteriv = (glGetMinmaxParameterivPROC) extgl_GetProcAddress("glGetMinmaxParameteriv");
+ glHistogram = (glHistogramPROC) extgl_GetProcAddress("glHistogram");
+ glMinmax = (glMinmaxPROC) extgl_GetProcAddress("glMinmax");
+ glResetHistogram = (glResetHistogramPROC) extgl_GetProcAddress("glResetHistogram");
+ glResetMinmax = (glResetMinmaxPROC) extgl_GetProcAddress("glResetMinmax");
+#endif /* GL_ARB_imaging */
+#endif /* WIN32 */
+}
+
+void extgl_InitOpenGL1_3()
+{
+#ifdef _WIN32
+#ifdef GL_VERSION_1_3
+ if (!extgl_Extensions.OpenGL13)
+ return;
+ glActiveTexture = (glActiveTexturePROC) extgl_GetProcAddress("glActiveTexture");
+ glClientActiveTexture = (glClientActiveTexturePROC) extgl_GetProcAddress("glClientActiveTexture");
+
+ glMultiTexCoord1d = (glMultiTexCoord1dPROC) extgl_GetProcAddress("glMultiTexCoord1d");
+ glMultiTexCoord1dv = (glMultiTexCoord1dvPROC) extgl_GetProcAddress("glMultiTexCoord1dv");
+ glMultiTexCoord1f = (glMultiTexCoord1fPROC) extgl_GetProcAddress("glMultiTexCoord1f");
+ glMultiTexCoord1fv = (glMultiTexCoord1fvPROC) extgl_GetProcAddress("glMultiTexCoord1fv");
+ glMultiTexCoord1i = (glMultiTexCoord1iPROC) extgl_GetProcAddress("glMultiTexCoord1i");
+ glMultiTexCoord1iv = (glMultiTexCoord1ivPROC) extgl_GetProcAddress("glMultiTexCoord1iv");
+ glMultiTexCoord1s = (glMultiTexCoord1sPROC) extgl_GetProcAddress("glMultiTexCoord1s");
+ glMultiTexCoord1sv = (glMultiTexCoord1svPROC) extgl_GetProcAddress("glMultiTexCoord1sv");
+
+ glMultiTexCoord2d = (glMultiTexCoord2dPROC) extgl_GetProcAddress("glMultiTexCoord2d");
+ glMultiTexCoord2dv = (glMultiTexCoord2dvPROC) extgl_GetProcAddress("glMultiTexCoord2dv");
+ glMultiTexCoord2f = (glMultiTexCoord2fPROC) extgl_GetProcAddress("glMultiTexCoord2f");
+ glMultiTexCoord2fv = (glMultiTexCoord2fvPROC) extgl_GetProcAddress("glMultiTexCoord2fv");
+ glMultiTexCoord2i = (glMultiTexCoord2iPROC) extgl_GetProcAddress("glMultiTexCoord2i");
+ glMultiTexCoord2iv = (glMultiTexCoord2ivPROC) extgl_GetProcAddress("glMultiTexCoord2iv");
+ glMultiTexCoord2s = (glMultiTexCoord2sPROC) extgl_GetProcAddress("glMultiTexCoord2s");
+ glMultiTexCoord2sv = (glMultiTexCoord2svPROC) extgl_GetProcAddress("glMultiTexCoord2sv");
+
+ glMultiTexCoord3d = (glMultiTexCoord3dPROC) extgl_GetProcAddress("glMultiTexCoord3d");
+ glMultiTexCoord3dv = (glMultiTexCoord3dvPROC) extgl_GetProcAddress("glMultiTexCoord3dv");
+ glMultiTexCoord3f = (glMultiTexCoord3fPROC) extgl_GetProcAddress("glMultiTexCoord3f");
+ glMultiTexCoord3fv = (glMultiTexCoord3fvPROC) extgl_GetProcAddress("glMultiTexCoord3fv");
+ glMultiTexCoord3i = (glMultiTexCoord3iPROC) extgl_GetProcAddress("glMultiTexCoord3i");
+ glMultiTexCoord3iv = (glMultiTexCoord3ivPROC) extgl_GetProcAddress("glMultiTexCoord3iv");
+ glMultiTexCoord3s = (glMultiTexCoord3sPROC) extgl_GetProcAddress("glMultiTexCoord3s");
+ glMultiTexCoord3sv = (glMultiTexCoord3svPROC) extgl_GetProcAddress("glMultiTexCoord3sv");
+
+ glMultiTexCoord4d = (glMultiTexCoord4dPROC) extgl_GetProcAddress("glMultiTexCoord4d");
+ glMultiTexCoord4dv = (glMultiTexCoord4dvPROC) extgl_GetProcAddress("glMultiTexCoord4dv");
+ glMultiTexCoord4f = (glMultiTexCoord4fPROC) extgl_GetProcAddress("glMultiTexCoord4f");
+ glMultiTexCoord4fv = (glMultiTexCoord4fvPROC) extgl_GetProcAddress("glMultiTexCoord4fv");
+ glMultiTexCoord4i = (glMultiTexCoord4iPROC) extgl_GetProcAddress("glMultiTexCoord4i");
+ glMultiTexCoord4iv = (glMultiTexCoord4ivPROC) extgl_GetProcAddress("glMultiTexCoord4iv");
+ glMultiTexCoord4s = (glMultiTexCoord4sPROC) extgl_GetProcAddress("glMultiTexCoord4s");
+ glMultiTexCoord4sv = (glMultiTexCoord4svPROC) extgl_GetProcAddress("glMultiTexCoord4sv");
+
+ glLoadTransposeMatrixf = (glLoadTransposeMatrixfPROC) extgl_GetProcAddress("glLoadTransposeMatrixf");
+ glLoadTransposeMatrixd = (glLoadTransposeMatrixdPROC) extgl_GetProcAddress("glLoadTransposeMatrixd");
+ glMultTransposeMatrixf = (glMultTransposeMatrixfPROC) extgl_GetProcAddress("glMultTransposeMatrixf");
+ glMultTransposeMatrixd = (glMultTransposeMatrixdPROC) extgl_GetProcAddress("glMultTransposeMatrixd");
+ glCompressedTexImage3D = (glCompressedTexImage3DPROC) extgl_GetProcAddress("glCompressedTexImage3D");
+ glCompressedTexImage2D = (glCompressedTexImage2DPROC) extgl_GetProcAddress("glCompressedTexImage2D");
+ glCompressedTexImage1D = (glCompressedTexImage1DPROC) extgl_GetProcAddress("glCompressedTexImage1D");
+ glCompressedTexSubImage3D = (glCompressedTexSubImage3DPROC) extgl_GetProcAddress("glCompressedTexSubImage3D");
+ glCompressedTexSubImage2D = (glCompressedTexSubImage2DPROC) extgl_GetProcAddress("glCompressedTexSubImage2D");
+ glCompressedTexSubImage1D = (glCompressedTexSubImage1DPROC) extgl_GetProcAddress("glCompressedTexSubImage1D");
+ glGetCompressedTexImage = (glGetCompressedTexImagePROC) extgl_GetProcAddress("glGetCompressedTexImage");
+
+ glSampleCoverage = (glSampleCoveragePROC) extgl_GetProcAddress("glSampleCoverage");
+#endif /* GL_VERSION_1_3 */
+#endif /* WIN32 */
+}
+
+void extgl_InitOpenGL1_4()
+{
+#ifdef _WIN32
+#ifdef GL_VERSION_1_4
+ if (!extgl_Extensions.OpenGL14)
+ return;
+ glBlendColor = (glBlendColorPROC) extgl_GetProcAddress("glBlendColor");
+ glBlendEquation = (glBlendEquationPROC) extgl_GetProcAddress("glBlendEquation");
+ glFogCoordf = (glFogCoordfPROC) extgl_GetProcAddress("glFogCoordf");
+ glFogCoordfv = (glFogCoordfvPROC) extgl_GetProcAddress("glFogCoordfv");
+ glFogCoordd = (glFogCoorddPROC) extgl_GetProcAddress("glFogCoordd");
+ glFogCoorddv = (glFogCoorddvPROC) extgl_GetProcAddress("glFogCoorddv");
+ glFogCoordPointer = (glFogCoordPointerPROC) extgl_GetProcAddress("glFogCoordPointer");
+ glMultiDrawArrays = (glMultiDrawArraysPROC) extgl_GetProcAddress("glMultiDrawArrays");
+ glMultiDrawElements = (glMultiDrawElementsPROC) extgl_GetProcAddress("glMultiDrawElements");
+ glPointParameterf = (glPointParameterfPROC) extgl_GetProcAddress("glPointParameterf");
+ glPointParameterfv = (glPointParameterfvPROC) extgl_GetProcAddress("glPointParameterfv");
+ glSecondaryColor3b = (glSecondaryColor3bPROC) extgl_GetProcAddress("glSecondaryColor3b");
+ glSecondaryColor3bv = (glSecondaryColor3bvPROC) extgl_GetProcAddress("glSecondaryColor3bv");
+ glSecondaryColor3d = (glSecondaryColor3dPROC) extgl_GetProcAddress("glSecondaryColor3d");
+ glSecondaryColor3dv = (glSecondaryColor3dvPROC) extgl_GetProcAddress("glSecondaryColor3dv");
+ glSecondaryColor3f = (glSecondaryColor3fPROC) extgl_GetProcAddress("glSecondaryColor3f");
+ glSecondaryColor3fv = (glSecondaryColor3fvPROC) extgl_GetProcAddress("glSecondaryColor3fv");
+ glSecondaryColor3i = (glSecondaryColor3iPROC) extgl_GetProcAddress("glSecondaryColor3i");
+ glSecondaryColor3iv = (glSecondaryColor3ivPROC) extgl_GetProcAddress("glSecondaryColor3iv");
+ glSecondaryColor3s = (glSecondaryColor3sPROC) extgl_GetProcAddress("glSecondaryColor3s");
+ glSecondaryColor3sv = (glSecondaryColor3svPROC) extgl_GetProcAddress("glSecondaryColor3sv");
+ glSecondaryColor3ub = (glSecondaryColor3ubPROC) extgl_GetProcAddress("glSecondaryColor3ub");
+ glSecondaryColor3ubv = (glSecondaryColor3ubvPROC) extgl_GetProcAddress("glSecondaryColor3ubv");
+ glSecondaryColor3ui = (glSecondaryColor3uiPROC) extgl_GetProcAddress("glSecondaryColor3ui");
+ glSecondaryColor3uiv = (glSecondaryColor3uivPROC) extgl_GetProcAddress("glSecondaryColor3uiv");
+ glSecondaryColor3us = (glSecondaryColor3usPROC) extgl_GetProcAddress("glSecondaryColor3us");
+ glSecondaryColor3usv = (glSecondaryColor3usvPROC) extgl_GetProcAddress("glSecondaryColor3usv");
+ glSecondaryColorPointer = (glSecondaryColorPointerPROC) extgl_GetProcAddress("glSecondaryColorPointer");
+ glBlendFuncSeparate = (glBlendFuncSeparatePROC) extgl_GetProcAddress("glBlendFuncSeparate");
+ glWindowPos2d = (glWindowPos2dPROC) extgl_GetProcAddress("glWindowPos2d");
+ glWindowPos2f = (glWindowPos2fPROC) extgl_GetProcAddress("glWindowPos2f");
+ glWindowPos2i = (glWindowPos2iPROC) extgl_GetProcAddress("glWindowPos2i");
+ glWindowPos2s = (glWindowPos2sPROC) extgl_GetProcAddress("glWindowPos2s");
+ glWindowPos2dv = (glWindowPos2dvPROC) extgl_GetProcAddress("glWindowPos2dv");
+ glWindowPos2fv = (glWindowPos2fvPROC) extgl_GetProcAddress("glWindowPos2fv");
+ glWindowPos2iv = (glWindowPos2ivPROC) extgl_GetProcAddress("glWindowPos2iv");
+ glWindowPos2sv = (glWindowPos2svPROC) extgl_GetProcAddress("glWindowPos2sv");
+ glWindowPos3d = (glWindowPos3dPROC) extgl_GetProcAddress("glWindowPos3d");
+ glWindowPos3f = (glWindowPos3fPROC) extgl_GetProcAddress("glWindowPos3f");
+ glWindowPos3i = (glWindowPos3iPROC) extgl_GetProcAddress("glWindowPos3i");
+ glWindowPos3s = (glWindowPos3sPROC) extgl_GetProcAddress("glWindowPos3s");
+ glWindowPos3dv = (glWindowPos3dvPROC) extgl_GetProcAddress("glWindowPos3dv");
+ glWindowPos3fv = (glWindowPos3fvPROC) extgl_GetProcAddress("glWindowPos3fv");
+ glWindowPos3iv = (glWindowPos3ivPROC) extgl_GetProcAddress("glWindowPos3iv");
+ glWindowPos3sv = (glWindowPos3svPROC) extgl_GetProcAddress("glWindowPos3sv");
+#endif /* GL_VERSION_1_4 */
+#endif /* WIN32 */
+}
+
+void extgl_InitSupportedExtensions()
+{
+ char *s = (char*) glGetString(GL_VERSION);
+ if (!s)
+ return;
+ const char v[2]={s[0],'\0'};
+ int major = atoi(v);
+ if(atoi(v) >= 2){
+ extgl_Extensions.OpenGL12 = 1;
+ extgl_Extensions.OpenGL13 = 1;
+ extgl_Extensions.OpenGL14 = 1;
+ }else{
+ s = strstr(s, "1.");
+ }
+ if (s == NULL)
+ {
+ extgl_Extensions.OpenGL12 = 0;
+ extgl_Extensions.OpenGL13 = 0;
+ extgl_Extensions.OpenGL14 = 0;
+ }
+ else
+ {
+ extgl_Extensions.OpenGL12 = 0;
+ extgl_Extensions.OpenGL13 = 0;
+ extgl_Extensions.OpenGL14 = 0;
+
+ if( s[2] >= '4' )
+ {
+ extgl_Extensions.OpenGL12 = 1;
+ extgl_Extensions.OpenGL13 = 1;
+ extgl_Extensions.OpenGL14 = 1;
+ }
+ if( s[2] == '3' )
+ {
+ extgl_Extensions.OpenGL12 = 1;
+ extgl_Extensions.OpenGL13 = 1;
+ }
+ if( s[2] == '2' )
+ {
+ extgl_Extensions.OpenGL12 = 1;
+ }
+ }
+ extgl_Extensions.ARB_depth_texture = QueryExtension("GL_ARB_depth_texture");
+ extgl_Extensions.ARB_fragment_program = QueryExtension("GL_ARB_fragment_program");
+ extgl_Extensions.ARB_imaging = QueryExtension("GL_ARB_imaging");
+ extgl_Extensions.ARB_matrix_palette = QueryExtension("GL_ARB_matrix_palette");
+ extgl_Extensions.ARB_multisample = QueryExtension("GL_ARB_multisample");
+ extgl_Extensions.ARB_multitexture = QueryExtension("GL_ARB_multitexture");
+ extgl_Extensions.ARB_point_parameters = QueryExtension("GL_ARB_point_parameters");
+ extgl_Extensions.ARB_shadow = QueryExtension("GL_ARB_shadow");
+ extgl_Extensions.ARB_shadow_ambient = QueryExtension("GL_ARB_shadow_ambient");
+ extgl_Extensions.ARB_texture_border_clamp = QueryExtension("GL_ARB_texture_border_clamp");
+ extgl_Extensions.ARB_texture_compression = QueryExtension("GL_ARB_texture_compression");
+ extgl_Extensions.ARB_texture_cube_map = QueryExtension("GL_ARB_texture_cube_map");
+ extgl_Extensions.ARB_texture_env_add = QueryExtension("GL_ARB_texture_env_add");
+ extgl_Extensions.ARB_texture_env_combine = QueryExtension("GL_ARB_texture_env_combine");
+ extgl_Extensions.ARB_texture_env_crossbar = QueryExtension("GL_ARB_texture_env_crossbar");
+ extgl_Extensions.ARB_texture_env_dot3 = QueryExtension("GL_ARB_texture_env_dot3");
+ extgl_Extensions.ARB_texture_mirrored_repeat = QueryExtension("GL_ARB_texture_mirrored_repeat");
+ extgl_Extensions.ARB_transpose_matrix = QueryExtension("GL_ARB_transpose_matrix");
+ extgl_Extensions.ARB_vertex_blend = QueryExtension("GL_ARB_vertex_blend");
+ extgl_Extensions.ARB_vertex_program = QueryExtension("GL_ARB_vertex_program");
+ extgl_Extensions.ARB_window_pos = QueryExtension("GL_ARB_window_pos");
+ extgl_Extensions.EXT_abgr = QueryExtension("GL_EXT_abgr");
+ extgl_Extensions.EXT_bgra = QueryExtension("GL_EXT_bgra");
+ extgl_Extensions.EXT_blend_func_separate = QueryExtension("GL_EXT_blend_function_separate");
+ extgl_Extensions.EXT_compiled_vertex_array = QueryExtension("GL_EXT_compiled_vertex_array");
+ extgl_Extensions.EXT_cull_vertex = QueryExtension("GL_EXT_cull_vertex");
+ extgl_Extensions.EXT_draw_range_elements = QueryExtension("GL_EXT_draw_range_elements");
+ extgl_Extensions.EXT_fog_coord = QueryExtension("GL_EXT_fog_coord");
+ extgl_Extensions.EXT_multi_draw_arrays = QueryExtension("GL_EXT_multi_draw_arrays");
+ extgl_Extensions.EXT_point_parameters = QueryExtension("GL_EXT_point_parameters");
+ extgl_Extensions.EXT_secondary_color = QueryExtension("GL_EXT_secondary_color");
+ extgl_Extensions.EXT_separate_specular_color = QueryExtension("GL_EXT_separate_specular_color");
+ extgl_Extensions.EXT_shadow_funcs = QueryExtension("GL_EXT_shadow_funcs");
+ extgl_Extensions.EXT_stencil_two_side = QueryExtension("GL_EXT_stencil_two_side");
+ extgl_Extensions.EXT_stencil_wrap = QueryExtension("GL_EXT_stencil_wrap");
+ extgl_Extensions.EXT_texture_compression_s3tc = QueryExtension("GL_EXT_texture_compression_s3tc");
+ extgl_Extensions.EXT_texture_env_combine = QueryExtension("GL_EXT_texture_env_combine");
+ extgl_Extensions.EXT_texture_filter_anisotropic = QueryExtension("GL_EXT_texture_filter_anisotropic");
+ extgl_Extensions.EXT_texture_lod_bias = QueryExtension("GL_EXT_texture_lod_bias");
+ extgl_Extensions.EXT_texture_rectangle = QueryExtension("GL_EXT_texture_rectangle"); // added -ec
+ extgl_Extensions.EXT_vertex_shader = QueryExtension("GL_EXT_vertex_shader");
+ extgl_Extensions.EXT_vertex_weighting = QueryExtension("GL_EXT_vertex_weighting");
+ extgl_Extensions.ATI_draw_buffers = QueryExtension("GL_ATI_draw_buffers"); // added -ec
+ extgl_Extensions.ATI_element_array = QueryExtension("GL_ATI_element_array");
+ extgl_Extensions.ATI_envmap_bumpmap = QueryExtension("GL_ATI_envmap_bumpmap");
+ extgl_Extensions.ATI_fragment_shader = QueryExtension("GL_ATI_fragment_shader");
+ extgl_Extensions.ATI_pn_triangles = QueryExtension("GL_ATI_pn_triangles");
+ extgl_Extensions.ATI_point_cull_mode = QueryExtension("GL_ATI_point_cull_mode");
+ extgl_Extensions.ATI_text_fragment_shader = QueryExtension("GL_ATI_text_fragment_shader");
+ extgl_Extensions.ATI_texture_float = QueryExtension("GL_ATI_texture_float"); // added -ec
+ extgl_Extensions.ATI_texture_mirror_once = QueryExtension("GL_ATI_texture_mirror_once");
+ extgl_Extensions.ATI_vertex_array_object = QueryExtension("GL_ATI_vertex_array_object");
+ extgl_Extensions.ATI_vertex_streams = QueryExtension("GL_ATI_vertex_streams");
+ extgl_Extensions.ATIX_point_sprites = QueryExtension("GL_ATIX_point_sprites");
+ extgl_Extensions.ATIX_texture_env_route = QueryExtension("GL_ATIX_texture_env_route");
+ extgl_Extensions.HP_occlusion_test = QueryExtension("GL_HP_occlusion_test");
+ extgl_Extensions.NV_blend_square = QueryExtension("GL_NV_blend_square");
+ extgl_Extensions.NV_copy_depth_to_color = QueryExtension("GL_NV_copy_depth_to_color");
+ extgl_Extensions.NV_depth_clamp = QueryExtension("GL_NV_depth_clamp");
+ extgl_Extensions.NV_element_array = QueryExtension("GL_NV_element_array");
+ extgl_Extensions.NV_evaluators = QueryExtension("GL_NV_evaluators");
+ extgl_Extensions.NV_fence = QueryExtension("GL_NV_fence");
+ extgl_Extensions.NV_float_buffer = QueryExtension("GL_NV_float_buffer");
+ extgl_Extensions.NV_fog_distance = QueryExtension("GL_NV_fog_distance");
+ extgl_Extensions.NV_fragment_program = QueryExtension("GL_NV_fragment_program");
+ extgl_Extensions.NV_light_max_exponent = QueryExtension("GL_NV_light_max_exponent");
+ extgl_Extensions.NV_occlusion_query = QueryExtension("GL_NV_occlusion_query");
+ extgl_Extensions.NV_packed_depth_stencil = QueryExtension("GL_NV_packed_depth_stencil");
+ extgl_Extensions.NV_point_sprite = QueryExtension("GL_NV_point_sprite");
+ extgl_Extensions.NV_primitive_restart = QueryExtension("GL_NV_primitive_restart");
+ extgl_Extensions.NV_register_combiners = QueryExtension("GL_NV_register_combiners");
+ extgl_Extensions.NV_register_combiners2 = QueryExtension("GL_NV_register_combiners2");
+ extgl_Extensions.NV_texgen_reflection = QueryExtension("GL_NV_texgen_reflection");
+ extgl_Extensions.NV_texture_env_combine4 = QueryExtension("GL_NV_texture_env_combine4");
+ extgl_Extensions.NV_texture_rectangle = QueryExtension("GL_NV_texture_rectangle");
+ extgl_Extensions.NV_texture_shader = QueryExtension("GL_NV_texture_shader");
+ extgl_Extensions.NV_texture_shader2 = QueryExtension("GL_NV_texture_shader2");
+ extgl_Extensions.NV_texture_shader3 = QueryExtension("GL_NV_texture_shader3");
+ extgl_Extensions.NV_vertex_array_range = QueryExtension("GL_NV_vertex_array_range");
+ extgl_Extensions.NV_vertex_array_range2 = QueryExtension("GL_NV_vertex_array_range2");
+ extgl_Extensions.NV_vertex_program = QueryExtension("GL_NV_vertex_program");
+ extgl_Extensions.NV_vertex_program1_1 = QueryExtension("GL_NV_vertex_program1_1");
+ extgl_Extensions.NV_vertex_program2 = QueryExtension("GL_NV_vertex_program2");
+ extgl_Extensions.SGIS_generate_mipmap = QueryExtension("GL_SGIS_generate_mipmap");
+ extgl_Extensions.SGIX_depth_texture = QueryExtension("GL_SGIX_depth_texture");
+ extgl_Extensions.SGIX_shadow = QueryExtension("GL_SGIX_shadow");
+}
+
+
+/* extgl_Init the extensions and load all the functions */
+int extgl_Initialize()
+{
+ extgl_error = 0;
+ extgl_InitSupportedExtensions();
+
+ /* first load the etensions */
+ extgl_InitARBTransposeMatrix();
+ extgl_InitARBMultisample();
+ extgl_InitEXTCompiledVertexArray();
+ extgl_InitEXTSecondaryColor();
+ extgl_InitEXTFogCoord();
+ extgl_InitNVVertexArrayRange();
+ extgl_InitEXTPointParameters();
+ extgl_InitNVRegisterCombiners();
+ extgl_InitEXTVertexWeighting();
+ extgl_InitNVVertexProgram();
+ extgl_InitNVFence();
+ extgl_InitNVRegisterCombiners2();
+ extgl_InitATIPNTriangles();
+ extgl_InitARBPointParameters();
+ extgl_InitARBVertexBlend();
+ extgl_InitEXTMultiDrawArrays();
+ extgl_InitARBMatrixPalette();
+ extgl_InitEXTVertexShader();
+ extgl_InitATIEnvmapBumpmap();
+ extgl_InitATIFragmentShader();
+ extgl_InitATIElementArray();
+ extgl_InitATIVertexStreams();
+ extgl_InitATIVertexArrayObject();
+ extgl_InitNVOcclusionQuery();
+ extgl_InitNVPointSprite();
+ extgl_InitARBWindowPos();
+ extgl_InitARBTextureCompression();
+ extgl_InitEXTDrawRangeElements();
+ extgl_InitEXTStencilTwoSide();
+ extgl_InitARBVertexProgram();
+ extgl_InitEXTCullVertex();
+ extgl_InitEXTBlendFuncSeparate();
+ extgl_InitARBImaging();
+ extgl_InitARBMultitexture();
+ extgl_InitNVElementArray();
+ extgl_InitNVFragmentProgram();
+ extgl_InitNVPrimitiveRestart();
+ extgl_InitARBFragmentProgram();
+ extgl_InitATIDrawBuffers();
+
+ /* now load core opengl */
+ extgl_InitOpenGL1_2();
+ extgl_InitOpenGL1_3();
+ extgl_InitOpenGL1_4();
+
+ /* load WGL extensions */
+#ifdef _WIN32
+ extgl_InitializeWGL();
+#endif
+
+ SupportedExtensions = extgl_Extensions;
+ return extgl_error;
+}
+
+/* deprecated function please do not use it, use extgl_Initialize() instead */
+int glInitialize()
+{
+ return extgl_Initialize();
+}
+
+/* turn on the warning for the borland compiler*/
+#ifdef __BORLANDC__
+#pragma warn .8064
+#pragma warn .8065
+#endif /* __BORLANDC__ */