Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members

glext.cpp

Go to the documentation of this file.
00001 // glext.cpp
00002 //
00003 // Copyright (C) 2001, Chris Laurel <claurel@shatters.net>
00004 //
00005 // This program is free software; you can redistribute it and/or
00006 // modify it under the terms of the GNU General Public License
00007 // as published by the Free Software Foundation; either version 2
00008 // of the License, or (at your option) any later version.
00009 
00010 #include <string.h>
00011 #include "gl.h"
00012 
00013 #ifndef _WIN32
00014 // Assume that this is a UNIX/X11 system if it's not Windows or Mac OS X.
00015 #ifndef MACOSX
00016 #include "GL/glx.h"
00017 #include <dlfcn.h>
00018 #endif /* ! MACOSX */
00019 #endif /* ! _WIN32 */
00020 
00021 #include "glext.h"
00022 
00023 // ARB_texture_compression
00024 glx::PFNGLCOMPRESSEDTEXIMAGE3DARBPROC glx::glCompressedTexImage3DARB;
00025 glx::PFNGLCOMPRESSEDTEXIMAGE2DARBPROC glx::glCompressedTexImage2DARB;
00026 glx::PFNGLCOMPRESSEDTEXIMAGE1DARBPROC glx::glCompressedTexImage1DARB;
00027 glx::PFNGLCOMPRESSEDTEXSUBIMAGE3DARBPROC glx::glCompressedTexSubImage3DARB;
00028 glx::PFNGLCOMPRESSEDTEXSUBIMAGE2DARBPROC glx::glCompressedTexSubImage2DARB;
00029 glx::PFNGLCOMPRESSEDTEXSUBIMAGE1DARBPROC glx::glCompressedTexSubImage1DARB;
00030 
00031 // ARB_multitexture command function pointers
00032 glx::PFNGLMULTITEXCOORD2IARBPROC glx::glMultiTexCoord2iARB;
00033 glx::PFNGLMULTITEXCOORD2FARBPROC glx::glMultiTexCoord2fARB;
00034 glx::PFNGLMULTITEXCOORD3FARBPROC glx::glMultiTexCoord3fARB;
00035 glx::PFNGLMULTITEXCOORD3FVARBPROC glx::glMultiTexCoord3fvARB;
00036 glx::PFNGLACTIVETEXTUREARBPROC glx::glActiveTextureARB;
00037 glx::PFNGLCLIENTACTIVETEXTUREARBPROC glx::glClientActiveTextureARB;
00038 
00039 // NV_register_combiners command function pointers
00040 glx::PFNGLCOMBINERPARAMETERFVNVPROC glx::glCombinerParameterfvNV;
00041 glx::PFNGLCOMBINERPARAMETERIVNVPROC glx::glCombinerParameterivNV;
00042 glx::PFNGLCOMBINERPARAMETERFNVPROC glx::glCombinerParameterfNV;
00043 glx::PFNGLCOMBINERPARAMETERINVPROC glx::glCombinerParameteriNV;
00044 glx::PFNGLCOMBINERINPUTNVPROC glx::glCombinerInputNV;
00045 glx::PFNGLCOMBINEROUTPUTNVPROC glx::glCombinerOutputNV;
00046 glx::PFNGLFINALCOMBINERINPUTNVPROC glx::glFinalCombinerInputNV;
00047 glx::PFNGLGETCOMBINERINPUTPARAMETERFVNVPROC glx::glGetCombinerInputParameterfvNV;
00048 glx::PFNGLGETCOMBINERINPUTPARAMETERIVNVPROC glx::glGetCombinerInputParameterivNV;
00049 glx::PFNGLGETCOMBINEROUTPUTPARAMETERFVNVPROC glx::glGetCombinerOutputParameterfvNV;
00050 glx::PFNGLGETCOMBINEROUTPUTPARAMETERIVNVPROC glx::glGetCombinerOutputParameterivNV;
00051 glx::PFNGLGETFINALCOMBINERINPUTPARAMETERFVNVPROC glx::glGetFinalCombinerInputParameterfvNV;
00052 glx::PFNGLGETFINALCOMBINERINPUTPARAMETERIVNVPROC glx::glGetFinalCombinerInputParameterivNV;
00053 
00054 // NV_register_combiners2 command function pointers
00055 glx::PFNGLCOMBINERSTAGEPARAMETERFVNVPROC glx::glCombinerStageParameterfvNV;
00056 glx::PFNGLGETCOMBINERSTAGEPARAMETERFVNVPROC glx::glGetCombinerStageParameterfvNV;
00057 
00058 // NV_vertex_program function pointers
00059 glx::PFNGLAREPROGRAMSRESIDENTNVPROC glx::glAreProgramsResidentNV ;
00060 glx::PFNGLBINDPROGRAMNVPROC glx::glBindProgramNV ;
00061 glx::PFNGLDELETEPROGRAMSNVPROC glx::glDeleteProgramsNV ;
00062 glx::PFNGLEXECUTEPROGRAMNVPROC glx::glExecuteProgramNV ;
00063 glx::PFNGLGENPROGRAMSNVPROC glx::glGenProgramsNV ;
00064 glx::PFNGLGETPROGRAMPARAMETERDVNVPROC glx::glGetProgramParameterdvNV ;
00065 glx::PFNGLGETPROGRAMPARAMETERFVNVPROC glx::glGetProgramParameterfvNV ;
00066 glx::PFNGLGETPROGRAMIVNVPROC glx::glGetProgramivNV ;
00067 glx::PFNGLGETPROGRAMSTRINGNVPROC glx::glGetProgramStringNV ;
00068 glx::PFNGLGETTRACKMATRIXIVNVPROC glx::glGetTrackMatrixivNV ;
00069 glx::PFNGLGETVERTEXATTRIBDVNVPROC glx::glGetVertexAttribdvNV ;
00070 glx::PFNGLGETVERTEXATTRIBFVNVPROC glx::glGetVertexAttribfvNV ;
00071 glx::PFNGLGETVERTEXATTRIBIVNVPROC glx::glGetVertexAttribivNV ;
00072 glx::PFNGLGETVERTEXATTRIBPOINTERVNVPROC glx::glGetVertexAttribPointervNV ;
00073 glx::PFNGLISPROGRAMNVPROC glx::glIsProgramNV ;
00074 glx::PFNGLLOADPROGRAMNVPROC glx::glLoadProgramNV ;
00075 glx::PFNGLPROGRAMPARAMETER4DNVPROC glx::glProgramParameter4dNV ;
00076 glx::PFNGLPROGRAMPARAMETER4DVNVPROC glx::glProgramParameter4dvNV ;
00077 glx::PFNGLPROGRAMPARAMETER4FNVPROC glx::glProgramParameter4fNV ;
00078 glx::PFNGLPROGRAMPARAMETER4FVNVPROC glx::glProgramParameter4fvNV ;
00079 glx::PFNGLPROGRAMPARAMETERS4DVNVPROC glx::glProgramParameters4dvNV ;
00080 glx::PFNGLPROGRAMPARAMETERS4FVNVPROC glx::glProgramParameters4fvNV ;
00081 glx::PFNGLREQUESTRESIDENTPROGRAMSNVPROC glx::glRequestResidentProgramsNV ;
00082 glx::PFNGLTRACKMATRIXNVPROC glx::glTrackMatrixNV ;
00083 glx::PFNGLVERTEXATTRIBPOINTERNVPROC glx::glVertexAttribPointerNV ;
00084 glx::PFNGLVERTEXATTRIB1DNVPROC glx::glVertexAttrib1dNV ;
00085 glx::PFNGLVERTEXATTRIB1DVNVPROC glx::glVertexAttrib1dvNV ;
00086 glx::PFNGLVERTEXATTRIB1FNVPROC glx::glVertexAttrib1fNV ;
00087 glx::PFNGLVERTEXATTRIB1FVNVPROC glx::glVertexAttrib1fvNV ;
00088 glx::PFNGLVERTEXATTRIB1SNVPROC glx::glVertexAttrib1sNV ;
00089 glx::PFNGLVERTEXATTRIB1SVNVPROC glx::glVertexAttrib1svNV ;
00090 glx::PFNGLVERTEXATTRIB2DNVPROC glx::glVertexAttrib2dNV ;
00091 glx::PFNGLVERTEXATTRIB2DVNVPROC glx::glVertexAttrib2dvNV ;
00092 glx::PFNGLVERTEXATTRIB2FNVPROC glx::glVertexAttrib2fNV ;
00093 glx::PFNGLVERTEXATTRIB2FVNVPROC glx::glVertexAttrib2fvNV ;
00094 glx::PFNGLVERTEXATTRIB2SNVPROC glx::glVertexAttrib2sNV ;
00095 glx::PFNGLVERTEXATTRIB2SVNVPROC glx::glVertexAttrib2svNV ;
00096 glx::PFNGLVERTEXATTRIB3DNVPROC glx::glVertexAttrib3dNV ;
00097 glx::PFNGLVERTEXATTRIB3DVNVPROC glx::glVertexAttrib3dvNV ;
00098 glx::PFNGLVERTEXATTRIB3FNVPROC glx::glVertexAttrib3fNV ;
00099 glx::PFNGLVERTEXATTRIB3FVNVPROC glx::glVertexAttrib3fvNV ;
00100 glx::PFNGLVERTEXATTRIB3SNVPROC glx::glVertexAttrib3sNV ;
00101 glx::PFNGLVERTEXATTRIB3SVNVPROC glx::glVertexAttrib3svNV ;
00102 glx::PFNGLVERTEXATTRIB4DNVPROC glx::glVertexAttrib4dNV ;
00103 glx::PFNGLVERTEXATTRIB4DVNVPROC glx::glVertexAttrib4dvNV ;
00104 glx::PFNGLVERTEXATTRIB4FNVPROC glx::glVertexAttrib4fNV ;
00105 glx::PFNGLVERTEXATTRIB4FVNVPROC glx::glVertexAttrib4fvNV ;
00106 glx::PFNGLVERTEXATTRIB4SNVPROC glx::glVertexAttrib4sNV ;
00107 glx::PFNGLVERTEXATTRIB4SVNVPROC glx::glVertexAttrib4svNV ;
00108 glx::PFNGLVERTEXATTRIB4UBVNVPROC glx::glVertexAttrib4ubvNV ;
00109 glx::PFNGLVERTEXATTRIBS1DVNVPROC glx::glVertexAttribs1dvNV ;
00110 glx::PFNGLVERTEXATTRIBS1FVNVPROC glx::glVertexAttribs1fvNV ;
00111 glx::PFNGLVERTEXATTRIBS1SVNVPROC glx::glVertexAttribs1svNV ;
00112 glx::PFNGLVERTEXATTRIBS2DVNVPROC glx::glVertexAttribs2dvNV ;
00113 glx::PFNGLVERTEXATTRIBS2FVNVPROC glx::glVertexAttribs2fvNV ;
00114 glx::PFNGLVERTEXATTRIBS2SVNVPROC glx::glVertexAttribs2svNV ;
00115 glx::PFNGLVERTEXATTRIBS3DVNVPROC glx::glVertexAttribs3dvNV ;
00116 glx::PFNGLVERTEXATTRIBS3FVNVPROC glx::glVertexAttribs3fvNV ;
00117 glx::PFNGLVERTEXATTRIBS3SVNVPROC glx::glVertexAttribs3svNV ;
00118 glx::PFNGLVERTEXATTRIBS4DVNVPROC glx::glVertexAttribs4dvNV ;
00119 glx::PFNGLVERTEXATTRIBS4FVNVPROC glx::glVertexAttribs4fvNV ;
00120 glx::PFNGLVERTEXATTRIBS4SVNVPROC glx::glVertexAttribs4svNV ;
00121 glx::PFNGLVERTEXATTRIBS4UBVNVPROC glx::glVertexAttribs4ubvNV ;
00122 
00123 // EXT_paletted_texture command function pointers
00124 glx::PFNGLCOLORTABLEEXTPROC glx::glColorTableEXT;
00125 
00126 // EXT_blend_minmax command function pointers
00127 glx::PFNGLBLENDEQUATIONEXTPROC glx::glBlendEquationEXT;
00128 
00129 // WGL_EXT_swap_control command function pointers
00130 glx::PFNWGLSWAPINTERVALEXTPROC glx::wglSwapIntervalEXT;
00131 glx::PFNWGLGETSWAPINTERVALEXTPROC glx::wglGetSwapIntervalEXT;
00132 
00133 // ARB_vertex_program function pointers
00134 glx::PFNGLBINDPROGRAMARBPROC glx::glBindProgramARB;
00135 glx::PFNGLDELETEPROGRAMSARBPROC glx::glDeleteProgramsARB;
00136 glx::PFNGLGENPROGRAMSARBPROC glx::glGenProgramsARB;
00137 glx::PFNGLISPROGRAMARBPROC glx::glIsProgramARB;
00138 glx::PFNGLVERTEXATTRIB1SARBPROC glx::glVertexAttrib1sARB;
00139 glx::PFNGLVERTEXATTRIB1FARBPROC glx::glVertexAttrib1fARB;
00140 glx::PFNGLVERTEXATTRIB1DARBPROC glx::glVertexAttrib1dARB;
00141 glx::PFNGLVERTEXATTRIB2SARBPROC glx::glVertexAttrib2sARB;
00142 glx::PFNGLVERTEXATTRIB2FARBPROC glx::glVertexAttrib2fARB;
00143 glx::PFNGLVERTEXATTRIB2DARBPROC glx::glVertexAttrib2dARB;
00144 glx::PFNGLVERTEXATTRIB3SARBPROC glx::glVertexAttrib3sARB;
00145 glx::PFNGLVERTEXATTRIB3FARBPROC glx::glVertexAttrib3fARB;
00146 glx::PFNGLVERTEXATTRIB3DARBPROC glx::glVertexAttrib3dARB;
00147 glx::PFNGLVERTEXATTRIB4SARBPROC glx::glVertexAttrib4sARB;
00148 glx::PFNGLVERTEXATTRIB4FARBPROC glx::glVertexAttrib4fARB;
00149 glx::PFNGLVERTEXATTRIB4DARBPROC glx::glVertexAttrib4dARB;
00150 glx::PFNGLVERTEXATTRIB4NUBARBPROC glx::glVertexAttrib4NubARB;
00151 glx::PFNGLVERTEXATTRIB1SVARBPROC glx::glVertexAttrib1svARB;
00152 glx::PFNGLVERTEXATTRIB1FVARBPROC glx::glVertexAttrib1fvARB;
00153 glx::PFNGLVERTEXATTRIB1DVARBPROC glx::glVertexAttrib1dvARB;
00154 glx::PFNGLVERTEXATTRIB2SVARBPROC glx::glVertexAttrib2svARB;
00155 glx::PFNGLVERTEXATTRIB2FVARBPROC glx::glVertexAttrib2fvARB;
00156 glx::PFNGLVERTEXATTRIB2DVARBPROC glx::glVertexAttrib2dvARB;
00157 glx::PFNGLVERTEXATTRIB3SVARBPROC glx::glVertexAttrib3svARB;
00158 glx::PFNGLVERTEXATTRIB3FVARBPROC glx::glVertexAttrib3fvARB;
00159 glx::PFNGLVERTEXATTRIB3DVARBPROC glx::glVertexAttrib3dvARB;
00160 glx::PFNGLVERTEXATTRIB4BVARBPROC glx::glVertexAttrib4bvARB;
00161 glx::PFNGLVERTEXATTRIB4SVARBPROC glx::glVertexAttrib4svARB;
00162 glx::PFNGLVERTEXATTRIB4IVARBPROC glx::glVertexAttrib4ivARB;
00163 glx::PFNGLVERTEXATTRIB4UBVARBPROC glx::glVertexAttrib4ubvARB;
00164 glx::PFNGLVERTEXATTRIB4USVARBPROC glx::glVertexAttrib4usvARB;
00165 glx::PFNGLVERTEXATTRIB4UIVARBPROC glx::glVertexAttrib4uivARB;
00166 glx::PFNGLVERTEXATTRIB4FVARBPROC glx::glVertexAttrib4fvARB;
00167 glx::PFNGLVERTEXATTRIB4DVARBPROC glx::glVertexAttrib4dvARB;
00168 glx::PFNGLVERTEXATTRIB4NBVARBPROC glx::glVertexAttrib4NbvARB;
00169 glx::PFNGLVERTEXATTRIB4NSVARBPROC glx::glVertexAttrib4NsvARB;
00170 glx::PFNGLVERTEXATTRIB4NIVARBPROC glx::glVertexAttrib4NivARB;
00171 glx::PFNGLVERTEXATTRIB4NUBVARBPROC glx::glVertexAttrib4NubvARB;
00172 glx::PFNGLVERTEXATTRIB4NUSVARBPROC glx::glVertexAttrib4NusvARB;
00173 glx::PFNGLVERTEXATTRIB4NUIVARBPROC glx::glVertexAttrib4NuivARB;
00174 glx::PFNGLVERTEXATTRIBPOINTERARBPROC glx::glVertexAttribPointerARB;
00175 glx::PFNGLENABLEVERTEXATTRIBARRAYARBPROC glx::glEnableVertexAttribArrayARB;
00176 glx::PFNGLDISABLEVERTEXATTRIBARRAYARBPROC glx::glDisableVertexAttribArrayARB;
00177 glx::PFNGLGETVERTEXATTRIBDVARBPROC glx::glGetVertexAttribdvARB;
00178 glx::PFNGLGETVERTEXATTRIBFVARBPROC glx::glGetVertexAttribfvARB;
00179 glx::PFNGLGETVERTEXATTRIBIVARBPROC glx::glGetVertexAttribivARB;
00180 glx::PFNGLGETVERTEXATTRIBPOINTERVARBPROC glx::glGetVertexAttribPointervARB;
00181 glx::PFNGLPROGRAMENVPARAMETER4DARBPROC glx::glProgramEnvParameter4dARB;
00182 glx::PFNGLPROGRAMENVPARAMETER4DVARBPROC glx::glProgramEnvParameter4dvARB;
00183 glx::PFNGLPROGRAMENVPARAMETER4FARBPROC glx::glProgramEnvParameter4fARB;
00184 glx::PFNGLPROGRAMENVPARAMETER4FVARBPROC glx::glProgramEnvParameter4fvARB;
00185 glx::PFNGLPROGRAMLOCALPARAMETER4DARBPROC glx::glProgramLocalParameter4dARB;
00186 glx::PFNGLPROGRAMLOCALPARAMETER4DVARBPROC glx::glProgramLocalParameter4dvARB;
00187 glx::PFNGLPROGRAMLOCALPARAMETER4FARBPROC glx::glProgramLocalParameter4fARB;
00188 glx::PFNGLPROGRAMLOCALPARAMETER4FVARBPROC glx::glProgramLocalParameter4fvARB;
00189 glx::PFNGLGETPROGRAMENVPARAMETERDVARBPROC glx::glGetProgramEnvParameterdvARB;
00190 glx::PFNGLGETPROGRAMENVPARAMETERFVARBPROC glx::glGetProgramEnvParameterfvARB;
00191 glx::PFNGLGETPROGRAMLOCALPARAMETERDVARBPROC glx::glGetProgramLocalParameterdvARB;
00192 glx::PFNGLGETPROGRAMLOCALPARAMETERFVARBPROC glx::glGetProgramLocalParameterfvARB;
00193 glx::PFNGLPROGRAMSTRINGARBPROC glx::glProgramStringARB;
00194 glx::PFNGLGETPROGRAMSTRINGARBPROC glx::glGetProgramStringARB;
00195 glx::PFNGLGETPROGRAMIVARBPROC glx::glGetProgramivARB;
00196 
00197 // NV_fragment_program function pointers
00198 glx::PFNGLPROGRAMNAMEDPARAMETER4FNVPROC    glx::glProgramNamedParameter4fNV;
00199 glx::PFNGLPROGRAMNAMEDPARAMETER4DNVPROC    glx::glProgramNamedParameter4dNV;
00200 glx::PFNGLPROGRAMNAMEDPARAMETER4FVNVPROC   glx::glProgramNamedParameter4fvNV;
00201 glx::PFNGLPROGRAMNAMEDPARAMETER4DVNVPROC   glx::glProgramNamedParameter4dvNV;
00202 glx::PFNGLGETPROGRAMNAMEDPARAMETERFVNVPROC glx::glGetProgramNamedParameterfvNV;
00203 glx::PFNGLGETPROGRAMNAMEDPARAMETERDVNVPROC glx::glGetProgramNamedParameterdvNV;
00204 glx::PFNGLPROGRAMLOCALPARAMETER4FNVPROC    glx::glProgramLocalParameter4fNV;
00205 glx::PFNGLPROGRAMLOCALPARAMETER4DNVPROC    glx::glProgramLocalParameter4dNV;
00206 glx::PFNGLPROGRAMLOCALPARAMETER4FVNVPROC   glx::glProgramLocalParameter4fvNV;
00207 glx::PFNGLPROGRAMLOCALPARAMETER4DVNVPROC   glx::glProgramLocalParameter4dvNV;
00208 glx::PFNGLGETPROGRAMLOCALPARAMETERFVNVPROC glx::glGetProgramLocalParameterfvNV;
00209 glx::PFNGLGETPROGRAMLOCALPARAMETERDVNVPROC glx::glGetProgramLocalParameterdvNV;
00210 
00211 // ARB_vertex_buffer_object function pointers
00212 glx::PFNGLBINDBUFFERARBPROC                glx::glBindBufferARB;
00213 glx::PFNGLDELETEBUFFERSARBPROC             glx::glDeleteBuffersARB;
00214 glx::PFNGLGENBUFFERSARBPROC                glx::glGenBuffersARB;
00215 glx::PFNGLISBUFFERARBPROC                  glx::glIsBufferARB;
00216 glx::PFNGLBUFFERDATAARBPROC                glx::glBufferDataARB;
00217 glx::PFNGLBUFFERSUBDATAARBPROC             glx::glBufferSubDataARB;
00218 glx::PFNGLGETBUFFERSUBDATAARBPROC          glx::glGetBufferSubDataARB;
00219 glx::PFNGLMAPBUFFERARBPROC                 glx::glMapBufferARB;
00220 glx::PFNGLUNMAPBUFFERARBPROC               glx::glUnmapBufferARB;
00221 glx::PFNGLGETBUFFERPARAMETERIVARBPROC      glx::glGetBufferParameterivARB;
00222 glx::PFNGLGETBUFFERPOINTERVARBPROC         glx::glGetBufferPointervARB;
00223 
00224 // ARB_vertex_shader function pointers
00225 glx::PFNGLBINDATTRIBLOCATIONARBPROC        glx::glBindAttribLocationARB;
00226 glx::PFNGLGETACTIVEATTRIBARBPROC           glx::glGetActiveAttribARB;
00227 glx::PFNGLGETATTRIBLOCATIONARBPROC         glx::glGetAttribLocationARB;
00228 
00229 // ARB_shader_objects function pointers
00230 glx::PFNGLDELETEOBJECTARBPROC              glx::glDeleteObjectARB;
00231 glx::PFNGLGETHANDLEARBPROC                 glx::glGetHandleARB;
00232 glx::PFNGLDETACHOBJECTARBPROC              glx::glDetachObjectARB;
00233 glx::PFNGLCREATESHADEROBJECTARBPROC        glx::glCreateShaderObjectARB;
00234 glx::PFNGLSHADERSOURCEARBPROC              glx::glShaderSourceARB;
00235 glx::PFNGLCOMPILESHADERARBPROC             glx::glCompileShaderARB;
00236 glx::PFNGLCREATEPROGRAMOBJECTARBPROC       glx::glCreateProgramObjectARB;
00237 glx::PFNGLATTACHOBJECTARBPROC              glx::glAttachObjectARB;
00238 glx::PFNGLLINKPROGRAMARBPROC               glx::glLinkProgramARB;
00239 glx::PFNGLUSEPROGRAMOBJECTARBPROC          glx::glUseProgramObjectARB;
00240 glx::PFNGLVALIDATEPROGRAMARBPROC           glx::glValidateProgramARB;
00241 glx::PFNGLUNIFORM1FARBPROC                 glx::glUniform1fARB;
00242 glx::PFNGLUNIFORM2FARBPROC                 glx::glUniform2fARB;
00243 glx::PFNGLUNIFORM3FARBPROC                 glx::glUniform3fARB;
00244 glx::PFNGLUNIFORM4FARBPROC                 glx::glUniform4fARB;
00245 glx::PFNGLUNIFORM1IARBPROC                 glx::glUniform1iARB;
00246 glx::PFNGLUNIFORM2IARBPROC                 glx::glUniform2iARB;
00247 glx::PFNGLUNIFORM3IARBPROC                 glx::glUniform3iARB;
00248 glx::PFNGLUNIFORM4IARBPROC                 glx::glUniform4iARB;
00249 glx::PFNGLUNIFORM1FVARBPROC                glx::glUniform1fvARB;
00250 glx::PFNGLUNIFORM2FVARBPROC                glx::glUniform2fvARB;
00251 glx::PFNGLUNIFORM3FVARBPROC                glx::glUniform3fvARB;
00252 glx::PFNGLUNIFORM4FVARBPROC                glx::glUniform4fvARB;
00253 glx::PFNGLUNIFORM1IVARBPROC                glx::glUniform1ivARB;
00254 glx::PFNGLUNIFORM2IVARBPROC                glx::glUniform2ivARB;
00255 glx::PFNGLUNIFORM3IVARBPROC                glx::glUniform3ivARB;
00256 glx::PFNGLUNIFORM4IVARBPROC                glx::glUniform4ivARB;
00257 glx::PFNGLUNIFORMMATRIX2FVARBPROC          glx::glUniformMatrix2fvARB;
00258 glx::PFNGLUNIFORMMATRIX3FVARBPROC          glx::glUniformMatrix3fvARB;
00259 glx::PFNGLUNIFORMMATRIX4FVARBPROC          glx::glUniformMatrix4fvARB;
00260 glx::PFNGLGETOBJECTPARAMETERFVARBPROC      glx::glGetObjectParameterfvARB;
00261 glx::PFNGLGETOBJECTPARAMETERIVARBPROC      glx::glGetObjectParameterivARB;
00262 glx::PFNGLGETINFOLOGARBPROC                glx::glGetInfoLogARB;
00263 glx::PFNGLGETATTACHEDOBJECTSARBPROC        glx::glGetAttachedObjectsARB;
00264 glx::PFNGLGETUNIFORMLOCATIONARBPROC        glx::glGetUniformLocationARB;
00265 glx::PFNGLGETACTIVEUNIFORMARBPROC          glx::glGetActiveUniformARB;
00266 glx::PFNGLGETUNIFORMFVARBPROC              glx::glGetUniformfvARB;
00267 glx::PFNGLGETUNIFORMIVARBPROC              glx::glGetUniformivARB;
00268 glx::PFNGLGETSHADERSOURCEARBPROC           glx::glGetShaderSourceARB;
00269 
00270 
00271 // extern void Alert(const char *szFormat, ...);
00272 
00273 #ifndef MACOSX
00274 #if defined(_WIN32)
00275 
00276 #define GET_GL_PROC_ADDRESS(name) wglGetProcAddress(name)
00277 
00278 #else
00279 
00280 #ifdef GLX_VERSION_1_4
00281 extern "C" {
00282 extern void (*glXGetProcAddressARB(const GLubyte *procName))();
00283 }
00284 #define GET_GL_PROC_ADDRESS(name) GetGLProcAddress((GLubyte*) (name))
00285 #else
00286 #define GET_GL_PROC_ADDRESS(name) GetGLProcAddress((GLubyte*) (name))
00287 #endif
00288 
00289 typedef void (*FUNCS) (void);
00290 
00291 // Works around an apparent problem in ATI's libGL.so where glXGetProcAddress
00292 // returns NULL.
00293 FUNCS GetGLProcAddress(const GLubyte* procName)
00294 {
00295     FUNCS func = glXGetProcAddressARB(procName);
00296     if (!func)
00297     {
00298         void* libGL = dlopen(0, RTLD_LAZY);
00299         func = (FUNCS) dlsym(libGL, (const char*) procName);
00300         dlclose(libGL);
00301     }
00302 
00303     return func;
00304 }
00305 
00306 #endif // defined(WIN32)
00307 #endif /* !MACOSX */
00308 #ifdef MACOSX
00309 #include <mach-o/dyld.h>
00310 #include <stdio.h>
00311 typedef void (*FUNCS) (void);
00312 const struct mach_header *openGLImagePtr = NULL;
00313 FUNCS osxGetProcAddress(const GLubyte *procName) {
00314     char myProcName[128];
00315     NSSymbol mySymbol = NULL;
00316     FUNCS myPtr = NULL;
00317     if (openGLImagePtr == NULL) {
00318         openGLImagePtr = NSAddImage("/System/Library/Frameworks/OpenGL.framework/Versions/A/OpenGL",NSADDIMAGE_OPTION_RETURN_ON_ERROR);
00319 #if 0
00320         unsigned long i;
00321         unsigned long imageCount = _dyld_image_count();
00322         for (i=0;i<imageCount;++i) {
00323             printf("Image[%d] = %s\n",(int)i,_dyld_get_image_name(i));
00324             if (!strcmp(_dyld_get_image_name(i),"/System/Library/Frameworks/OpenGL.framework/Versions/A/OpenGL")) {
00325                 printf("Found OpenGL image.\n");
00326                 openGLImagePtr = _dyld_get_image_header(i);
00327                 break;
00328             }
00329         }
00330 #endif
00331     }
00332     if (openGLImagePtr == NULL) {
00333         printf("Can't find OpenGL??\n");
00334         return NULL;
00335     }
00336     strcpy(myProcName,"_");
00337     
00338     /* sanity check */
00339     if (strlen((char *)procName)>125) return NULL;
00340     strcat(myProcName,(char *)procName);
00341     //printf("%s\n",myProcName);
00342     //if (NSIsSymbolNameDefinedInImage(openGLImagePtr,myProcName) != FALSE) {
00343     mySymbol = NSLookupSymbolInImage(openGLImagePtr, myProcName, NSLOOKUPSYMBOLINIMAGE_OPTION_BIND_NOW | NSLOOKUPSYMBOLINIMAGE_OPTION_RETURN_ON_ERROR);
00344     if (mySymbol != NULL)
00345         myPtr = (FUNCS)NSAddressOfSymbol(mySymbol);
00346     //printf("  (symbol, address) -> (%08x -> %08x)\n",(unsigned int)mySymbol,(unsigned int)myPtr);
00347     return myPtr;
00348     //}
00349 }
00350 #define GET_GL_PROC_ADDRESS(name) osxGetProcAddress((GLubyte *)name)
00351 #endif /* MACOSX */
00352 
00353 
00354 void Alert(const char *szFormat, ...)
00355 {
00356 }
00357 
00358 
00359 // ARB_multitexture
00360 static void InitExt_ARB_multitexture()
00361 {
00362 // #ifndef GL_ARB_multitexture
00363 #ifdef GET_GL_PROC_ADDRESS
00364     glx::glMultiTexCoord2iARB = (glx::PFNGLMULTITEXCOORD2IARBPROC) GET_GL_PROC_ADDRESS("glMultiTexCoord2iARB");
00365     glx::glMultiTexCoord2fARB = (glx::PFNGLMULTITEXCOORD2FARBPROC) GET_GL_PROC_ADDRESS("glMultiTexCoord2fARB");
00366     glx::glMultiTexCoord3fARB = (glx::PFNGLMULTITEXCOORD3FARBPROC) GET_GL_PROC_ADDRESS("glMultiTexCoord3fARB");
00367     glx::glMultiTexCoord3fvARB = (glx::PFNGLMULTITEXCOORD3FVARBPROC) GET_GL_PROC_ADDRESS("glMultiTexCoord3fvARB");
00368     glx::glActiveTextureARB = (glx::PFNGLACTIVETEXTUREARBPROC) GET_GL_PROC_ADDRESS("glActiveTextureARB");
00369     glx::glClientActiveTextureARB = (glx::PFNGLCLIENTACTIVETEXTUREARBPROC) GET_GL_PROC_ADDRESS("glClientActiveTextureARB");
00370 #endif // GET_GL_PROC_ADDRESS
00371 // #endif // GL_ARB_multitexture
00372 }
00373 
00374 
00375 static void InitExt_ARB_texture_compression()
00376 {
00377 #if defined(GET_GL_PROC_ADDRESS)
00378     glx::glCompressedTexImage3DARB =
00379         (glx::PFNGLCOMPRESSEDTEXIMAGE3DARBPROC)
00380         GET_GL_PROC_ADDRESS("glCompressedTexImage3DARB");
00381     glx::glCompressedTexImage2DARB =
00382         (glx::PFNGLCOMPRESSEDTEXIMAGE2DARBPROC)
00383         GET_GL_PROC_ADDRESS("glCompressedTexImage2DARB");
00384     glx::glCompressedTexImage1DARB =
00385         (glx::PFNGLCOMPRESSEDTEXIMAGE1DARBPROC)
00386         GET_GL_PROC_ADDRESS("glCompressedTexImage1DARB");
00387     glx::glCompressedTexSubImage3DARB =
00388         (glx::PFNGLCOMPRESSEDTEXSUBIMAGE3DARBPROC)
00389         GET_GL_PROC_ADDRESS("glCompressedTexSubImage3DARB");
00390     glx::glCompressedTexSubImage2DARB =
00391         (glx::PFNGLCOMPRESSEDTEXSUBIMAGE2DARBPROC)
00392         GET_GL_PROC_ADDRESS("glCompressedTexSubImage2DARB");
00393     glx::glCompressedTexSubImage1DARB =
00394         (glx::PFNGLCOMPRESSEDTEXSUBIMAGE1DARBPROC)
00395         GET_GL_PROC_ADDRESS("glCompressedTexSubImage1DARB");
00396 #endif // GL_ARB_texture_compression
00397 }
00398 
00399 
00400 // NV_register_combiners
00401 static void InitExt_NV_register_combiners()
00402 {
00403 #if defined(GET_GL_PROC_ADDRESS)
00404   /* Retrieve all NV_register_combiners routines. */
00405   glx::glCombinerParameterfvNV = (glx::PFNGLCOMBINERPARAMETERFVNVPROC) GET_GL_PROC_ADDRESS("glCombinerParameterfvNV");
00406   glx::glCombinerParameterivNV = (glx::PFNGLCOMBINERPARAMETERIVNVPROC) GET_GL_PROC_ADDRESS("glCombinerParameterivNV");
00407   glx::glCombinerParameterfNV = (glx::PFNGLCOMBINERPARAMETERFNVPROC) GET_GL_PROC_ADDRESS("glCombinerParameterfNV");
00408   glx::glCombinerParameteriNV = (glx::PFNGLCOMBINERPARAMETERINVPROC) GET_GL_PROC_ADDRESS("glCombinerParameteriNV");
00409   glx::glCombinerInputNV = (glx::PFNGLCOMBINERINPUTNVPROC) GET_GL_PROC_ADDRESS("glCombinerInputNV");
00410   glx::glCombinerOutputNV = (glx::PFNGLCOMBINEROUTPUTNVPROC) GET_GL_PROC_ADDRESS("glCombinerOutputNV");
00411   glx::glFinalCombinerInputNV = (glx::PFNGLFINALCOMBINERINPUTNVPROC) GET_GL_PROC_ADDRESS("glFinalCombinerInputNV");
00412   glx::glGetCombinerInputParameterfvNV = (glx::PFNGLGETCOMBINERINPUTPARAMETERFVNVPROC) GET_GL_PROC_ADDRESS("glGetCombinerInputParameterfvNV");
00413   glx::glGetCombinerInputParameterivNV = (glx::PFNGLGETCOMBINERINPUTPARAMETERIVNVPROC) GET_GL_PROC_ADDRESS("glGetCombinerInputParameterivNV");
00414   glx::glGetCombinerOutputParameterfvNV = (glx::PFNGLGETCOMBINEROUTPUTPARAMETERFVNVPROC) GET_GL_PROC_ADDRESS("glGetCombinerOutputParameterfvNV");
00415   glx::glGetCombinerOutputParameterivNV = (glx::PFNGLGETCOMBINEROUTPUTPARAMETERIVNVPROC) GET_GL_PROC_ADDRESS("glGetCombinerOutputParameterivNV");
00416   glx::glGetFinalCombinerInputParameterfvNV = (glx::PFNGLGETFINALCOMBINERINPUTPARAMETERFVNVPROC) GET_GL_PROC_ADDRESS("glGetFinalCombinerInputParameterfvNV");
00417   glx::glGetFinalCombinerInputParameterivNV = (glx::PFNGLGETFINALCOMBINERINPUTPARAMETERIVNVPROC) GET_GL_PROC_ADDRESS("glGetFinalCombinerInputParameterivNV");
00418 #endif // GET_GL_PROC_ADDRESS
00419 }
00420 
00421 
00422 static void InitExt_NV_register_combiners2()
00423 {
00424 #if defined(GET_GL_PROC_ADDRESS)
00425     /* Retrieve all NV_register_combiners routines. */
00426     glx::glCombinerStageParameterfvNV = (glx::PFNGLCOMBINERSTAGEPARAMETERFVNVPROC) GET_GL_PROC_ADDRESS("glCombinerStageParameterfvNV");
00427     glx::glGetCombinerStageParameterfvNV = (glx::PFNGLGETCOMBINERSTAGEPARAMETERFVNVPROC) GET_GL_PROC_ADDRESS("glGetCombinerStageParameterfvNV");
00428 #endif
00429 }
00430 
00431 
00432 static void InitExt_NV_vertex_program()
00433 {
00434 #if defined(GET_GL_PROC_ADDRESS)
00435     glx::glAreProgramsResidentNV =
00436         (glx::PFNGLAREPROGRAMSRESIDENTNVPROC)
00437         GET_GL_PROC_ADDRESS("glAreProgramsResidentNV");
00438     glx::glBindProgramNV =
00439         (glx::PFNGLBINDPROGRAMNVPROC)
00440         GET_GL_PROC_ADDRESS("glBindProgramNV");
00441     glx::glDeleteProgramsNV =
00442         (glx::PFNGLDELETEPROGRAMSNVPROC)
00443         GET_GL_PROC_ADDRESS("glDeleteProgramsNV");
00444     glx::glExecuteProgramNV =
00445         (glx::PFNGLEXECUTEPROGRAMNVPROC)
00446         GET_GL_PROC_ADDRESS("glExecuteProgramNV");
00447     glx::glGenProgramsNV =
00448         (glx::PFNGLGENPROGRAMSNVPROC)
00449         GET_GL_PROC_ADDRESS("glGenProgramsNV");
00450     glx::glGetProgramParameterdvNV =
00451         (glx::PFNGLGETPROGRAMPARAMETERDVNVPROC)
00452         GET_GL_PROC_ADDRESS("glGetProgramParameterdvNV");
00453     glx::glGetProgramParameterfvNV =
00454         (glx::PFNGLGETPROGRAMPARAMETERFVNVPROC)
00455         GET_GL_PROC_ADDRESS("glGetProgramParameterfvNV");
00456     glx::glGetProgramivNV =
00457         (glx::PFNGLGETPROGRAMIVNVPROC)
00458         GET_GL_PROC_ADDRESS("glGetProgramivNV");
00459     glx::glGetProgramStringNV =
00460         (glx::PFNGLGETPROGRAMSTRINGNVPROC)
00461         GET_GL_PROC_ADDRESS("glGetProgramStringNV");
00462     glx::glGetTrackMatrixivNV =
00463         (glx::PFNGLGETTRACKMATRIXIVNVPROC)
00464         GET_GL_PROC_ADDRESS("glGetTrackMatrixivNV");
00465     glx::glGetVertexAttribdvNV =
00466         (glx::PFNGLGETVERTEXATTRIBDVNVPROC)
00467         GET_GL_PROC_ADDRESS("glGetVertexAttribdvNV");
00468     glx::glGetVertexAttribfvNV =
00469         (glx::PFNGLGETVERTEXATTRIBFVNVPROC)
00470         GET_GL_PROC_ADDRESS("glGetVertexAttribfvNV");
00471     glx::glGetVertexAttribivNV =
00472         (glx::PFNGLGETVERTEXATTRIBIVNVPROC)
00473         GET_GL_PROC_ADDRESS("glGetVertexAttribivNV");
00474     glx::glGetVertexAttribPointervNV =
00475         (glx::PFNGLGETVERTEXATTRIBPOINTERVNVPROC)
00476         GET_GL_PROC_ADDRESS("glGetVertexAttribPointervNV");
00477     glx::glIsProgramNV =
00478         (glx::PFNGLISPROGRAMNVPROC)
00479         GET_GL_PROC_ADDRESS("glIsProgramNV");
00480     glx::glLoadProgramNV =
00481         (glx::PFNGLLOADPROGRAMNVPROC)
00482         GET_GL_PROC_ADDRESS("glLoadProgramNV");
00483     glx::glProgramParameter4dNV =
00484         (glx::PFNGLPROGRAMPARAMETER4DNVPROC)
00485         GET_GL_PROC_ADDRESS("glProgramParameter4dNV");
00486     glx::glProgramParameter4dvNV =
00487         (glx::PFNGLPROGRAMPARAMETER4DVNVPROC)
00488         GET_GL_PROC_ADDRESS("glProgramParameter4dvNV");
00489     glx::glProgramParameter4fNV =
00490         (glx::PFNGLPROGRAMPARAMETER4FNVPROC)
00491         GET_GL_PROC_ADDRESS("glProgramParameter4fNV");
00492     glx::glProgramParameter4fvNV =
00493         (glx::PFNGLPROGRAMPARAMETER4FVNVPROC)
00494         GET_GL_PROC_ADDRESS("glProgramParameter4fvNV");
00495     glx::glProgramParameters4dvNV =
00496         (glx::PFNGLPROGRAMPARAMETERS4DVNVPROC)
00497         GET_GL_PROC_ADDRESS("glProgramParameters4dvNV");
00498     glx::glProgramParameters4fvNV =
00499         (glx::PFNGLPROGRAMPARAMETERS4FVNVPROC)
00500         GET_GL_PROC_ADDRESS("glProgramParameters4fvNV");
00501     glx::glRequestResidentProgramsNV =
00502         (glx::PFNGLREQUESTRESIDENTPROGRAMSNVPROC)
00503         GET_GL_PROC_ADDRESS("glRequestResidentProgramsNV");
00504     glx::glTrackMatrixNV =
00505         (glx::PFNGLTRACKMATRIXNVPROC)
00506         GET_GL_PROC_ADDRESS("glTrackMatrixNV");
00507     glx::glVertexAttribPointerNV =
00508         (glx::PFNGLVERTEXATTRIBPOINTERNVPROC)
00509         GET_GL_PROC_ADDRESS("glVertexAttribPointerNV");
00510     glx::glVertexAttrib1dNV =
00511         (glx::PFNGLVERTEXATTRIB1DNVPROC)
00512         GET_GL_PROC_ADDRESS("glVertexAttrib1dNV");
00513     glx::glVertexAttrib1dvNV =
00514         (glx::PFNGLVERTEXATTRIB1DVNVPROC)
00515         GET_GL_PROC_ADDRESS("glVertexAttrib1dvNV");
00516     glx::glVertexAttrib1fNV =
00517         (glx::PFNGLVERTEXATTRIB1FNVPROC)
00518         GET_GL_PROC_ADDRESS("glVertexAttrib1fNV");
00519     glx::glVertexAttrib1fvNV =
00520         (glx::PFNGLVERTEXATTRIB1FVNVPROC)
00521         GET_GL_PROC_ADDRESS("glVertexAttrib1fvNV");
00522     glx::glVertexAttrib1sNV =
00523         (glx::PFNGLVERTEXATTRIB1SNVPROC)
00524         GET_GL_PROC_ADDRESS("glVertexAttrib1sNV");
00525     glx::glVertexAttrib1svNV =
00526         (glx::PFNGLVERTEXATTRIB1SVNVPROC)
00527         GET_GL_PROC_ADDRESS("glVertexAttrib1svNV");
00528     glx::glVertexAttrib2dNV =
00529         (glx::PFNGLVERTEXATTRIB2DNVPROC)
00530         GET_GL_PROC_ADDRESS("glVertexAttrib2dNV");
00531     glx::glVertexAttrib2dvNV =
00532         (glx::PFNGLVERTEXATTRIB2DVNVPROC)
00533         GET_GL_PROC_ADDRESS("glVertexAttrib2dvNV");
00534     glx::glVertexAttrib2fNV =
00535         (glx::PFNGLVERTEXATTRIB2FNVPROC)
00536         GET_GL_PROC_ADDRESS("glVertexAttrib2fNV");
00537     glx::glVertexAttrib2fvNV =
00538         (glx::PFNGLVERTEXATTRIB2FVNVPROC)
00539         GET_GL_PROC_ADDRESS("glVertexAttrib2fvNV");
00540     glx::glVertexAttrib2sNV =
00541         (glx::PFNGLVERTEXATTRIB2SNVPROC)
00542         GET_GL_PROC_ADDRESS("glVertexAttrib2sNV");
00543     glx::glVertexAttrib2svNV =
00544         (glx::PFNGLVERTEXATTRIB2SVNVPROC)
00545         GET_GL_PROC_ADDRESS("glVertexAttrib2svNV");
00546     glx::glVertexAttrib3dNV =
00547         (glx::PFNGLVERTEXATTRIB3DNVPROC)
00548         GET_GL_PROC_ADDRESS("glVertexAttrib3dNV");
00549     glx::glVertexAttrib3dvNV =
00550         (glx::PFNGLVERTEXATTRIB3DVNVPROC)
00551         GET_GL_PROC_ADDRESS("glVertexAttrib3dvNV");
00552     glx::glVertexAttrib3fNV =
00553         (glx::PFNGLVERTEXATTRIB3FNVPROC)
00554         GET_GL_PROC_ADDRESS("glVertexAttrib3fNV");
00555     glx::glVertexAttrib3fvNV =
00556         (glx::PFNGLVERTEXATTRIB3FVNVPROC)
00557         GET_GL_PROC_ADDRESS("glVertexAttrib3fvNV");
00558     glx::glVertexAttrib3sNV =
00559         (glx::PFNGLVERTEXATTRIB3SNVPROC)
00560         GET_GL_PROC_ADDRESS("glVertexAttrib3sNV");
00561     glx::glVertexAttrib3svNV =
00562         (glx::PFNGLVERTEXATTRIB3SVNVPROC)
00563         GET_GL_PROC_ADDRESS("glVertexAttrib3svNV");
00564     glx::glVertexAttrib4dNV =
00565         (glx::PFNGLVERTEXATTRIB4DNVPROC)
00566         GET_GL_PROC_ADDRESS("glVertexAttrib4dNV");
00567     glx::glVertexAttrib4dvNV =
00568         (glx::PFNGLVERTEXATTRIB4DVNVPROC)
00569         GET_GL_PROC_ADDRESS("glVertexAttrib4dvNV");
00570     glx::glVertexAttrib4fNV =
00571         (glx::PFNGLVERTEXATTRIB4FNVPROC)
00572         GET_GL_PROC_ADDRESS("glVertexAttrib4fNV");
00573     glx::glVertexAttrib4fvNV =
00574         (glx::PFNGLVERTEXATTRIB4FVNVPROC)
00575         GET_GL_PROC_ADDRESS("glVertexAttrib4fvNV");
00576     glx::glVertexAttrib4sNV =
00577         (glx::PFNGLVERTEXATTRIB4SNVPROC)
00578         GET_GL_PROC_ADDRESS("glVertexAttrib4sNV");
00579     glx::glVertexAttrib4svNV =
00580         (glx::PFNGLVERTEXATTRIB4SVNVPROC)
00581         GET_GL_PROC_ADDRESS("glVertexAttrib4svNV");
00582     glx::glVertexAttrib4ubvNV =
00583         (glx::PFNGLVERTEXATTRIB4UBVNVPROC)
00584         GET_GL_PROC_ADDRESS("glVertexAttrib4ubvNV");
00585     glx::glVertexAttribs1dvNV =
00586         (glx::PFNGLVERTEXATTRIBS1DVNVPROC)
00587         GET_GL_PROC_ADDRESS("glVertexAttribs1dvNV");
00588     glx::glVertexAttribs1fvNV =
00589         (glx::PFNGLVERTEXATTRIBS1FVNVPROC)
00590         GET_GL_PROC_ADDRESS("glVertexAttribs1fvNV");
00591     glx::glVertexAttribs1svNV =
00592         (glx::PFNGLVERTEXATTRIBS1SVNVPROC)
00593         GET_GL_PROC_ADDRESS("glVertexAttribs1svNV");
00594     glx::glVertexAttribs2dvNV =
00595         (glx::PFNGLVERTEXATTRIBS2DVNVPROC)
00596         GET_GL_PROC_ADDRESS("glVertexAttribs2dvNV");
00597     glx::glVertexAttribs2fvNV =
00598         (glx::PFNGLVERTEXATTRIBS2FVNVPROC)
00599         GET_GL_PROC_ADDRESS("glVertexAttribs2fvNV");
00600     glx::glVertexAttribs2svNV =
00601         (glx::PFNGLVERTEXATTRIBS2SVNVPROC)
00602         GET_GL_PROC_ADDRESS("glVertexAttribs2svNV");
00603     glx::glVertexAttribs3dvNV =
00604         (glx::PFNGLVERTEXATTRIBS3DVNVPROC)
00605         GET_GL_PROC_ADDRESS("glVertexAttribs3dvNV");
00606     glx::glVertexAttribs3fvNV =
00607         (glx::PFNGLVERTEXATTRIBS3FVNVPROC)
00608         GET_GL_PROC_ADDRESS("glVertexAttribs3fvNV");
00609     glx::glVertexAttribs3svNV =
00610         (glx::PFNGLVERTEXATTRIBS3SVNVPROC)
00611         GET_GL_PROC_ADDRESS("glVertexAttribs3svNV");
00612     glx::glVertexAttribs4dvNV =
00613         (glx::PFNGLVERTEXATTRIBS4DVNVPROC)
00614         GET_GL_PROC_ADDRESS("glVertexAttribs4dvNV");
00615     glx::glVertexAttribs4fvNV =
00616         (glx::PFNGLVERTEXATTRIBS4FVNVPROC)
00617         GET_GL_PROC_ADDRESS("glVertexAttribs4fvNV");
00618     glx::glVertexAttribs4svNV =
00619         (glx::PFNGLVERTEXATTRIBS4SVNVPROC)
00620         GET_GL_PROC_ADDRESS("glVertexAttribs4svNV");
00621     glx::glVertexAttribs4ubvNV =
00622         (glx::PFNGLVERTEXATTRIBS4UBVNVPROC)
00623         GET_GL_PROC_ADDRESS("glVertexAttribs4ubvNV");
00624 #endif
00625 }
00626 
00627 
00628 static void InitExt_EXT_paletted_texture()
00629 {
00630 #if defined(GET_GL_PROC_ADDRESS)
00631     glx::glColorTableEXT = (glx::PFNGLCOLORTABLEEXTPROC) GET_GL_PROC_ADDRESS("glColorTableEXT");
00632 #endif
00633 }
00634 
00635 
00636 static void InitExt_EXT_blend_minmax()
00637 {
00638 #if defined(GET_GL_PROC_ADDRESS)
00639     glx::glBlendEquationEXT = (glx::PFNGLBLENDEQUATIONEXTPROC) GET_GL_PROC_ADDRESS("glBlendEquationEXT");
00640 #endif
00641 }
00642 
00643 
00644 static void InitExt_EXT_swap_control()
00645 {
00646 #ifdef _WIN32
00647     glx::wglSwapIntervalEXT = (glx::PFNWGLSWAPINTERVALEXTPROC) GET_GL_PROC_ADDRESS("wglSwapIntervalEXT");
00648     glx::wglGetSwapIntervalEXT = (glx::PFNWGLGETSWAPINTERVALEXTPROC) GET_GL_PROC_ADDRESS("wglGetSwapIntervalEXT");
00649 #endif // _WIN32
00650 }
00651 
00652 
00653 static void InitExt_NV_fragment_program()
00654 {
00655 #if defined(GET_GL_PROC_ADDRESS)
00656     glx::glProgramNamedParameter4fNV = (glx::PFNGLPROGRAMNAMEDPARAMETER4FNVPROC) GET_GL_PROC_ADDRESS("glProgramNamedParameter4fNV");
00657     glx::glProgramNamedParameter4dNV = (glx::PFNGLPROGRAMNAMEDPARAMETER4DNVPROC) GET_GL_PROC_ADDRESS("glProgramNamedParameter4dNV");
00658     glx::glProgramNamedParameter4fvNV = (glx::PFNGLPROGRAMNAMEDPARAMETER4FVNVPROC) GET_GL_PROC_ADDRESS("glProgramNamedParameter4fvNV");
00659     glx::glProgramNamedParameter4dvNV = (glx::PFNGLPROGRAMNAMEDPARAMETER4DVNVPROC) GET_GL_PROC_ADDRESS("glProgramNamedParameter4dvNV");
00660     glx::glGetProgramNamedParameterfvNV = (glx::PFNGLGETPROGRAMNAMEDPARAMETERFVNVPROC) GET_GL_PROC_ADDRESS("glGetProgramNamedParameterfvNV");
00661     glx::glGetProgramNamedParameterdvNV = (glx::PFNGLGETPROGRAMNAMEDPARAMETERDVNVPROC) GET_GL_PROC_ADDRESS("glGetProgramNamedParameterdvNV");
00662     glx::glProgramLocalParameter4fNV = (glx::PFNGLPROGRAMLOCALPARAMETER4FNVPROC) GET_GL_PROC_ADDRESS("glProgramLocalParameter4fNV");
00663     glx::glProgramLocalParameter4dNV = (glx::PFNGLPROGRAMLOCALPARAMETER4DNVPROC) GET_GL_PROC_ADDRESS("glProgramLocalParameter4dNV");
00664     glx::glProgramLocalParameter4fvNV = (glx::PFNGLPROGRAMLOCALPARAMETER4FVNVPROC) GET_GL_PROC_ADDRESS("glProgramLocalParameter4fvNV");
00665     glx::glProgramLocalParameter4dvNV = (glx::PFNGLPROGRAMLOCALPARAMETER4DVNVPROC) GET_GL_PROC_ADDRESS("glProgramLocalParameter4dvNV");
00666     glx::glGetProgramLocalParameterfvNV = (glx::PFNGLGETPROGRAMLOCALPARAMETERFVNVPROC) GET_GL_PROC_ADDRESS("glGetProgramLocalParameterfvNV");
00667     glx::glGetProgramLocalParameterdvNV = (glx::PFNGLGETPROGRAMLOCALPARAMETERDVNVPROC) GET_GL_PROC_ADDRESS("glGetProgramLocalParameterdvNV");
00668 #endif // GET_GL_PROC_ADDRESS
00669 }
00670 
00671 
00672 static void InitExt_ARB_vertex_program()
00673 {
00674 #if defined(GET_GL_PROC_ADDRESS)
00675     glx::glBindProgramARB = (glx::PFNGLBINDPROGRAMARBPROC) GET_GL_PROC_ADDRESS("glBindProgramARB");
00676     glx::glDeleteProgramsARB = (glx::PFNGLDELETEPROGRAMSARBPROC) GET_GL_PROC_ADDRESS("glDeleteProgramsARB");
00677     glx::glGenProgramsARB = (glx::PFNGLGENPROGRAMSARBPROC) GET_GL_PROC_ADDRESS("glGenProgramsARB");
00678     glx::glIsProgramARB = (glx::PFNGLISPROGRAMARBPROC) GET_GL_PROC_ADDRESS("glIsProgramARB");
00679     glx::glVertexAttrib1sARB = (glx::PFNGLVERTEXATTRIB1SARBPROC) GET_GL_PROC_ADDRESS("glVertexAttrib1sARB");
00680     glx::glVertexAttrib1fARB = (glx::PFNGLVERTEXATTRIB1FARBPROC) GET_GL_PROC_ADDRESS("glVertexAttrib1fARB");
00681     glx::glVertexAttrib1dARB = (glx::PFNGLVERTEXATTRIB1DARBPROC) GET_GL_PROC_ADDRESS("glVertexAttrib1dARB");
00682     glx::glVertexAttrib2sARB = (glx::PFNGLVERTEXATTRIB2SARBPROC) GET_GL_PROC_ADDRESS("glVertexAttrib2sARB");
00683     glx::glVertexAttrib2fARB = (glx::PFNGLVERTEXATTRIB2FARBPROC) GET_GL_PROC_ADDRESS("glVertexAttrib2fARB");
00684     glx::glVertexAttrib2dARB = (glx::PFNGLVERTEXATTRIB2DARBPROC) GET_GL_PROC_ADDRESS("glVertexAttrib2dARB");
00685     glx::glVertexAttrib3sARB = (glx::PFNGLVERTEXATTRIB3SARBPROC) GET_GL_PROC_ADDRESS("glVertexAttrib3sARB");
00686     glx::glVertexAttrib3fARB = (glx::PFNGLVERTEXATTRIB3FARBPROC) GET_GL_PROC_ADDRESS("glVertexAttrib3fARB");
00687     glx::glVertexAttrib3dARB = (glx::PFNGLVERTEXATTRIB3DARBPROC) GET_GL_PROC_ADDRESS("glVertexAttrib3dARB");
00688     glx::glVertexAttrib4sARB = (glx::PFNGLVERTEXATTRIB4SARBPROC) GET_GL_PROC_ADDRESS("glVertexAttrib4sARB");
00689     glx::glVertexAttrib4fARB = (glx::PFNGLVERTEXATTRIB4FARBPROC) GET_GL_PROC_ADDRESS("glVertexAttrib4fARB");
00690     glx::glVertexAttrib4dARB = (glx::PFNGLVERTEXATTRIB4DARBPROC) GET_GL_PROC_ADDRESS("glVertexAttrib4dARB");
00691     glx::glVertexAttrib4NubARB = (glx::PFNGLVERTEXATTRIB4NUBARBPROC) GET_GL_PROC_ADDRESS("glVertexAttrib4NubARB");
00692     glx::glVertexAttrib1svARB = (glx::PFNGLVERTEXATTRIB1SVARBPROC) GET_GL_PROC_ADDRESS("glVertexAttrib1svARB");
00693     glx::glVertexAttrib1fvARB = (glx::PFNGLVERTEXATTRIB1FVARBPROC) GET_GL_PROC_ADDRESS("glVertexAttrib1fvARB");
00694     glx::glVertexAttrib1dvARB = (glx::PFNGLVERTEXATTRIB1DVARBPROC) GET_GL_PROC_ADDRESS("glVertexAttrib1dvARB");
00695     glx::glVertexAttrib2svARB = (glx::PFNGLVERTEXATTRIB2SVARBPROC) GET_GL_PROC_ADDRESS("glVertexAttrib2svARB");
00696     glx::glVertexAttrib2fvARB = (glx::PFNGLVERTEXATTRIB2FVARBPROC) GET_GL_PROC_ADDRESS("glVertexAttrib2fvARB");
00697     glx::glVertexAttrib2dvARB = (glx::PFNGLVERTEXATTRIB2DVARBPROC) GET_GL_PROC_ADDRESS("glVertexAttrib2dvARB");
00698     glx::glVertexAttrib3svARB = (glx::PFNGLVERTEXATTRIB3SVARBPROC) GET_GL_PROC_ADDRESS("glVertexAttrib3svARB");
00699     glx::glVertexAttrib3fvARB = (glx::PFNGLVERTEXATTRIB3FVARBPROC) GET_GL_PROC_ADDRESS("glVertexAttrib3fvARB");
00700     glx::glVertexAttrib3dvARB = (glx::PFNGLVERTEXATTRIB3DVARBPROC) GET_GL_PROC_ADDRESS("glVertexAttrib3dvARB");
00701     glx::glVertexAttrib4bvARB = (glx::PFNGLVERTEXATTRIB4BVARBPROC) GET_GL_PROC_ADDRESS("glVertexAttrib4bvARB");
00702     glx::glVertexAttrib4svARB = (glx::PFNGLVERTEXATTRIB4SVARBPROC) GET_GL_PROC_ADDRESS("glVertexAttrib4svARB");
00703     glx::glVertexAttrib4ivARB = (glx::PFNGLVERTEXATTRIB4IVARBPROC) GET_GL_PROC_ADDRESS("glVertexAttrib4ivARB");
00704     glx::glVertexAttrib4ubvARB = (glx::PFNGLVERTEXATTRIB4UBVARBPROC) GET_GL_PROC_ADDRESS("glVertexAttrib4ubvARB");
00705     glx::glVertexAttrib4usvARB = (glx::PFNGLVERTEXATTRIB4USVARBPROC) GET_GL_PROC_ADDRESS("glVertexAttrib4usvARB");
00706     glx::glVertexAttrib4uivARB = (glx::PFNGLVERTEXATTRIB4UIVARBPROC) GET_GL_PROC_ADDRESS("glVertexAttrib4uivARB");
00707     glx::glVertexAttrib4fvARB = (glx::PFNGLVERTEXATTRIB4FVARBPROC) GET_GL_PROC_ADDRESS("glVertexAttrib4fvARB");
00708     glx::glVertexAttrib4dvARB = (glx::PFNGLVERTEXATTRIB4DVARBPROC) GET_GL_PROC_ADDRESS("glVertexAttrib4dvARB");
00709     glx::glVertexAttrib4NbvARB = (glx::PFNGLVERTEXATTRIB4NBVARBPROC) GET_GL_PROC_ADDRESS("glVertexAttrib4NbvARB");
00710     glx::glVertexAttrib4NsvARB = (glx::PFNGLVERTEXATTRIB4NSVARBPROC) GET_GL_PROC_ADDRESS("glVertexAttrib4NsvARB");
00711     glx::glVertexAttrib4NivARB = (glx::PFNGLVERTEXATTRIB4NIVARBPROC) GET_GL_PROC_ADDRESS("glVertexAttrib4NivARB");
00712     glx::glVertexAttrib4NubvARB = (glx::PFNGLVERTEXATTRIB4NUBVARBPROC) GET_GL_PROC_ADDRESS("glVertexAttrib4NubvARB");
00713     glx::glVertexAttrib4NusvARB = (glx::PFNGLVERTEXATTRIB4NUSVARBPROC) GET_GL_PROC_ADDRESS("glVertexAttrib4NusvARB");
00714     glx::glVertexAttrib4NuivARB = (glx::PFNGLVERTEXATTRIB4NUIVARBPROC) GET_GL_PROC_ADDRESS("glVertexAttrib4NuivARB");
00715     glx::glVertexAttribPointerARB = (glx::PFNGLVERTEXATTRIBPOINTERARBPROC) GET_GL_PROC_ADDRESS("glVertexAttribPointerARB");
00716     glx::glEnableVertexAttribArrayARB = (glx::PFNGLENABLEVERTEXATTRIBARRAYARBPROC) GET_GL_PROC_ADDRESS("glEnableVertexAttribArrayARB");
00717     glx::glDisableVertexAttribArrayARB = (glx::PFNGLDISABLEVERTEXATTRIBARRAYARBPROC) GET_GL_PROC_ADDRESS("glDisableVertexAttribArrayARB");
00718     glx::glGetVertexAttribdvARB = (glx::PFNGLGETVERTEXATTRIBDVARBPROC) GET_GL_PROC_ADDRESS("glGetVertexAttribdvARB");
00719     glx::glGetVertexAttribfvARB = (glx::PFNGLGETVERTEXATTRIBFVARBPROC) GET_GL_PROC_ADDRESS("glGetVertexAttribfvARB");
00720     glx::glGetVertexAttribivARB = (glx::PFNGLGETVERTEXATTRIBIVARBPROC) GET_GL_PROC_ADDRESS("glGetVertexAttribivARB");
00721     glx::glGetVertexAttribPointervARB = (glx::PFNGLGETVERTEXATTRIBPOINTERVARBPROC) GET_GL_PROC_ADDRESS("glGetVertexAttribPointervARB");
00722     glx::glProgramEnvParameter4dARB = (glx::PFNGLPROGRAMENVPARAMETER4DARBPROC) GET_GL_PROC_ADDRESS("glProgramEnvParameter4dARB");
00723     glx::glProgramEnvParameter4dvARB = (glx::PFNGLPROGRAMENVPARAMETER4DVARBPROC) GET_GL_PROC_ADDRESS("glProgramEnvParameter4dvARB");
00724     glx::glProgramEnvParameter4fARB = (glx::PFNGLPROGRAMENVPARAMETER4FARBPROC) GET_GL_PROC_ADDRESS("glProgramEnvParameter4fARB");
00725     glx::glProgramEnvParameter4fvARB = (glx::PFNGLPROGRAMENVPARAMETER4FVARBPROC) GET_GL_PROC_ADDRESS("glProgramEnvParameter4fvARB");
00726     glx::glProgramLocalParameter4dARB = (glx::PFNGLPROGRAMLOCALPARAMETER4DARBPROC) GET_GL_PROC_ADDRESS("glProgramLocalParameter4dARB");
00727     glx::glProgramLocalParameter4dvARB = (glx::PFNGLPROGRAMLOCALPARAMETER4DVARBPROC) GET_GL_PROC_ADDRESS("glProgramLocalParameter4dvARB");
00728     glx::glProgramLocalParameter4fARB = (glx::PFNGLPROGRAMLOCALPARAMETER4FARBPROC) GET_GL_PROC_ADDRESS("glProgramLocalParameter4fARB");
00729     glx::glProgramLocalParameter4fvARB = (glx::PFNGLPROGRAMLOCALPARAMETER4FVARBPROC) GET_GL_PROC_ADDRESS("glProgramLocalParameter4fvARB");
00730     glx::glGetProgramEnvParameterdvARB = (glx::PFNGLGETPROGRAMENVPARAMETERDVARBPROC) GET_GL_PROC_ADDRESS("glGetProgramEnvParameterdvARB");
00731     glx::glGetProgramEnvParameterfvARB = (glx::PFNGLGETPROGRAMENVPARAMETERFVARBPROC) GET_GL_PROC_ADDRESS("glGetProgramEnvParameterfvARB");
00732     glx::glGetProgramLocalParameterdvARB = (glx::PFNGLGETPROGRAMLOCALPARAMETERDVARBPROC) GET_GL_PROC_ADDRESS("glGetProgramLocalParameterdvARB");
00733     glx::glGetProgramLocalParameterfvARB = (glx::PFNGLGETPROGRAMLOCALPARAMETERFVARBPROC) GET_GL_PROC_ADDRESS("glGetProgramLocalParameterfvARB");
00734     glx::glProgramStringARB = (glx::PFNGLPROGRAMSTRINGARBPROC) GET_GL_PROC_ADDRESS("glProgramStringARB");
00735     glx::glGetProgramStringARB = (glx::PFNGLGETPROGRAMSTRINGARBPROC) GET_GL_PROC_ADDRESS("glGetProgramStringARB");
00736     glx::glGetProgramivARB = (glx::PFNGLGETPROGRAMIVARBPROC) GET_GL_PROC_ADDRESS("glGetProgramivARB");
00737 #endif // GET_GL_PROC_ADDRESS
00738 }
00739 
00740 
00741 static void InitExt_ARB_vertex_buffer_object()
00742 {
00743 #if defined(GET_GL_PROC_ADDRESS)
00744     glx::glBindBufferARB = (glx::PFNGLBINDBUFFERARBPROC) GET_GL_PROC_ADDRESS("glBindBufferARB");
00745     glx::glDeleteBuffersARB = (glx::PFNGLDELETEBUFFERSARBPROC) GET_GL_PROC_ADDRESS("glDeleteBuffersARB");
00746     glx::glGenBuffersARB = (glx::PFNGLGENBUFFERSARBPROC) GET_GL_PROC_ADDRESS("glGenBuffersARB");
00747     glx::glIsBufferARB = (glx::PFNGLISBUFFERARBPROC) GET_GL_PROC_ADDRESS("glIsBufferARB");
00748     glx::glBufferDataARB = (glx::PFNGLBUFFERDATAARBPROC) GET_GL_PROC_ADDRESS("glBufferDataARB");
00749     glx::glBufferSubDataARB = (glx::PFNGLBUFFERSUBDATAARBPROC) GET_GL_PROC_ADDRESS("glBufferSubDataARB");
00750     glx::glGetBufferSubDataARB = (glx::PFNGLGETBUFFERSUBDATAARBPROC) GET_GL_PROC_ADDRESS("glGetBufferSubDataARB");
00751     glx::glMapBufferARB = (glx::PFNGLMAPBUFFERARBPROC) GET_GL_PROC_ADDRESS("glMapBufferARB");
00752     glx::glUnmapBufferARB = (glx::PFNGLUNMAPBUFFERARBPROC) GET_GL_PROC_ADDRESS("glUnmapBufferARB");
00753     glx::glGetBufferParameterivARB = (glx::PFNGLGETBUFFERPARAMETERIVARBPROC) GET_GL_PROC_ADDRESS("glGetBufferParameterivARB");
00754     glx::glGetBufferPointervARB = (glx::PFNGLGETBUFFERPOINTERVARBPROC) GET_GL_PROC_ADDRESS("glGetBufferPointervARB");
00755 #endif
00756 }
00757 
00758 
00759 static void InitExt_ARB_vertex_shader()
00760 {
00761 #if defined(GET_GL_PROC_ADDRESS)
00762     glx::glBindAttribLocationARB = (glx::PFNGLBINDATTRIBLOCATIONARBPROC) GET_GL_PROC_ADDRESS("glBindAttribLocationARB");
00763     glx::glGetActiveAttribARB = (glx::PFNGLGETACTIVEATTRIBARBPROC) GET_GL_PROC_ADDRESS("glGetActiveAttribARB");
00764     glx::glGetAttribLocationARB = (glx::PFNGLGETATTRIBLOCATIONARBPROC) GET_GL_PROC_ADDRESS("glGetAttribLocationARB");
00765 #endif
00766 }
00767 
00768 
00769 static void InitExt_ARB_shader_objects()
00770 {
00771 #if defined(GET_GL_PROC_ADDRESS)
00772     glx::glDeleteObjectARB = (glx::PFNGLDELETEOBJECTARBPROC) GET_GL_PROC_ADDRESS("glDeleteObjectARB");
00773     glx::glGetHandleARB = (glx::PFNGLGETHANDLEARBPROC) GET_GL_PROC_ADDRESS("glGetHandleARB");
00774     glx::glDetachObjectARB = (glx::PFNGLDETACHOBJECTARBPROC) GET_GL_PROC_ADDRESS("glDetachObjectARB");
00775     glx::glCreateShaderObjectARB = (glx::PFNGLCREATESHADEROBJECTARBPROC) GET_GL_PROC_ADDRESS("glCreateShaderObjectARB");
00776     glx::glShaderSourceARB = (glx::PFNGLSHADERSOURCEARBPROC) GET_GL_PROC_ADDRESS("glShaderSourceARB");
00777     glx::glCompileShaderARB = (glx::PFNGLCOMPILESHADERARBPROC) GET_GL_PROC_ADDRESS("glCompileShaderARB");
00778     glx::glCreateProgramObjectARB = (glx::PFNGLCREATEPROGRAMOBJECTARBPROC) GET_GL_PROC_ADDRESS("glCreateProgramObjectARB");
00779     glx::glAttachObjectARB = (glx::PFNGLATTACHOBJECTARBPROC) GET_GL_PROC_ADDRESS("glAttachObjectARB");
00780     glx::glLinkProgramARB = (glx::PFNGLLINKPROGRAMARBPROC) GET_GL_PROC_ADDRESS("glLinkProgramARB");
00781     glx::glUseProgramObjectARB = (glx::PFNGLUSEPROGRAMOBJECTARBPROC) GET_GL_PROC_ADDRESS("glUseProgramObjectARB");
00782     glx::glValidateProgramARB = (glx::PFNGLVALIDATEPROGRAMARBPROC) GET_GL_PROC_ADDRESS("glValidateProgramARB");
00783     glx::glUniform1fARB = (glx::PFNGLUNIFORM1FARBPROC) GET_GL_PROC_ADDRESS("glUniform1fARB");
00784     glx::glUniform2fARB = (glx::PFNGLUNIFORM2FARBPROC) GET_GL_PROC_ADDRESS("glUniform2fARB");
00785     glx::glUniform3fARB = (glx::PFNGLUNIFORM3FARBPROC) GET_GL_PROC_ADDRESS("glUniform3fARB");
00786     glx::glUniform4fARB = (glx::PFNGLUNIFORM4FARBPROC) GET_GL_PROC_ADDRESS("glUniform4fARB");
00787     glx::glUniform1iARB = (glx::PFNGLUNIFORM1IARBPROC) GET_GL_PROC_ADDRESS("glUniform1iARB");
00788     glx::glUniform2iARB = (glx::PFNGLUNIFORM2IARBPROC) GET_GL_PROC_ADDRESS("glUniform2iARB");
00789     glx::glUniform3iARB = (glx::PFNGLUNIFORM3IARBPROC) GET_GL_PROC_ADDRESS("glUniform3iARB");
00790     glx::glUniform4iARB = (glx::PFNGLUNIFORM4IARBPROC) GET_GL_PROC_ADDRESS("glUniform4iARB");
00791     glx::glUniform1fvARB = (glx::PFNGLUNIFORM1FVARBPROC) GET_GL_PROC_ADDRESS("glUniform1fvARB");
00792     glx::glUniform2fvARB = (glx::PFNGLUNIFORM2FVARBPROC) GET_GL_PROC_ADDRESS("glUniform2fvARB");
00793     glx::glUniform3fvARB = (glx::PFNGLUNIFORM3FVARBPROC) GET_GL_PROC_ADDRESS("glUniform3fvARB");
00794     glx::glUniform4fvARB = (glx::PFNGLUNIFORM4FVARBPROC) GET_GL_PROC_ADDRESS("glUniform4fvARB");
00795     glx::glUniform1ivARB = (glx::PFNGLUNIFORM1IVARBPROC) GET_GL_PROC_ADDRESS("glUniform1ivARB");
00796     glx::glUniform2ivARB = (glx::PFNGLUNIFORM2IVARBPROC) GET_GL_PROC_ADDRESS("glUniform2ivARB");
00797     glx::glUniform3ivARB = (glx::PFNGLUNIFORM3IVARBPROC) GET_GL_PROC_ADDRESS("glUniform3ivARB");
00798     glx::glUniform4ivARB = (glx::PFNGLUNIFORM4IVARBPROC) GET_GL_PROC_ADDRESS("glUniform4ivARB");
00799     glx::glUniformMatrix2fvARB = (glx::PFNGLUNIFORMMATRIX2FVARBPROC) GET_GL_PROC_ADDRESS("glUniformMatrix2fvARB");
00800     glx::glUniformMatrix3fvARB = (glx::PFNGLUNIFORMMATRIX3FVARBPROC) GET_GL_PROC_ADDRESS("glUniformMatrix3fvARB");
00801     glx::glUniformMatrix4fvARB = (glx::PFNGLUNIFORMMATRIX4FVARBPROC) GET_GL_PROC_ADDRESS("glUniformMatrix4fvARB");
00802     glx::glGetObjectParameterfvARB = (glx::PFNGLGETOBJECTPARAMETERFVARBPROC) GET_GL_PROC_ADDRESS("glGetObjectParameterfvARB");
00803     glx::glGetObjectParameterivARB = (glx::PFNGLGETOBJECTPARAMETERIVARBPROC) GET_GL_PROC_ADDRESS("glGetObjectParameterivARB");
00804     glx::glGetInfoLogARB = (glx::PFNGLGETINFOLOGARBPROC) GET_GL_PROC_ADDRESS("glGetInfoLogARB");
00805     glx::glGetAttachedObjectsARB = (glx::PFNGLGETATTACHEDOBJECTSARBPROC) GET_GL_PROC_ADDRESS("glGetAttachedObjectsARB");
00806     glx::glGetUniformLocationARB = (glx::PFNGLGETUNIFORMLOCATIONARBPROC) GET_GL_PROC_ADDRESS("glGetUniformLocationARB");
00807     glx::glGetActiveUniformARB = (glx::PFNGLGETACTIVEUNIFORMARBPROC) GET_GL_PROC_ADDRESS("glGetActiveUniformARB");
00808     glx::glGetUniformfvARB = (glx::PFNGLGETUNIFORMFVARBPROC) GET_GL_PROC_ADDRESS("glGetUniformfvARB");
00809     glx::glGetUniformivARB = (glx::PFNGLGETUNIFORMIVARBPROC) GET_GL_PROC_ADDRESS("glGetUniformivARB");
00810     glx::glGetShaderSourceARB = (glx::PFNGLGETSHADERSOURCEARBPROC) GET_GL_PROC_ADDRESS("glGetShaderSourceARB");
00811 #endif
00812 }
00813 
00814 
00815 void InitExtension(const char* ext)
00816 {
00817     if (!strcmp(ext, "GL_NV_fragment_program"))
00818         InitExt_NV_fragment_program();
00819     else if (!strcmp(ext, "GL_ARB_vertex_program"))
00820         InitExt_ARB_vertex_program();
00821     else if (!strcmp(ext, "GL_ARB_multitexture"))
00822         InitExt_ARB_multitexture();
00823     else if (!strcmp(ext, "GL_ARB_vertex_buffer_object"))
00824         InitExt_ARB_vertex_buffer_object();
00825     else if (!strcmp(ext, "GL_NV_register_combiners"))
00826         InitExt_NV_register_combiners();
00827     else if (!strcmp(ext, "GL_NV_register_combiners2"))
00828         InitExt_NV_register_combiners2();
00829     else if (!strcmp(ext, "GL_NV_vertex_program"))
00830         InitExt_NV_vertex_program();
00831     else if (!strcmp(ext, "GL_ARB_texture_compression"))
00832         InitExt_ARB_texture_compression();
00833     else if (!strcmp(ext, "GL_EXT_blend_minmax"))
00834         InitExt_EXT_blend_minmax();
00835     else if (!strcmp(ext, "GL_EXT_paletted_texture"))
00836         InitExt_EXT_paletted_texture();
00837     else if (!strcmp(ext, "GL_ARB_shader_objects"))
00838         InitExt_ARB_shader_objects();
00839     else if (!strcmp(ext, "GL_ARB_vertex_shader"))
00840         InitExt_ARB_vertex_shader();
00841     else if (!strcmp(ext, "WGL_EXT_swap_control"))
00842         InitExt_EXT_swap_control();
00843 }
00844 
00845 
00846 bool ExtensionSupported(const char *ext)
00847 {
00848     char *extensions = (char *) glGetString(GL_EXTENSIONS);
00849 
00850     if (extensions == NULL)
00851         return false;
00852 
00853     int len = strlen(ext);
00854     for (;;) {
00855         if (strncmp(extensions, ext, len) == 0)
00856             return true;
00857         extensions = strchr(extensions, ' ');
00858         if  (extensions != NULL)
00859             extensions++;
00860         else
00861             break;
00862     }
00863 
00864     return false;
00865 }

Generated on Sat Jan 14 22:30:27 2006 for Celestia by  doxygen 1.4.1