1 /* ----------------------------------------------------------------------------
2 Copyright (c) 2001-2002, Lev Povalahev
3 All rights reserved.
4 
5 Redistribution and use in source and binary forms, with or without modification,
6 are permitted provided that the following conditions are met:
7 
8     * Redistributions of source code must retain the above copyright notice,
9       this list of conditions and the following disclaimer.
10     * Redistributions in binary form must reproduce the above copyright notice,
11       this list of conditions and the following disclaimer in the documentation
12       and/or other materials provided with the distribution.
13     * The name of the author may not be used to endorse or promote products
14       derived from this software without specific prior written permission.
15 
16 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
17 ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18 WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
19 IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
20 INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
21 BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
22 OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
23 WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
24 ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
25 THE POSSIBILITY OF SUCH DAMAGE.
26 ------------------------------------------------------------------------------*/
27 /*
28     Lev Povalahev
29 
30     levp@gmx.net
31 
32     http://www.levp.de/3d/
33 
34 */
35 
36 /* VERSION 1.04 (see header for details) */
37 
38 #include "extgl.h"
39 #include <stdio.h>
40 #include <string.h>
41 
42 #if !defined(_WIN32) && !defined(__CYGWIN__) && !defined(__MINGW32__)
43 #include <GL/glx.h>
44 #endif /* _WIN32 */
45 
46 /* turn off the warning for the borland compiler*/
47 #ifdef __BORLANDC__
48 #pragma warn -8064
49 #pragma warn -8065
50 #endif /* __BORLANDC__	*/
51 
52 /* function variables */
53 
54 /*-------------------------------------*/
55 /* WGL stuff */
56 /*-------------------------------------*/
57 
58 #if defined(_WIN32) || defined(__CYGWIN__) || defined(__MINGW32__)
59 
60 /* WGL_EXT_etxension_string */
61 
62 #ifdef WGL_EXT_extensions_string
63 wglGetExtensionsStringEXTPROC wglGetExtensionsStringEXT = NULL;
64 #endif /* WGL_EXT_extension_string */
65 
66 /* WGL_ARB_buffer_region */
67 
68 #ifdef WGL_ARB_buffer_region
69 wglCreateBufferRegionARBPROC wglCreateBufferRegionARB = NULL;
70 wglDeleteBufferRegionARBPROC wglDeleteBufferRegionARB = NULL;
71 wglSaveBufferRegionARBPROC wglSaveBufferRegionARB = NULL;
72 wglRestoreBufferRegionARBPROC wglRestoreBufferRegionARB = NULL;
73 #endif /* WGL_ARB_buffer_region */
74 
75 /* WGL_ARB_extension_string */
76 
77 
78 #ifdef WGL_ARB_extensions_string
79 wglGetExtensionsStringARBPROC wglGetExtensionsStringARB = NULL;
80 #endif /* WGL_ARB_extension_string */
81 
82 /* WGL_ARB_pbuffer */
83 
84 #ifdef WGL_ARB_pbuffer
85 wglCreatePbufferARBPROC wglCreatePbufferARB = NULL;
86 wglGetPbufferDCARBPROC wglGetPbufferDCARB = NULL;
87 wglReleasePbufferDCARBPROC wglReleasePbufferDCARB = NULL;
88 wglDestroyPbufferARBPROC wglDestroyPbufferARB = NULL;
89 wglQueryPbufferARBPROC wglQueryPbufferARB = NULL;
90 #endif /* WGL_ARB_pbuffer */
91 
92 /* WGL_ARB_pixel_format */
93 
94 #ifdef WGL_ARB_pixel_format
95 wglGetPixelFormatAttribivARBPROC wglGetPixelFormatAttribivARB = NULL;
96 wglGetPixelFormatAttribfvARBPROC wglGetPixelFormatAttribfvARB = NULL;
97 wglChoosePixelFormatARBPROC wglChoosePixelFormatARB = NULL;
98 #endif /* WGL_ARB_pixel_format */
99 
100 /* WGL_ARB_render_texture */
101 
102 #ifdef WGL_ARB_render_texture
103 wglBindTexImageARBPROC wglBindTexImageARB = NULL;
104 wglReleaseTexImageARBPROC wglReleaseTexImageARB = NULL;
105 wglSetPbufferAttribARBPROC wglSetPbufferAttribARB = NULL;
106 #endif /* WGL_ARB_render_texture */
107 
108 /* WGL_EXT_swap_control */
109 
110 #ifdef WGL_EXT_swap_control
111 wglSwapIntervalEXTPROC wglSwapIntervalEXT = NULL;
112 wglGetSwapIntervalEXTPROC wglGetSwapIntervalEXT = NULL;
113 #endif /* WGL_EXT_swap_control */
114 
115 /* WGL_ARB_make_current_read */
116 
117 #ifdef WGL_ARB_make_current_read
118 wglMakeContextCurrentARBPROC wglMakeContextCurrentARB = NULL;
119 wglGetCurrentReadDCARBPROC wglGetCurrentReadDCARB = NULL;
120 #endif /* WGL_ARB_make_current_read*/
121 
122 /* VAR */
123 
124 #endif /* WIN32 */
125 
126 /*-------------------------------------*/
127 /*---WGL STUFF END---------------------*/
128 /*-------------------------------------*/
129 
130 #if defined(_WIN32) || defined(__CYGWIN__) || defined(__MINGW32__)
131 
132 #ifdef GL_VERSION_1_2
133 glDrawRangeElementsPROC glDrawRangeElements = NULL;
134 glTexImage3DPROC glTexImage3D = NULL;
135 glTexSubImage3DPROC glTexSubImage3D = NULL;
136 glCopyTexSubImage3DPROC glCopyTexSubImage3D = NULL;
137 #endif /* GL_VERSION_1_2 */
138 
139 #ifdef GL_ARB_imaging
140 glBlendColorPROC glBlendColor = NULL;
141 glBlendEquationPROC glBlendEquation = NULL;
142 glColorTablePROC glColorTable = NULL;
143 glColorTableParameterfvPROC glColorTableParameterfv = NULL;
144 glColorTableParameterivPROC glColorTableParameteriv = NULL;
145 glCopyColorTablePROC glCopyColorTable = NULL;
146 glGetColorTablePROC glGetColorTable = NULL;
147 glGetColorTableParameterfvPROC glGetColorTableParameterfv = NULL;
148 glGetColorTableParameterivPROC glGetColorTableParameteriv = NULL;
149 glColorSubTablePROC glColorSubTable = NULL;
150 glCopyColorSubTablePROC glCopyColorSubTable = NULL;
151 glConvolutionFilter1DPROC glConvolutionFilter1D = NULL;
152 glConvolutionFilter2DPROC glConvolutionFilter2D = NULL;
153 glConvolutionParameterfPROC glConvolutionParameterf = NULL;
154 glConvolutionParameterfvPROC glConvolutionParameterfv = NULL;
155 glConvolutionParameteriPROC glConvolutionParameteri = NULL;
156 glConvolutionParameterivPROC glConvolutionParameteriv = NULL;
157 glCopyConvolutionFilter1DPROC glCopyConvolutionFilter1D = NULL;
158 glCopyConvolutionFilter2DPROC glCopyConvolutionFilter2D = NULL;
159 glGetConvolutionFilterPROC glGetConvolutionFilter = NULL;
160 glGetConvolutionParameterfvPROC glGetConvolutionParameterfv = NULL;
161 glGetConvolutionParameterivPROC glGetConvolutionParameteriv = NULL;
162 glGetSeparableFilterPROC glGetSeparableFilter = NULL;
163 glSeparableFilter2DPROC glSeparableFilter2D = NULL;
164 glGetHistogramPROC glGetHistogram = NULL;
165 glGetHistogramParameterfvPROC glGetHistogramParameterfv = NULL;
166 glGetHistogramParameterivPROC glGetHistogramParameteriv = NULL;
167 glGetMinmaxPROC glGetMinmax = NULL;
168 glGetMinmaxParameterfvPROC glGetMinmaxParameterfv = NULL;
169 glGetMinmaxParameterivPROC glGetMinmaxParameteriv = NULL;
170 glHistogramPROC glHistogram = NULL;
171 glMinmaxPROC glMinmax = NULL;
172 glResetHistogramPROC glResetHistogram = NULL;
173 glResetMinmaxPROC glResetMinmax = NULL;
174 #endif /* GL_ARB_imaging */
175 
176 /* 1.3 */
177 
178 #ifdef GL_VERSION_1_3
179 glActiveTexturePROC glActiveTexture = NULL;
180 glClientActiveTexturePROC glClientActiveTexture = NULL;
181 glMultiTexCoord1dPROC glMultiTexCoord1d = NULL;
182 glMultiTexCoord1dvPROC glMultiTexCoord1dv = NULL;
183 glMultiTexCoord1fPROC glMultiTexCoord1f = NULL;
184 glMultiTexCoord1fvPROC glMultiTexCoord1fv = NULL;
185 glMultiTexCoord1iPROC glMultiTexCoord1i = NULL;
186 glMultiTexCoord1ivPROC glMultiTexCoord1iv = NULL;
187 glMultiTexCoord1sPROC glMultiTexCoord1s = NULL;
188 glMultiTexCoord1svPROC glMultiTexCoord1sv = NULL;
189 glMultiTexCoord2dPROC glMultiTexCoord2d = NULL;
190 glMultiTexCoord2dvPROC glMultiTexCoord2dv = NULL;
191 glMultiTexCoord2fPROC glMultiTexCoord2f = NULL;
192 glMultiTexCoord2fvPROC glMultiTexCoord2fv = NULL;
193 glMultiTexCoord2iPROC glMultiTexCoord2i = NULL;
194 glMultiTexCoord2ivPROC glMultiTexCoord2iv = NULL;
195 glMultiTexCoord2sPROC glMultiTexCoord2s = NULL;
196 glMultiTexCoord2svPROC glMultiTexCoord2sv = NULL;
197 glMultiTexCoord3dPROC glMultiTexCoord3d = NULL;
198 glMultiTexCoord3dvPROC glMultiTexCoord3dv = NULL;
199 glMultiTexCoord3fPROC glMultiTexCoord3f = NULL;
200 glMultiTexCoord3fvPROC glMultiTexCoord3fv = NULL;
201 glMultiTexCoord3iPROC glMultiTexCoord3i = NULL;
202 glMultiTexCoord3ivPROC glMultiTexCoord3iv = NULL;
203 glMultiTexCoord3sPROC glMultiTexCoord3s = NULL;
204 glMultiTexCoord3svPROC glMultiTexCoord3sv = NULL;
205 glMultiTexCoord4dPROC glMultiTexCoord4d = NULL;
206 glMultiTexCoord4dvPROC glMultiTexCoord4dv = NULL;
207 glMultiTexCoord4fPROC glMultiTexCoord4f = NULL;
208 glMultiTexCoord4fvPROC glMultiTexCoord4fv = NULL;
209 glMultiTexCoord4iPROC glMultiTexCoord4i = NULL;
210 glMultiTexCoord4ivPROC glMultiTexCoord4iv = NULL;
211 glMultiTexCoord4sPROC glMultiTexCoord4s = NULL;
212 glMultiTexCoord4svPROC glMultiTexCoord4sv = NULL;
213 glLoadTransposeMatrixfPROC glLoadTransposeMatrixf = NULL;
214 glLoadTransposeMatrixdPROC glLoadTransposeMatrixd = NULL;
215 glMultTransposeMatrixfPROC glMultTransposeMatrixf = NULL;
216 glMultTransposeMatrixdPROC glMultTransposeMatrixd = NULL;
217 glCompressedTexImage3DPROC glCompressedTexImage3D = NULL;
218 glCompressedTexImage2DPROC glCompressedTexImage2D = NULL;
219 glCompressedTexImage1DPROC glCompressedTexImage1D = NULL;
220 glCompressedTexSubImage3DPROC glCompressedTexSubImage3D = NULL;
221 glCompressedTexSubImage2DPROC glCompressedTexSubImage2D = NULL;
222 glCompressedTexSubImage1DPROC glCompressedTexSubImage1D = NULL;
223 glGetCompressedTexImagePROC glGetCompressedTexImage = NULL;
224 glSampleCoveragePROC glSampleCoverage = NULL;
225 #endif /* GL_VERSION_1_3 */
226 
227 /* ARB_multitexture */
228 
229 #ifdef GL_ARB_multitexture
230 glActiveTextureARBPROC glActiveTextureARB = NULL;
231 glClientActiveTextureARBPROC glClientActiveTextureARB = NULL;
232 glMultiTexCoord1dARBPROC glMultiTexCoord1dARB = NULL;
233 glMultiTexCoord1dvARBPROC glMultiTexCoord1dvARB = NULL;
234 glMultiTexCoord1fARBPROC glMultiTexCoord1fARB = NULL;
235 glMultiTexCoord1fvARBPROC glMultiTexCoord1fvARB = NULL;
236 glMultiTexCoord1iARBPROC glMultiTexCoord1iARB = NULL;
237 glMultiTexCoord1ivARBPROC glMultiTexCoord1ivARB = NULL;
238 glMultiTexCoord1sARBPROC glMultiTexCoord1sARB = NULL;
239 glMultiTexCoord1svARBPROC glMultiTexCoord1svARB = NULL;
240 glMultiTexCoord2dARBPROC glMultiTexCoord2dARB = NULL;
241 glMultiTexCoord2dvARBPROC glMultiTexCoord2dvARB = NULL;
242 glMultiTexCoord2fARBPROC glMultiTexCoord2fARB = NULL;
243 glMultiTexCoord2fvARBPROC glMultiTexCoord2fvARB = NULL;
244 glMultiTexCoord2iARBPROC glMultiTexCoord2iARB = NULL;
245 glMultiTexCoord2ivARBPROC glMultiTexCoord2ivARB = NULL;
246 glMultiTexCoord2sARBPROC glMultiTexCoord2sARB = NULL;
247 glMultiTexCoord2svARBPROC glMultiTexCoord2svARB = NULL;
248 glMultiTexCoord3dARBPROC glMultiTexCoord3dARB = NULL;
249 glMultiTexCoord3dvARBPROC glMultiTexCoord3dvARB = NULL;
250 glMultiTexCoord3fARBPROC glMultiTexCoord3fARB = NULL;
251 glMultiTexCoord3fvARBPROC glMultiTexCoord3fvARB = NULL;
252 glMultiTexCoord3iARBPROC glMultiTexCoord3iARB = NULL;
253 glMultiTexCoord3ivARBPROC glMultiTexCoord3ivARB = NULL;
254 glMultiTexCoord3sARBPROC glMultiTexCoord3sARB = NULL;
255 glMultiTexCoord3svARBPROC glMultiTexCoord3svARB = NULL;
256 glMultiTexCoord4dARBPROC glMultiTexCoord4dARB = NULL;
257 glMultiTexCoord4dvARBPROC glMultiTexCoord4dvARB = NULL;
258 glMultiTexCoord4fARBPROC glMultiTexCoord4fARB = NULL;
259 glMultiTexCoord4fvARBPROC glMultiTexCoord4fvARB = NULL;
260 glMultiTexCoord4iARBPROC glMultiTexCoord4iARB = NULL;
261 glMultiTexCoord4ivARBPROC glMultiTexCoord4ivARB = NULL;
262 glMultiTexCoord4sARBPROC glMultiTexCoord4sARB = NULL;
263 glMultiTexCoord4svARBPROC glMultiTexCoord4svARB = NULL;
264 #endif /* GL_ARB_multitexture */
265 
266 #endif /* WIN32 */
267 
268 /* ARB_transpose_matrix */
269 
270 #ifdef GL_ARB_transpose_matrix
271 glLoadTransposeMatrixfARBPROC glLoadTransposeMatrixfARB = NULL;
272 glLoadTransposeMatrixdARBPROC glLoadTransposeMatrixdARB = NULL;
273 glMultTransposeMatrixfARBPROC glMultTransposeMatrixfARB = NULL;
274 glMultTransposeMatrixdARBPROC glMultTransposeMatrixdARB = NULL;
275 #endif /* GL_ARB_transpose_matrix */
276 
277 /* ARB_texture_compression */
278 
279 #ifdef GL_ARB_texture_compression
280 glCompressedTexImage3DARBPROC glCompressedTexImage3DARB = NULL;
281 glCompressedTexImage2DARBPROC glCompressedTexImage2DARB = NULL;
282 glCompressedTexImage1DARBPROC glCompressedTexImage1DARB = NULL;
283 glCompressedTexSubImage3DARBPROC glCompressedTexSubImage3DARB = NULL;
284 glCompressedTexSubImage2DARBPROC glCompressedTexSubImage2DARB = NULL;
285 glCompressedTexSubImage1DARBPROC glCompressedTexSubImage1DARB = NULL;
286 glGetCompressedTexImageARBPROC glGetCompressedTexImageARB = NULL;
287 #endif /* GL_ARB_texture_compression */
288 
289 /* EXT_secondary_color */
290 
291 #ifdef GL_EXT_secondary_color
292 glSecondaryColor3bEXTPROC glSecondaryColor3bEXT = NULL;
293 glSecondaryColor3bvEXTPROC glSecondaryColor3bvEXT = NULL;
294 glSecondaryColor3dEXTPROC glSecondaryColor3dEXT = NULL;
295 glSecondaryColor3dvEXTPROC glSecondaryColor3dvEXT = NULL;
296 glSecondaryColor3fEXTPROC glSecondaryColor3fEXT = NULL;
297 glSecondaryColor3fvEXTPROC glSecondaryColor3fvEXT = NULL;
298 glSecondaryColor3iEXTPROC glSecondaryColor3iEXT = NULL;
299 glSecondaryColor3ivEXTPROC glSecondaryColor3ivEXT = NULL;
300 glSecondaryColor3sEXTPROC glSecondaryColor3sEXT = NULL;
301 glSecondaryColor3svEXTPROC glSecondaryColor3svEXT = NULL;
302 glSecondaryColor3ubEXTPROC glSecondaryColor3ubEXT = NULL;
303 glSecondaryColor3ubvEXTPROC glSecondaryColor3ubvEXT = NULL;
304 glSecondaryColor3uiEXTPROC glSecondaryColor3uiEXT = NULL;
305 glSecondaryColor3uivEXTPROC glSecondaryColor3uivEXT = NULL;
306 glSecondaryColor3usEXTPROC glSecondaryColor3usEXT = NULL;
307 glSecondaryColor3usvEXTPROC glSecondaryColor3usvEXT = NULL;
308 glSecondaryColorPointerEXTPROC glSecondaryColorPointerEXT = NULL;
309 #endif /* GL_EXT_secondary_color */
310 
311 /* EXT_compiled_vertex_array */
312 
313 #ifdef GL_EXT_compiled_vertex_array
314 glLockArraysEXTPROC glLockArraysEXT = NULL;
315 glUnlockArraysEXTPROC glUnlockArraysEXT = NULL;
316 #endif /* GL_EXT_compiled_vertex_array */
317 
318 /* EXT_fog_coord */
319 
320 #ifdef GL_EXT_fog_coord
321 glFogCoordfEXTPROC glFogCoordfEXT = NULL;
322 glFogCoordfvEXTPROC glFogCoordfvEXT = NULL;
323 glFogCoorddEXTPROC glFogCoorddEXT = NULL;
324 glFogCoorddvEXTPROC glFogCoorddvEXT = NULL;
325 glFogCoordPointerEXTPROC glFogCoordPointerEXT = NULL;
326 #endif /* GL_EXT_for_color */
327 
328 /* NV_vertex_array_range */
329 
330 #ifdef GL_NV_vertex_array_range
331 glFlushVertexArrayRangeNVPROC glFlushVertexArrayRangeNV = NULL;
332 glVertexArrayRangeNVPROC glVertexArrayRangeNV = NULL;
333 
334 #if defined(_WIN32) || defined(__CYGWIN__) || defined(__MINGW32__)
335 wglAllocateMemoryNVPROC wglAllocateMemoryNV = NULL;
336 wglFreeMemoryNVPROC wglFreeMemoryNV = NULL;
337 #else
338 glXAllocateMemoryNVPROC glXAllocateMemoryNV = NULL;
339 glXFreeMemoryNVPROC glXFreeMemoryNV = NULL;
340 #endif /* WIN32 */
341 
342 #endif /* GL_NV_vertex_array_range */
343 
344 /* EXT_point_parameters */
345 
346 #ifdef GL_EXT_point_parameters
347 glPointParameterfEXTPROC glPointParameterfEXT = NULL;
348 glPointParameterfvEXTPROC glPointParameterfvEXT = NULL;
349 #endif /* GL_EXT_point_parameters */
350 
351 /* NV_register_combiners */
352 
353 #ifdef GL_NV_register_combiners
354 glCombinerParameterfvNVPROC glCombinerParameterfvNV = NULL;
355 glCombinerParameterfNVPROC  glCombinerParameterfNV = NULL;
356 glCombinerParameterivNVPROC glCombinerParameterivNV = NULL;
357 glCombinerParameteriNVPROC glCombinerParameteriNV = NULL;
358 glCombinerInputNVPROC glCombinerInputNV = NULL;
359 glCombinerOutputNVPROC glCombinerOutputNV = NULL;
360 glFinalCombinerInputNVPROC glFinalCombinerInputNV = NULL;
361 glGetCombinerInputParameterfvNVPROC glGetCombinerInputParameterfvNV = NULL;
362 glGetCombinerInputParameterivNVPROC glGetCombinerInputParameterivNV = NULL;
363 glGetCombinerOutputParameterfvNVPROC glGetCombinerOutputParameterfvNV = NULL;
364 glGetCombinerOutputParameterivNVPROC glGetCombinerOutputParameterivNV = NULL;
365 glGetFinalCombinerInputParameterfvNVPROC glGetFinalCombinerInputParameterfvNV = NULL;
366 glGetFinalCombinerInputParameterivNVPROC glGetFinalCombinerInputParameterivNV = NULL;
367 #endif /* GL_NV_register_combiners */
368 
369 /* ARB_multisample */
370 
371 #ifdef GL_ARB_multisample
372 glSampleCoverageARBPROC glSampleCoverageARB = NULL;
373 #endif /* GL_ARB_multisample */
374 
375 /* EXT_vertex_weighting */
376 
377 #ifdef GL_EXT_vertex_weighting
378 glVertexWeightfEXTPROC glVertexWeightfEXT = NULL;
379 glVertexWeightfvEXTPROC glVertexWeightfvEXT = NULL;
380 glVertexWeightPointerEXTPROC glVertexWeightPointerEXT = NULL;
381 #endif /* GL_EXT_vertex_weighting */
382 
383 /* NV_vertex_program */
384 
385 #ifdef GL_NV_vertex_program
386 glBindProgramNVPROC glBindProgramNV = NULL;
387 glDeleteProgramsNVPROC glDeleteProgramsNV = NULL;
388 glExecuteProgramNVPROC glExecuteProgramNV = NULL;
389 glGenProgramsNVPROC glGenProgramsNV = NULL;
390 glAreProgramsResidentNVPROC glAreProgramsResidentNV = NULL;
391 glRequestResidentProgramsNVPROC glRequestResidentProgramsNV = NULL;
392 glGetProgramParameterfvNVPROC glGetProgramParameterfvNV = NULL;
393 glGetProgramParameterdvNVPROC glGetProgramParameterdvNV = NULL;
394 glGetProgramivNVPROC glGetProgramivNV = NULL;
395 glGetProgramStringNVPROC glGetProgramStringNV = NULL;
396 glGetTrackMatrixivNVPROC glGetTrackMatrixivNV = NULL;
397 glGetVertexAttribdvNVPROC glGetVertexAttribdvNV = NULL;
398 glGetVertexAttribfvNVPROC glGetVertexAttribfvNV = NULL;
399 glGetVertexAttribivNVPROC glGetVertexAttribivNV = NULL;
400 glGetVertexAttribPointervNVPROC glGetVertexAttribPointervNV = NULL;
401 glIsProgramNVPROC glIsProgramNV = NULL;
402 glLoadProgramNVPROC glLoadProgramNV = NULL;
403 glProgramParameter4fNVPROC glProgramParameter4fNV = NULL;
404 glProgramParameter4dNVPROC glProgramParameter4dNV = NULL;
405 glProgramParameter4dvNVPROC glProgramParameter4dvNV = NULL;
406 glProgramParameter4fvNVPROC glProgramParameter4fvNV = NULL;
407 glProgramParameters4dvNVPROC glProgramParameters4dvNV = NULL;
408 glProgramParameters4fvNVPROC glProgramParameters4fvNV = NULL;
409 glTrackMatrixNVPROC glTrackMatrixNV = NULL;
410 glVertexAttribPointerNVPROC glVertexAttribPointerNV = NULL;
411 glVertexAttrib1sNVPROC glVertexAttrib1sNV = NULL;
412 glVertexAttrib1fNVPROC glVertexAttrib1fNV = NULL;
413 glVertexAttrib1dNVPROC glVertexAttrib1dNV = NULL;
414 glVertexAttrib2sNVPROC glVertexAttrib2sNV = NULL;
415 glVertexAttrib2fNVPROC glVertexAttrib2fNV = NULL;
416 glVertexAttrib2dNVPROC glVertexAttrib2dNV = NULL;
417 glVertexAttrib3sNVPROC glVertexAttrib3sNV = NULL;
418 glVertexAttrib3fNVPROC glVertexAttrib3fNV = NULL;
419 glVertexAttrib3dNVPROC glVertexAttrib3dNV = NULL;
420 glVertexAttrib4sNVPROC glVertexAttrib4sNV = NULL;
421 glVertexAttrib4fNVPROC glVertexAttrib4fNV = NULL;
422 glVertexAttrib4dNVPROC glVertexAttrib4dNV = NULL;
423 glVertexAttrib4ubNVPROC glVertexAttrib4ubNV = NULL;
424 glVertexAttrib1svNVPROC glVertexAttrib1svNV = NULL;
425 glVertexAttrib1fvNVPROC glVertexAttrib1fvNV = NULL;
426 glVertexAttrib1dvNVPROC glVertexAttrib1dvNV = NULL;
427 glVertexAttrib2svNVPROC glVertexAttrib2svNV = NULL;
428 glVertexAttrib2fvNVPROC glVertexAttrib2fvNV = NULL;
429 glVertexAttrib2dvNVPROC glVertexAttrib2dvNV = NULL;
430 glVertexAttrib3svNVPROC glVertexAttrib3svNV = NULL;
431 glVertexAttrib3fvNVPROC glVertexAttrib3fvNV = NULL;
432 glVertexAttrib3dvNVPROC glVertexAttrib3dvNV = NULL;
433 glVertexAttrib4svNVPROC glVertexAttrib4svNV = NULL;
434 glVertexAttrib4fvNVPROC glVertexAttrib4fvNV = NULL;
435 glVertexAttrib4dvNVPROC glVertexAttrib4dvNV = NULL;
436 glVertexAttrib4ubvNVPROC glVertexAttrib4ubvNV = NULL;
437 glVertexAttribs1svNVPROC glVertexAttribs1svNV = NULL;
438 glVertexAttribs1fvNVPROC glVertexAttribs1fvNV = NULL;
439 glVertexAttribs1dvNVPROC glVertexAttribs1dvNV = NULL;
440 glVertexAttribs2svNVPROC glVertexAttribs2svNV = NULL;
441 glVertexAttribs2fvNVPROC glVertexAttribs2fvNV = NULL;
442 glVertexAttribs2dvNVPROC glVertexAttribs2dvNV = NULL;
443 glVertexAttribs3svNVPROC glVertexAttribs3svNV = NULL;
444 glVertexAttribs3fvNVPROC glVertexAttribs3fvNV = NULL;
445 glVertexAttribs3dvNVPROC glVertexAttribs3dvNV = NULL;
446 glVertexAttribs4svNVPROC glVertexAttribs4svNV = NULL;
447 glVertexAttribs4fvNVPROC glVertexAttribs4fvNV = NULL;
448 glVertexAttribs4dvNVPROC glVertexAttribs4dvNV = NULL;
449 glVertexAttribs4ubvNVPROC glVertexAttribs4ubvNV = NULL;
450 #endif /* GL_NV_vertex_program */
451 
452 /* NV_fence */
453 
454 #ifdef GL_NV_fence
455 glGenFencesNVPROC glGenFencesNV = NULL;
456 glDeleteFencesNVPROC glDeleteFencesNV = NULL;
457 glSetFenceNVPROC glSetFenceNV = NULL;
458 glTestFenceNVPROC glTestFenceNV = NULL;
459 glFinishFenceNVPROC glFinishFenceNV = NULL;
460 glIsFenceNVPROC glIsFenceNV = NULL;
461 glGetFenceivNVPROC glGetFenceivNV = NULL;
462 #endif /* GL_NV_fence */
463 
464 /* NV_register_combiners2 */
465 
466 #ifdef GL_NV_register_combiners2
467 glCombinerStageParameterfvNVPROC glCombinerStageParameterfvNV = NULL;
468 glGetCombinerStageParameterfvNVPROC glGetCombinerStageParameterfvNV = NULL;
469 #endif /* GL_NV_register_combiners2 */
470 
471 /* NV_evaluators */
472 
473 #ifdef GL_NV_evaluators
474 glMapControlPointsNVPROC glMapControlPointsNV = NULL;
475 glMapParameterivNVPROC glMapParameterivNV = NULL;
476 glMapParameterfvNVPROC glMapParameterfvNV = NULL;
477 glGetMapControlPointsNVPROC glGetMapControlPointsNV = NULL;
478 glGetMapParameterivNVPROC glGetMapParameterivNV = NULL;
479 glGetMapParameterfvNVPROC glGetMapParameterfvNV = NULL;
480 glGetMapAttribParameterivNVPROC glGetMapAttribParameterivNV = NULL;
481 glGetMapAttribParameterfvNVPROC glGetMapAttribParameterfvNV = NULL;
482 glEvalMapsNVPROC glEvalMapsNV = NULL;
483 #endif /* GL_NV_evaluators */
484 
485 /* ATI_pn_triangles */
486 
487 #ifdef GL_ATI_pn_triangles
488 glPNTrianglesiATIPROC glPNTrianglesiATI = NULL;
489 glPNTrianglesfATIPROC glPNTrianglesfATI = NULL;
490 #endif /* GL_ATI_pn_triangles */
491 
492 /* ARB_point_parameters */
493 
494 #ifdef GL_ARB_point_parameters
495 glPointParameterfARBPROC glPointParameterfARB = NULL;
496 glPointParameterfvARBPROC glPointParameterfvARB = NULL;
497 #endif /* GL_ABR_point_parameters */
498 
499 /* ARB_vertex_blend */
500 
501 #ifdef GL_ARB_vertex_blend
502 glWeightbvARBPROC glWeightbvARB = NULL;
503 glWeightsvARBPROC glWeightsvARB = NULL;
504 glWeightivARBPROC glWeightivARB = NULL;
505 glWeightfvARBPROC glWeightfvARB = NULL;
506 glWeightdvARBPROC glWeightdvARB = NULL;
507 glWeightubvARBPROC glWeightubvARB = NULL;
508 glWeightusvARBPROC glWeightusvARB = NULL;
509 glWeightuivARBPROC glWeightuivARB = NULL;
510 glWeightPointerARBPROC glWeightPointerARB = NULL;
511 glVertexBlendARBPROC glVertexBlendARB = NULL;
512 #endif /* GL_ARB_vertex_blend */
513 
514 /* EXT_multi_draw_arrays */
515 
516 #ifdef GL_EXT_multi_draw_arrays
517 glMultiDrawArraysEXTPROC glMultiDrawArraysEXT = NULL;
518 glMultiDrawElementsEXTPROC glMultiDrawElementsEXT = NULL;
519 #endif /* GL_EXT_multi_draw_arrays */
520 
521 /* ARB_matrix_palette */
522 
523 #ifdef GL_ARB_matrix_palette
524 glCurrentPaletteMatrixARBPROC glCurrentPaletteMatrixARB = NULL;
525 glMatrixIndexubvARBPROC glMatrixIndexubvARB = NULL;
526 glMatrixIndexusvARBPROC glMatrixIndexusvARB = NULL;
527 glMatrixIndexuivARBPROC glMatrixIndexuivARB = NULL;
528 glMatrixIndexPointerARBPROC glMatrixIndexPointerARB = NULL;
529 #endif /* GL_ARB_matrix_palette */
530 
531 /* EXT_vertex_shader */
532 
533 #ifdef GL_EXT_vertex_shader
534 glBeginVertexShaderEXTPROC glBeginVertexShaderEXT = NULL;
535 glEndVertexShaderEXTPROC glEndVertexShaderEXT = NULL;
536 glBindVertexShaderEXTPROC glBindVertexShaderEXT = NULL;
537 glGenVertexShadersEXTPROC glGenVertexShadersEXT = NULL;
538 glDeleteVertexShaderEXTPROC glDeleteVertexShaderEXT = NULL;
539 glShaderOp1EXTPROC glShaderOp1EXT = NULL;
540 glShaderOp2EXTPROC glShaderOp2EXT = NULL;
541 glShaderOp3EXTPROC glShaderOp3EXT = NULL;
542 glSwizzleEXTPROC glSwizzleEXT = NULL;
543 glWriteMaskEXTPROC glWriteMaskEXT = NULL;
544 glInsertComponentEXTPROC glInsertComponentEXT = NULL;
545 glExtractComponentEXTPROC glExtractComponentEXT = NULL;
546 glGenSymbolsEXTPROC glGenSymbolsEXT = NULL;
547 glSetInvariantEXTPROC glSetInvariantEXT = NULL;
548 glSetLocalConstantEXTPROC glSetLocalConstantEXT = NULL;
549 glVariantbvEXTPROC glVariantbvEXT = NULL;
550 glVariantsvEXTPROC glVariantsvEXT = NULL;
551 glVariantivEXTPROC glVariantivEXT = NULL;
552 glVariantfvEXTPROC glVariantfvEXT = NULL;
553 glVariantdvEXTPROC glVariantdvEXT = NULL;
554 glVariantubvEXTPROC glVariantubvEXT = NULL;
555 glVariantusvEXTPROC glVariantusvEXT = NULL;
556 glVariantuivEXTPROC glVariantuivEXT = NULL;
557 glVariantPointerEXTPROC glVariantPointerEXT = NULL;
558 glEnableVariantClientStateEXTPROC glEnableVariantClientStateEXT = NULL;
559 glDisableVariantClientStateEXTPROC glDisableVariantClientStateEXT = NULL;
560 glBindLightParameterEXTPROC glBindLightParameterEXT = NULL;
561 glBindMaterialParameterEXTPROC glBindMaterialParameterEXT = NULL;
562 glBindTexGenParameterEXTPROC glBindTexGenParameterEXT = NULL;
563 glBindTextureUnitParameterEXTPROC glBindTextureUnitParameterEXT = NULL;
564 glBindParameterEXTPROC glBindParameterEXT = NULL;
565 glIsVariantEnabledEXTPROC glIsVariantEnabledEXT = NULL;
566 glGetVariantBooleanvEXTPROC glGetVariantBooleanvEXT = NULL;
567 glGetVariantIntegervEXTPROC glGetVariantIntegervEXT = NULL;
568 glGetVariantFloatvEXTPROC glGetVariantFloatvEXT = NULL;
569 glGetVariantPointervEXTPROC glGetVariantPointervEXT = NULL;
570 glGetInvariantBooleanvEXTPROC glGetInvariantBooleanvEXT = NULL;
571 glGetInvariantIntegervEXTPROC glGetInvariantIntegervEXT = NULL;
572 glGetInvariantFloatvEXTPROC glGetInvariantFloatvEXT = NULL;
573 glGetLocalConstantBooleanvEXTPROC glGetLocalConstantBooleanvEXT = NULL;
574 glGetLocalConstantIntegervEXTPROC glGetLocalConstantIntegervEXT = NULL;
575 glGetLocalConstantFloatvEXTPROC glGetLocalConstantFloatvEXT = NULL;
576 #endif /* GL_EXT_vertex_shader */
577 
578 /* ATI_envmap_bumpmap */
579 
580 #ifdef GL_ATI_envmap_bumpmap
581 glTexBumpParameterivATIPROC glTexBumpParameterivATI = NULL;
582 glTexBumpParameterfvATIPROC glTexBumpParameterfvATI = NULL;
583 glGetTexBumpParameterivATIPROC glGetTexBumpParameterivATI = NULL;
584 glGetTexBumpParameterfvATIPROC glGetTexBumpParameterfvATI = NULL;
585 #endif /* GL_ATI_envmap_bumpmap */
586 
587 /* ATI_fragment_shader */
588 
589 #ifdef GL_ATI_fragment_shader
590 glGenFragmentShadersATIPROC glGenFragmentShadersATI = NULL;
591 glBindFragmentShaderATIPROC glBindFragmentShaderATI = NULL;
592 glDeleteFragmentShaderATIPROC glDeleteFragmentShaderATI = NULL;
593 glBeginFragmentShaderATIPROC glBeginFragmentShaderATI = NULL;
594 glEndFragmentShaderATIPROC glEndFragmentShaderATI = NULL;
595 glPassTexCoordATIPROC glPassTexCoordATI = NULL;
596 glSampleMapATIPROC glSampleMapATI = NULL;
597 glColorFragmentOp1ATIPROC glColorFragmentOp1ATI = NULL;
598 glColorFragmentOp2ATIPROC glColorFragmentOp2ATI = NULL;
599 glColorFragmentOp3ATIPROC glColorFragmentOp3ATI = NULL;
600 glAlphaFragmentOp1ATIPROC glAlphaFragmentOp1ATI = NULL;
601 glAlphaFragmentOp2ATIPROC glAlphaFragmentOp2ATI = NULL;
602 glAlphaFragmentOp3ATIPROC glAlphaFragmentOp3ATI = NULL;
603 glSetFragmentShaderConstantATIPROC glSetFragmentShaderConstantATI = NULL;
604 #endif /* GL_ATI_fragment_shader */
605 
606 /* ATI_element_array */
607 
608 #ifdef GL_ATI_element_array
609 glElementPointerATIPROC glElementPointerATI = NULL;
610 glDrawElementArrayATIPROC glDrawElementArrayATI = NULL;
611 glDrawRangeElementArrayATIPROC glDrawRangeElementArrayATI = NULL;
612 #endif /* GL_ATI_element_array */
613 
614 /* ATI_vertex_streams */
615 
616 #ifdef GL_ATI_vertex_streams
617 glClientActiveVertexStreamATIPROC glClientActiveVertexStreamATI = NULL;
618 glVertexBlendEnviATIPROC glVertexBlendEnviATI = NULL;
619 glVertexBlendEnvfATIPROC glVertexBlendEnvfATI = NULL;
620 glVertexStream2sATIPROC glVertexStream2sATI = NULL;
621 glVertexStream2svATIPROC glVertexStream2svATI = NULL;
622 glVertexStream2iATIPROC glVertexStream2iATI = NULL;
623 glVertexStream2ivATIPROC glVertexStream2ivATI = NULL;
624 glVertexStream2fATIPROC glVertexStream2fATI = NULL;
625 glVertexStream2fvATIPROC glVertexStream2fvATI = NULL;
626 glVertexStream2dATIPROC glVertexStream2dATI = NULL;
627 glVertexStream2dvATIPROC glVertexStream2dvATI = NULL;
628 glVertexStream3sATIPROC glVertexStream3sATI = NULL;
629 glVertexStream3svATIPROC glVertexStream3svATI = NULL;
630 glVertexStream3iATIPROC glVertexStream3iATI = NULL;
631 glVertexStream3ivATIPROC glVertexStream3ivATI = NULL;
632 glVertexStream3fATIPROC glVertexStream3fATI = NULL;
633 glVertexStream3fvATIPROC glVertexStream3fvATI = NULL;
634 glVertexStream3dATIPROC glVertexStream3dATI = NULL;
635 glVertexStream3dvATIPROC glVertexStream3dvATI = NULL;
636 glVertexStream4sATIPROC glVertexStream4sATI = NULL;
637 glVertexStream4svATIPROC glVertexStream4svATI = NULL;
638 glVertexStream4iATIPROC glVertexStream4iATI = NULL;
639 glVertexStream4ivATIPROC glVertexStream4ivATI = NULL;
640 glVertexStream4fATIPROC glVertexStream4fATI = NULL;
641 glVertexStream4fvATIPROC glVertexStream4fvATI = NULL;
642 glVertexStream4dATIPROC glVertexStream4dATI = NULL;
643 glVertexStream4dvATIPROC glVertexStream4dvATI = NULL;
644 glNormalStream3bATIPROC glNormalStream3bATI = NULL;
645 glNormalStream3bvATIPROC glNormalStream3bvATI = NULL;
646 glNormalStream3sATIPROC glNormalStream3sATI = NULL;
647 glNormalStream3svATIPROC glNormalStream3svATI = NULL;
648 glNormalStream3iATIPROC glNormalStream3iATI = NULL;
649 glNormalStream3ivATIPROC glNormalStream3ivATI = NULL;
650 glNormalStream3fATIPROC glNormalStream3fATI = NULL;
651 glNormalStream3fvATIPROC glNormalStream3fvATI = NULL;
652 glNormalStream3dATIPROC glNormalStream3dATI = NULL;
653 glNormalStream3dvATIPROC glNormalStream3dvATI = NULL;
654 #endif /* GL_ATI_vertex_streams */
655 
656 /* ATI_vertex_array_object */
657 
658 #ifdef GL_ATI_vertex_array_object
659 glNewObjectBufferATIPROC glNewObjectBufferATI = NULL;
660 glIsObjectBufferATIPROC glIsObjectBufferATI = NULL;
661 glUpdateObjectBufferATIPROC glUpdateObjectBufferATI = NULL;
662 glGetObjectBufferfvATIPROC glGetObjectBufferfvATI = NULL;
663 glGetObjectBufferivATIPROC glGetObjectBufferivATI = NULL;
664 glFreeObjectBufferATIPROC glFreeObjectBufferATI = NULL;
665 glArrayObjectATIPROC glArrayObjectATI = NULL;
666 glGetArrayObjectfvATIPROC glGetArrayObjectfvATI = NULL;
667 glGetArrayObjectivATIPROC glGetArrayObjectivATI = NULL;
668 glVariantArrayObjectATIPROC glVariantArrayObjectATI = NULL;
669 glGetVariantArrayObjectfvATIPROC glGetVariantArrayObjectfvATI = NULL;
670 glGetVariantArrayObjectivATIPROC glGetVariantArrayObjectivATI = NULL;
671 #endif /* GL_ATI_vertex_array_object */
672 
673 /* NV_occlusion_query */
674 
675 #ifdef GL_NV_occlusion_query
676 glGenOcclusionQueriesNVPROC glGenOcclusionQueriesNV = NULL;
677 glDeleteOcclusionQueriesNVPROC glDeleteOcclusionQueriesNV = NULL;
678 glIsOcclusionQueryNVPROC glIsOcclusionQueryNV = NULL;
679 glBeginOcclusionQueryNVPROC glBeginOcclusionQueryNV = NULL;
680 glEndOcclusionQueryNVPROC glEndOcclusionQueryNV = NULL;
681 glGetOcclusionQueryivNVPROC glGetOcclusionQueryivNV = NULL;
682 glGetOcclusionQueryuivNVPROC glGetOcclusionQueryuivNV = NULL;
683 #endif /* GL_NV_occlusion_query */
684 
685 /* NV_point_sprite */
686 
687 #ifdef GL_NV_point_sprite
688 glPointParameteriNVPROC glPointParameteriNV = NULL;
689 glPointParameterivNVPROC glPointParameterivNV = NULL;
690 #endif /* GL_NV_point_sprite */
691 
692 /* ARB_window_pos */
693 
694 #ifdef GL_ARB_window_pos
695 glWindowPos2dARBPROC glWindowPos2dARB = NULL;
696 glWindowPos2fARBPROC glWindowPos2fARB = NULL;
697 glWindowPos2iARBPROC glWindowPos2iARB = NULL;
698 glWindowPos2sARBPROC glWindowPos2sARB = NULL;
699 glWindowPos2dvARBPROC glWindowPos2dvARB = NULL;
700 glWindowPos2fvARBPROC glWindowPos2fvARB = NULL;
701 glWindowPos2ivARBPROC glWindowPos2ivARB = NULL;
702 glWindowPos2svARBPROC glWindowPos2svARB = NULL;
703 glWindowPos3dARBPROC glWindowPos3dARB = NULL;
704 glWindowPos3fARBPROC glWindowPos3fARB = NULL;
705 glWindowPos3iARBPROC glWindowPos3iARB = NULL;
706 glWindowPos3sARBPROC glWindowPos3sARB = NULL;
707 glWindowPos3dvARBPROC glWindowPos3dvARB = NULL;
708 glWindowPos3fvARBPROC glWindowPos3fvARB = NULL;
709 glWindowPos3ivARBPROC glWindowPos3ivARB = NULL;
710 glWindowPos3svARBPROC glWindowPos3svARB = NULL;
711 #endif /* GL_ARB_window_pos */
712 
713 /* EXT_draw_range_elements */
714 
715 #ifdef GL_EXT_draw_range_elements
716 glDrawRangeElementsEXTPROC glDrawRangeElementsEXT = NULL;
717 #endif /* GL_EXT_draw_range_elements  */
718 
719 /* EXT_stencil_two_side */
720 
721 #ifdef GL_EXT_stencil_two_side
722 glActiveStencilFaceEXTPROC glActiveStencilFaceEXT = NULL;
723 #endif /* GL_EXT_stencil_two_side */
724 
725 /* ARB_vertex_program */
726 
727 #ifdef GL_ARB_vertex_program
728 glVertexAttrib1sARBPROC glVertexAttrib1sARB = NULL;
729 glVertexAttrib1fARBPROC glVertexAttrib1fARB = NULL;
730 glVertexAttrib1dARBPROC glVertexAttrib1dARB = NULL;
731 glVertexAttrib2sARBPROC glVertexAttrib2sARB = NULL;
732 glVertexAttrib2fARBPROC glVertexAttrib2fARB = NULL;
733 glVertexAttrib2dARBPROC glVertexAttrib2dARB = NULL;
734 glVertexAttrib3sARBPROC glVertexAttrib3sARB = NULL;
735 glVertexAttrib3fARBPROC glVertexAttrib3fARB = NULL;
736 glVertexAttrib3dARBPROC glVertexAttrib3dARB = NULL;
737 glVertexAttrib4sARBPROC glVertexAttrib4sARB = NULL;
738 glVertexAttrib4fARBPROC glVertexAttrib4fARB = NULL;
739 glVertexAttrib4dARBPROC glVertexAttrib4dARB = NULL;
740 glVertexAttrib4NubARBPROC glVertexAttrib4NubARB = NULL;
741 glVertexAttrib1svARBPROC glVertexAttrib1svARB = NULL;
742 glVertexAttrib1fvARBPROC glVertexAttrib1fvARB = NULL;
743 glVertexAttrib1dvARBPROC glVertexAttrib1dvARB = NULL;
744 glVertexAttrib2svARBPROC glVertexAttrib2svARB = NULL;
745 glVertexAttrib2fvARBPROC glVertexAttrib2fvARB = NULL;
746 glVertexAttrib2dvARBPROC glVertexAttrib2dvARB = NULL;
747 glVertexAttrib3svARBPROC glVertexAttrib3svARB = NULL;
748 glVertexAttrib3fvARBPROC glVertexAttrib3fvARB = NULL;
749 glVertexAttrib3dvARBPROC glVertexAttrib3dvARB = NULL;
750 glVertexAttrib4bvARBPROC glVertexAttrib4bvARB = NULL;
751 glVertexAttrib4svARBPROC glVertexAttrib4svARB = NULL;
752 glVertexAttrib4ivARBPROC glVertexAttrib4ivARB = NULL;
753 glVertexAttrib4ubvARBPROC glVertexAttrib4ubvARB = NULL;
754 glVertexAttrib4usvARBPROC glVertexAttrib4usvARB = NULL;
755 glVertexAttrib4uivARBPROC glVertexAttrib4uivARB = NULL;
756 glVertexAttrib4fvARBPROC glVertexAttrib4fvARB = NULL;
757 glVertexAttrib4dvARBPROC glVertexAttrib4dvARB = NULL;
758 glVertexAttrib4NbvARBPROC glVertexAttrib4NbvARB = NULL;
759 glVertexAttrib4NsvARBPROC glVertexAttrib4NsvARB = NULL;
760 glVertexAttrib4NivARBPROC glVertexAttrib4NivARB = NULL;
761 glVertexAttrib4NubvARBPROC glVertexAttrib4NubvARB = NULL;
762 glVertexAttrib4NusvARBPROC glVertexAttrib4NusvARB = NULL;
763 glVertexAttrib4NuivARBPROC glVertexAttrib4NuivARB = NULL;
764 glVertexAttribPointerARBPROC glVertexAttribPointerARB = NULL;
765 glEnableVertexAttribArrayARBPROC glEnableVertexAttribArrayARB = NULL;
766 glDisableVertexAttribArrayARBPROC glDisableVertexAttribArrayARB = NULL;
767 glProgramStringARBPROC glProgramStringARB = NULL;
768 glBindProgramARBPROC glBindProgramARB = NULL;
769 glDeleteProgramsARBPROC glDeleteProgramsARB = NULL;
770 glGenProgramsARBPROC glGenProgramsARB = NULL;
771 glProgramEnvParameter4dARBPROC glProgramEnvParameter4dARB = NULL;
772 glProgramEnvParameter4dvARBPROC glProgramEnvParameter4dvARB = NULL;
773 glProgramEnvParameter4fARBPROC glProgramEnvParameter4fARB = NULL;
774 glProgramEnvParameter4fvARBPROC glProgramEnvParameter4fvARB = NULL;
775 glProgramLocalParameter4dARBPROC glProgramLocalParameter4dARB = NULL;
776 glProgramLocalParameter4dvARBPROC glProgramLocalParameter4dvARB = NULL;
777 glProgramLocalParameter4fARBPROC glProgramLocalParameter4fARB = NULL;
778 glProgramLocalParameter4fvARBPROC glProgramLocalParameter4fvARB = NULL;
779 glGetProgramEnvParameterdvARBPROC glGetProgramEnvParameterdvARB = NULL;
780 glGetProgramEnvParameterfvARBPROC glGetProgramEnvParameterfvARB = NULL;
781 glGetProgramLocalParameterdvARBPROC glGetProgramLocalParameterdvARB = NULL;
782 glGetProgramLocalParameterfvARBPROC glGetProgramLocalParameterfvARB = NULL;
783 glGetProgramivARBPROC glGetProgramivARB = NULL;
784 glGetProgramStringARBPROC glGetProgramStringARB = NULL;
785 glGetVertexAttribdvARBPROC glGetVertexAttribdvARB = NULL;
786 glGetVertexAttribfvARBPROC glGetVertexAttribfvARB = NULL;
787 glGetVertexAttribivARBPROC glGetVertexAttribivARB = NULL;
788 glGetVertexAttribPointervARBPROC glGetVertexAttribPointervARB = NULL;
789 glIsProgramARBPROC glIsProgramARB = NULL;
790 #endif /* GL_ARB_vertex_program */
791 
792 /* EXT_cull_vertex */
793 
794 #ifdef GL_EXT_cull_vertex
795 glCullParameterfvEXTPROC glCullParameterfvEXT = NULL;
796 glCullParameterdvEXTPROC glCullParameterdvEXT = NULL;
797 #endif /* GL_EXT_cull_vertex */
798 
799 #if defined(_WIN32) || defined(__CYGWIN__) || defined(__MINGW32__)
800 #ifdef GL_VERSION_1_4
801 /*#ifndef GL_VERSION_1_2
802 glBlendColorPROC glBlendColor = NULL;
803 glBlendEquationPROC glBlendEquation = NULL;
804 #endif *//* GL_VERSION_1_2 */
805 glFogCoordfPROC glFogCoordf = NULL;
806 glFogCoordfvPROC glFogCoordfv = NULL;
807 glFogCoorddPROC glFogCoordd = NULL;
808 glFogCoorddvPROC glFogCoorddv = NULL;
809 glFogCoordPointerPROC glFogCoordPointer = NULL;
810 glMultiDrawArraysPROC glMultiDrawArrays = NULL;
811 glMultiDrawElementsPROC glMultiDrawElements = NULL;
812 glPointParameterfPROC glPointParameterf = NULL;
813 glPointParameterfvPROC glPointParameterfv = NULL;
814 glSecondaryColor3bPROC glSecondaryColor3b = NULL;
815 glSecondaryColor3bvPROC glSecondaryColor3bv = NULL;
816 glSecondaryColor3dPROC glSecondaryColor3d = NULL;
817 glSecondaryColor3dvPROC glSecondaryColor3dv = NULL;
818 glSecondaryColor3fPROC glSecondaryColor3f = NULL;
819 glSecondaryColor3fvPROC glSecondaryColor3fv = NULL;
820 glSecondaryColor3iPROC glSecondaryColor3i = NULL;
821 glSecondaryColor3ivPROC glSecondaryColor3iv = NULL;
822 glSecondaryColor3sPROC glSecondaryColor3s = NULL;
823 glSecondaryColor3svPROC glSecondaryColor3sv = NULL;
824 glSecondaryColor3ubPROC glSecondaryColor3ub = NULL;
825 glSecondaryColor3ubvPROC glSecondaryColor3ubv = NULL;
826 glSecondaryColor3uiPROC glSecondaryColor3ui = NULL;
827 glSecondaryColor3uivPROC glSecondaryColor3uiv = NULL;
828 glSecondaryColor3usPROC glSecondaryColor3us = NULL;
829 glSecondaryColor3usvPROC glSecondaryColor3usv = NULL;
830 glSecondaryColorPointerPROC glSecondaryColorPointer = NULL;
831 glBlendFuncSeparatePROC glBlendFuncSeparate = NULL;
832 glWindowPos2dPROC glWindowPos2d = NULL;
833 glWindowPos2fPROC glWindowPos2f = NULL;
834 glWindowPos2iPROC glWindowPos2i = NULL;
835 glWindowPos2sPROC glWindowPos2s = NULL;
836 glWindowPos2dvPROC glWindowPos2dv = NULL;
837 glWindowPos2fvPROC glWindowPos2fv = NULL;
838 glWindowPos2ivPROC glWindowPos2iv = NULL;
839 glWindowPos2svPROC glWindowPos2sv = NULL;
840 glWindowPos3dPROC glWindowPos3d = NULL;
841 glWindowPos3fPROC glWindowPos3f = NULL;
842 glWindowPos3iPROC glWindowPos3i = NULL;
843 glWindowPos3sPROC glWindowPos3s = NULL;
844 glWindowPos3dvPROC glWindowPos3dv = NULL;
845 glWindowPos3fvPROC glWindowPos3fv = NULL;
846 glWindowPos3ivPROC glWindowPos3iv = NULL;
847 glWindowPos3svPROC glWindowPos3sv = NULL;
848 #endif /* GL_VERSION_1_4 */
849 #endif /* WIN32 */
850 
851 #ifdef GL_EXT_blend_func_separate
852 glBlendFuncSeparateEXTPROC glBlendFuncSeparateEXT = NULL;
853 #endif /* GL_EXT_blend_func_separate */
854 
855 
856 #ifdef GL_NV_element_array
857 glElementPointerNVPROC glElementPointerNV = NULL;
858 glDrawElementArrayNVPROC glDrawElementArrayNV = NULL;
859 glDrawRangeElementArrayNVPROC glDrawRangeElementArrayNV = NULL;
860 glMultiDrawElementArrayNVPROC glMultiDrawElementArrayNV = NULL;
861 glMultiDrawRangeElementArrayNVPROC glMultiDrawRangeElementArrayNV = NULL;
862 #endif /* GL_NV_element_array */
863 
864 #ifdef GL_NV_fragment_program
865 glProgramNamedParameter4fNVPROC glProgramNamedParameter4fNV = NULL;
866 glProgramNamedParameter4dNVPROC glProgramNamedParameter4dNV = NULL;
867 glProgramNamedParameter4fvNVPROC glProgramNamedParameter4fvNV = NULL;
868 glProgramNamedParameter4dvNVPROC glProgramNamedParameter4dvNV = NULL;
869 glGetProgramNamedParameterfvNVPROC glGetProgramNamedParameterfvNV = NULL;
870 glGetProgramNamedParameterdvNVPROC glGetProgramNamedParameterdvNV = NULL;
871 #ifndef GL_ARB_vertex_program
872 glProgramLocalParameter4dARBPROC glProgramLocalParameter4dARB = NULL;
873 glProgramLocalParameter4dvARBPROC glProgramLocalParameter4dvARB = NULL;
874 glProgramLocalParameter4fARBPROC glProgramLocalParameter4fARB = NULL;
875 glProgramLocalParameter4fvARBPROC glProgramLocalParameter4fvARB = NULL;
876 glGetProgramLocalParameterdvARBPROC glGetProgramLocalParameterdvARB = NULL;
877 glGetProgramLocalParameterfvARBPROC glGetProgramLocalParameterfvARB = NULL;
878 #endif /* GL_ARB_vertex_program */
879 #endif /* GL_NV_fragment_program */
880 
881 #ifdef GL_NV_primitive_restart
882 glPrimitiveRestartNVPROC glPrimitiveRestartNV = NULL;
883 glPrimitiveRestartIndexNVPROC glPrimitiveRestartIndexNV = NULL;
884 #endif /* GL_NV_primitive_restart */
885 
886 #ifdef GL_ATI_draw_buffers
887 glDrawBuffersATIPROC glDrawBuffersATI = NULL;
888 #endif /* GL_ATI_draw_buffers */
889 
890 #ifdef GL_NV_half_float
891 glVertex2hNVPROC glVertex2hNV = NULL;
892 glVertex2hvNVPROC glVertex2hvNV = NULL;
893 glVertex3hNVPROC glVertex3hNV = NULL;
894 glVertex3hvNVPROC glVertex3hvNV = NULL;
895 glVertex4hNVPROC glVertex4hNV = NULL;
896 glVertex4hvNVPROC glVertex4hvNV = NULL;
897 glNormal3hNVPROC glNormal3hNV = NULL;
898 glNormal3hvNVPROC glNormal3hvNV = NULL;
899 glColor3hNVPROC glColor3hNV = NULL;
900 glColor3hvNVPROC glColor3hvNV = NULL;
901 glColor4hNVPROC glColor4hNV = NULL;
902 glColor4hvNVPROC glColor4hvNV = NULL;
903 glTexCoord1hNVPROC glTexCoord1hNV = NULL;
904 glTexCoord1hvNVPROC glTexCoord1hvNV = NULL;
905 glTexCoord2hNVPROC glTexCoord2hNV = NULL;
906 glTexCoord2hvNVPROC glTexCoord2hvNV = NULL;
907 glTexCoord3hNVPROC glTexCoord3hNV = NULL;
908 glTexCoord3hvNVPROC glTexCoord3hvNV = NULL;
909 glTexCoord4hNVPROC glTexCoord4hNV = NULL;
910 glTexCoord4hvNVPROC glTexCoord4hvNV = NULL;
911 glMultiTexCoord1hNVPROC glMultiTexCoord1hNV = NULL;
912 glMultiTexCoord1hvNVPROC glMultiTexCoord1hvNV = NULL;
913 glMultiTexCoord2hNVPROC glMultiTexCoord2hNV = NULL;
914 glMultiTexCoord2hvNVPROC glMultiTexCoord2hvNV = NULL;
915 glMultiTexCoord3hNVPROC glMultiTexCoord3hNV = NULL;
916 glMultiTexCoord3hvNVPROC glMultiTexCoord3hvNV = NULL;
917 glMultiTexCoord4hNVPROC glMultiTexCoord4hNV = NULL;
918 glMultiTexCoord4hvNVPROC glMultiTexCoord4hvNV = NULL;
919 glFogCoordhNVPROC glFogCoordhNV = NULL;
920 glFogCoordhvNVPROC glFogCoordhvNV = NULL;
921 glSecondaryColor3hNVPROC glSecondaryColor3hNV = NULL;
922 glSecondaryColor3hvNVPROC glSecondaryColor3hvNV = NULL;
923 glVertexWeighthNVPROC glVertexWeighthNV = NULL;
924 glVertexWeighthvNVPROC glVertexWeighthvNV = NULL;
925 glVertexAttrib1hNVPROC glVertexAttrib1hNV = NULL;
926 glVertexAttrib1hvNVPROC glVertexAttrib1hvNV = NULL;
927 glVertexAttrib2hNVPROC glVertexAttrib2hNV = NULL;
928 glVertexAttrib2hvNVPROC glVertexAttrib2hvNV = NULL;
929 glVertexAttrib3hNVPROC glVertexAttrib3hNV = NULL;
930 glVertexAttrib3hvNVPROC glVertexAttrib3hvNV = NULL;
931 glVertexAttrib4hNVPROC glVertexAttrib4hNV = NULL;
932 glVertexAttrib4hvNVPROC glVertexAttrib4hvNV = NULL;
933 glVertexAttribs1hvNVPROC glVertexAttribs1hvNV = NULL;
934 glVertexAttribs2hvNVPROC glVertexAttribs2hvNV = NULL;
935 glVertexAttribs3hvNVPROC glVertexAttribs3hvNV = NULL;
936 glVertexAttribs4hvNVPROC glVertexAttribs4hvNV = NULL;
937 #endif /* GL_NV_half_float */
938 
939 #ifdef GL_NV_pixel_data_range
940 glPixelDataRangeNVPROC glPixelDataRangeNV = NULL;
941 glFlushPixelDataRangeNVPROC glFlushPixelDataRangeNV = NULL;
942 #endif /* GL_NV_pixel_data_range */
943 
944 #ifdef GL_ATI_map_object_buffer
945 glMapObjectBufferATIPROC glMapObjectBufferATI = NULL;
946 glUnmapObjectBufferATIPROC glUnmapObjectBufferATI = NULL;
947 #endif /* GL_ATI_map_object_buffer */
948 
949 #ifdef GL_ATI_separate_stencil
950 glStencilOpSeparateATIPROC glStencilOpSeparateATI = NULL;
951 glStencilFuncSeparateATIPROC glStencilFuncSeparateATI = NULL;
952 #endif /* GL_ATI_separate_stencil */
953 
954 #ifdef GL_ATI_vertex_attrib_array_object
955 glVertexAttribArrayObjectATIPROC glVertexAttribArrayObjectATI = NULL;
956 glGetVertexAttribArrayObjectfvATIPROC glGetVertexAttribArrayObjectfvATI = NULL;
957 glGetVertexAttribArrayObjectivATIPROC glGetVertexAttribArrayObjectivATI = NULL;
958 #endif /* GL_ATI_vertex_attrib_array_object */
959 
960 #ifdef GL_EXT_blend_color
961 glBlendColorEXTPROC glBlendColorEXT = NULL;
962 #endif /* GL_EXT_blend_color */
963 
964 #ifdef GL_EXT_blend_minmax
965 glBlendEquationEXTPROC glBlendEquationEXT = NULL;
966 #endif /* GL_EXT_blend_minmax */
967 
968 #ifdef GL_ARB_vertex_buffer_object
969 glBindBufferARBPROC glBindBufferARB = NULL;
970 glDeleteBuffersARBPROC glDeleteBuffersARB = NULL;
971 glGenBuffersARBPROC glGenBuffersARB = NULL;
972 glIsBufferARBPROC glIsBufferARB = NULL;
973 glBufferDataARBPROC glBufferDataARB = NULL;
974 glBufferSubDataARBPROC glBufferSubDataARB = NULL;
975 glGetBufferSubDataARBPROC glGetBufferSubDataARB = NULL;
976 glMapBufferARBPROC glMapBufferARB = NULL;
977 glUnmapBufferARBPROC glUnmapBufferARB = NULL;
978 glGetBufferParameterivARBPROC glGetBufferParameterivARB = NULL;
979 glGetBufferPointervARBPROC glGetBufferPointervARB = NULL;
980 #endif /* GL_ARB_vertex_buffer_object */
981 
982 #ifdef GL_EXT_depth_bounds_test
983 glDepthBoundsEXTPROC glDepthBoundsEXT = NULL;
984 #endif /* GL_EXT_depth_bounds_test */
985 
986 /* other definitions */
987 static int extgl_error = 0;
988 
989 struct ExtensionTypes extgl_Extensions;
990 
991 struct ExtensionTypes SupportedExtensions; /* deprecated, please do not use */
992 
993 
994 /* getProcAddress */
995 
extgl_GetProcAddress(char * name)996 void *extgl_GetProcAddress(char *name)
997 {
998 #if defined(_WIN32) || defined(__CYGWIN__) || defined(__MINGW32__)
999     void *t = (void*)wglGetProcAddress(name);
1000     if (t == NULL)
1001     {
1002         extgl_error = 1;
1003     }
1004     return t;
1005 #else
1006     void *t = (void*)glXGetProcAddressARB((char*)name);
1007     if (t == NULL)
1008     {
1009         extgl_error = 1;
1010     }
1011     return t;
1012 #endif
1013 }
1014 
1015 /*-----------------------------------------------------*/
1016 /* WGL stuff */
1017 /*-----------------------------------------------------*/
1018 
1019 #if defined(_WIN32) || defined(__CYGWIN__) || defined(__MINGW32__)
1020 
1021 /** returns true if the extention is available */
QueryWGLExtension(const char * name)1022 int QueryWGLExtension(const char *name)
1023 {
1024     const GLubyte *extensions;
1025     const GLubyte *start;
1026     GLubyte *where, *terminator;
1027 
1028     /* Extension names should not have spaces. */
1029     where = (GLubyte *) strchr(name, ' ');
1030     if (where || *name == '\0')
1031         return 0;
1032     if (wglGetExtensionsStringARB == NULL)
1033         if (wglGetExtensionsStringEXT == NULL)
1034             return 0;
1035         else
1036             extensions = (GLubyte*)wglGetExtensionsStringEXT();
1037     else
1038         extensions = (GLubyte*)wglGetExtensionsStringARB(wglGetCurrentDC());
1039     /* It takes a bit of care to be fool-proof about parsing the
1040          OpenGL extensions string. Don't be fooled by sub-strings,
1041         etc. */
1042     start = extensions;
1043     for (;;)
1044     {
1045         where = (GLubyte *) strstr((const char *) start, name);
1046         if (!where)
1047             break;
1048         terminator = where + strlen(name);
1049         if (where == start || *(where - 1) == ' ')
1050             if (*terminator == ' ' || *terminator == '\0')
1051                 return 1;
1052         start = terminator;
1053     }
1054     return 0;
1055 }
1056 
extgl_InitWGLARBBufferRegion()1057 void extgl_InitWGLARBBufferRegion()
1058 {
1059 #ifdef WGL_ARB_buffer_region
1060     if (!extgl_Extensions.wgl.ARB_buffer_region)
1061         return;
1062     wglCreateBufferRegionARB = (wglCreateBufferRegionARBPROC) extgl_GetProcAddress("wglCreateBufferRegionARB");
1063     wglDeleteBufferRegionARB = (wglDeleteBufferRegionARBPROC) extgl_GetProcAddress("wglDeleteBufferRegionARB");
1064     wglSaveBufferRegionARB = (wglSaveBufferRegionARBPROC) extgl_GetProcAddress("wglSaveBufferRegionARB");
1065     wglRestoreBufferRegionARB = (wglRestoreBufferRegionARBPROC) extgl_GetProcAddress("wglRestoreBufferRegionARB");
1066 #endif
1067 }
1068 
extgl_InitWGLARBPbuffer()1069 void extgl_InitWGLARBPbuffer()
1070 {
1071 #ifdef WGL_ARB_pbuffer
1072     if (!extgl_Extensions.wgl.ARB_pbuffer)
1073         return;
1074     wglCreatePbufferARB = (wglCreatePbufferARBPROC) extgl_GetProcAddress("wglCreatePbufferARB");
1075     wglGetPbufferDCARB = (wglGetPbufferDCARBPROC) extgl_GetProcAddress("wglGetPbufferDCARB");
1076     wglReleasePbufferDCARB = (wglReleasePbufferDCARBPROC) extgl_GetProcAddress("wglReleasePbufferDCARB");
1077     wglDestroyPbufferARB = (wglDestroyPbufferARBPROC) extgl_GetProcAddress("wglDestroyPbufferARB");
1078     wglQueryPbufferARB = (wglQueryPbufferARBPROC) extgl_GetProcAddress("wglQueryPbufferARB");
1079 #endif
1080 }
1081 
extgl_InitWGLARBPixelFormat()1082 void extgl_InitWGLARBPixelFormat()
1083 {
1084 #ifdef WGL_ARB_pixel_format
1085     if (!extgl_Extensions.wgl.ARB_pixel_format)
1086         return;
1087     wglGetPixelFormatAttribivARB = (wglGetPixelFormatAttribivARBPROC) extgl_GetProcAddress("wglGetPixelFormatAttribivARB");
1088     wglGetPixelFormatAttribfvARB = (wglGetPixelFormatAttribfvARBPROC) extgl_GetProcAddress("wglGetPixelFormatAttribfvARB");
1089     wglChoosePixelFormatARB = (wglChoosePixelFormatARBPROC) extgl_GetProcAddress("wglChoosePixelFormatARB");
1090 #endif
1091 }
1092 
extgl_InitWGLARBRenderTexture()1093 void extgl_InitWGLARBRenderTexture()
1094 {
1095 #ifdef WGL_ARB_render_texture
1096     if (!extgl_Extensions.wgl.ARB_render_texture)
1097         return;
1098     wglBindTexImageARB = (wglBindTexImageARBPROC) extgl_GetProcAddress("wglBindTexImageARB");
1099     wglReleaseTexImageARB = (wglReleaseTexImageARBPROC) extgl_GetProcAddress("wglReleaseTexImageARB");
1100     wglSetPbufferAttribARB = (wglSetPbufferAttribARBPROC) extgl_GetProcAddress("wglSetPbufferAttribARB");
1101 #endif
1102 }
1103 
extgl_InitWGLEXTSwapControl()1104 void extgl_InitWGLEXTSwapControl()
1105 {
1106 #ifdef WGL_EXT_swap_control
1107     if (!extgl_Extensions.wgl.EXT_swap_control)
1108         return;
1109     wglSwapIntervalEXT = (wglSwapIntervalEXTPROC) extgl_GetProcAddress("wglSwapIntervalEXT");
1110     wglGetSwapIntervalEXT = (wglGetSwapIntervalEXTPROC) extgl_GetProcAddress("wglGetSwapIntervalEXT");
1111 #endif
1112 }
1113 
extgl_InitWGLARBMakeCurrentRead()1114 void extgl_InitWGLARBMakeCurrentRead()
1115 {
1116 #ifdef WGL_ARB_make_current_read
1117     if (!extgl_Extensions.wgl.ARB_make_current_read)
1118         return;
1119     wglMakeContextCurrentARB = (wglMakeContextCurrentARBPROC) extgl_GetProcAddress("wglMakeContextCurrentARB");
1120     wglGetCurrentReadDCARB = (wglGetCurrentReadDCARBPROC) extgl_GetProcAddress("wglGetCurrentReadDCARB");
1121 #endif
1122 }
1123 
extgl_InitSupportedWGLExtensions()1124 void extgl_InitSupportedWGLExtensions()
1125 {
1126     extgl_Extensions.wgl.ARB_buffer_region = QueryWGLExtension("WGL_ARB_buffer_region");
1127     extgl_Extensions.wgl.ARB_make_current_read = QueryWGLExtension("WGL_ARB_make_current_read");
1128     extgl_Extensions.wgl.ARB_multisample = QueryWGLExtension("WGL_ARB_multisample");
1129     extgl_Extensions.wgl.ARB_pbuffer = QueryWGLExtension("WGL_ARB_pbuffer");
1130     extgl_Extensions.wgl.ARB_pixel_format = QueryWGLExtension("WGL_ARB_pixel_format");
1131     extgl_Extensions.wgl.ARB_render_texture = QueryWGLExtension("WGL_ARB_render_texture");
1132     extgl_Extensions.wgl.ATI_pixel_format_float = QueryWGLExtension("WGL_ATI_pixel_format_float");
1133     extgl_Extensions.wgl.EXT_swap_control = QueryWGLExtension("WGL_EXT_swap_control");
1134     extgl_Extensions.wgl.NV_render_depth_texture = QueryWGLExtension("WGL_NV_render_depth_texture");
1135     extgl_Extensions.wgl.NV_render_texture_rectangle = QueryWGLExtension("WGL_NV_render_texture_rectangle");
1136 }
1137 
extgl_InitializeWGL()1138 int extgl_InitializeWGL()
1139 {
1140     extgl_error = 0;
1141     wglGetExtensionsStringARB = (wglGetExtensionsStringARBPROC) extgl_GetProcAddress("wglGetExtensionsStringARB");
1142     wglGetExtensionsStringEXT = (wglGetExtensionsStringEXTPROC) extgl_GetProcAddress("wglGetExtensionsStringEXT");
1143     extgl_Extensions.wgl.ARB_extensions_string = wglGetExtensionsStringARB != NULL;
1144     extgl_Extensions.wgl.EXT_extensions_string = wglGetExtensionsStringEXT != NULL;
1145     extgl_error = 0;
1146 
1147     extgl_InitSupportedWGLExtensions();
1148 
1149 
1150     extgl_InitWGLARBMakeCurrentRead();
1151     extgl_InitWGLEXTSwapControl();
1152     extgl_InitWGLARBRenderTexture();
1153     extgl_InitWGLARBPixelFormat();
1154     extgl_InitWGLARBPbuffer();
1155     extgl_InitWGLARBBufferRegion();
1156 
1157     return extgl_error;
1158 }
1159 
1160 #endif /* WIN32 */
1161 
1162 /*-----------------------------------------------------*/
1163 /* WGL stuff END*/
1164 /*-----------------------------------------------------*/
1165 
1166 char extgl_ExtString[5000] = "";
1167 
1168 /** returns true if the extention is available */
QueryExtension(const char * name)1169 int QueryExtension(const char *name)
1170 {
1171     const GLubyte *extensions;
1172     const GLubyte *start;
1173     GLubyte *where, *terminator;
1174 
1175     /* Extension names should not have spaces. */
1176     where = (GLubyte *) strchr(name, ' ');
1177     if (where || *name == '\0')
1178         return 0;
1179     extensions = glGetString(GL_EXTENSIONS);
1180     /* It takes a bit of care to be fool-proof about parsing the
1181          OpenGL extensions string. Don't be fooled by sub-strings,
1182         etc. */
1183     start = extensions;
1184     for (;;)
1185     {
1186         where = (GLubyte *) strstr((const char *) start, name);
1187         if (!where)
1188             break;
1189         terminator = where + strlen(name);
1190         if (where == start || *(where - 1) == ' ')
1191             if (*terminator == ' ' || *terminator == '\0')
1192             {
1193                 sprintf(extgl_ExtString, "%s%s ", extgl_ExtString, name);
1194                 return 1;
1195             }
1196 
1197         start = terminator;
1198     }
1199     return 0;
1200 }
1201 
extgl_InitARBMultitexture()1202 void extgl_InitARBMultitexture()
1203 {
1204 #if defined(_WIN32) || defined(__CYGWIN__) || defined(__MINGW32__)
1205 #ifdef GL_ARB_multitexture
1206     if (!extgl_Extensions.ARB_multitexture)
1207         return;
1208     glActiveTextureARB = (glActiveTextureARBPROC) extgl_GetProcAddress("glActiveTextureARB");
1209     glClientActiveTextureARB = (glClientActiveTextureARBPROC) extgl_GetProcAddress("glClientActiveTextureARB");
1210 
1211     glMultiTexCoord1dARB = (glMultiTexCoord1dARBPROC) extgl_GetProcAddress("glMultiTexCoord1dARB");
1212     glMultiTexCoord1dvARB = (glMultiTexCoord1dvARBPROC) extgl_GetProcAddress("glMultiTexCoord1dvARB");
1213     glMultiTexCoord1fARB = (glMultiTexCoord1fARBPROC) extgl_GetProcAddress("glMultiTexCoord1fARB");
1214     glMultiTexCoord1fvARB = (glMultiTexCoord1fvARBPROC) extgl_GetProcAddress("glMultiTexCoord1fvARB");
1215     glMultiTexCoord1iARB = (glMultiTexCoord1iARBPROC) extgl_GetProcAddress("glMultiTexCoord1iARB");
1216     glMultiTexCoord1ivARB = (glMultiTexCoord1ivARBPROC) extgl_GetProcAddress("glMultiTexCoord1ivARB");
1217     glMultiTexCoord1sARB = (glMultiTexCoord1sARBPROC) extgl_GetProcAddress("glMultiTexCoord1sARB");
1218     glMultiTexCoord1svARB = (glMultiTexCoord1svARBPROC) extgl_GetProcAddress("glMultiTexCoord1svARB");
1219 
1220     glMultiTexCoord2dARB = (glMultiTexCoord2dARBPROC) extgl_GetProcAddress("glMultiTexCoord2dARB");
1221     glMultiTexCoord2dvARB = (glMultiTexCoord2dvARBPROC) extgl_GetProcAddress("glMultiTexCoord2dvARB");
1222     glMultiTexCoord2fARB = (glMultiTexCoord2fARBPROC) extgl_GetProcAddress("glMultiTexCoord2fARB");
1223     glMultiTexCoord2fvARB = (glMultiTexCoord2fvARBPROC) extgl_GetProcAddress("glMultiTexCoord2fvARB");
1224     glMultiTexCoord2iARB = (glMultiTexCoord2iARBPROC) extgl_GetProcAddress("glMultiTexCoord2iARB");
1225     glMultiTexCoord2ivARB = (glMultiTexCoord2ivARBPROC) extgl_GetProcAddress("glMultiTexCoord2ivARB");
1226     glMultiTexCoord2sARB = (glMultiTexCoord2sARBPROC) extgl_GetProcAddress("glMultiTexCoord2sARB");
1227     glMultiTexCoord2svARB = (glMultiTexCoord2svARBPROC) extgl_GetProcAddress("glMultiTexCoord2svARB");
1228 
1229     glMultiTexCoord3dARB = (glMultiTexCoord3dARBPROC) extgl_GetProcAddress("glMultiTexCoord3dARB");
1230     glMultiTexCoord3dvARB = (glMultiTexCoord3dvARBPROC) extgl_GetProcAddress("glMultiTexCoord3dvARB");
1231     glMultiTexCoord3fARB = (glMultiTexCoord3fARBPROC) extgl_GetProcAddress("glMultiTexCoord3fARB");
1232     glMultiTexCoord3fvARB = (glMultiTexCoord3fvARBPROC) extgl_GetProcAddress("glMultiTexCoord3fvARB");
1233     glMultiTexCoord3iARB = (glMultiTexCoord3iARBPROC) extgl_GetProcAddress("glMultiTexCoord3iARB");
1234     glMultiTexCoord3ivARB = (glMultiTexCoord3ivARBPROC) extgl_GetProcAddress("glMultiTexCoord3ivARB");
1235     glMultiTexCoord3sARB = (glMultiTexCoord3sARBPROC) extgl_GetProcAddress("glMultiTexCoord3sARB");
1236     glMultiTexCoord3svARB = (glMultiTexCoord3svARBPROC) extgl_GetProcAddress("glMultiTexCoord3svARB");
1237 
1238     glMultiTexCoord4dARB = (glMultiTexCoord4dARBPROC) extgl_GetProcAddress("glMultiTexCoord4dARB");
1239     glMultiTexCoord4dvARB = (glMultiTexCoord4dvARBPROC) extgl_GetProcAddress("glMultiTexCoord4dvARB");
1240     glMultiTexCoord4fARB = (glMultiTexCoord4fARBPROC) extgl_GetProcAddress("glMultiTexCoord4fARB");
1241     glMultiTexCoord4fvARB = (glMultiTexCoord4fvARBPROC) extgl_GetProcAddress("glMultiTexCoord4fvARB");
1242     glMultiTexCoord4iARB = (glMultiTexCoord4iARBPROC) extgl_GetProcAddress("glMultiTexCoord4iARB");
1243     glMultiTexCoord4ivARB = (glMultiTexCoord4ivARBPROC) extgl_GetProcAddress("glMultiTexCoord4ivARB");
1244     glMultiTexCoord4sARB = (glMultiTexCoord4sARBPROC) extgl_GetProcAddress("glMultiTexCoord4sARB");
1245     glMultiTexCoord4svARB = (glMultiTexCoord4svARBPROC) extgl_GetProcAddress("glMultiTexCoord4svARB");
1246 #endif /* GL_ARB_multitexture */
1247 #endif /* WIN32 */
1248 }
1249 
1250 
extgl_InitEXTDepthBoundsTest()1251 void extgl_InitEXTDepthBoundsTest()
1252 {
1253 #ifdef GL_EXT_depth_bounds_test
1254     if (!extgl_Extensions.EXT_depth_bounds_test)
1255         return;
1256     glDepthBoundsEXT = (glDepthBoundsEXTPROC) extgl_GetProcAddress("glDepthBoundsEXT");
1257 #endif /* GL_EXT_depth_bounds_test */
1258 }
extgl_InitARBVertexBufferObject()1259 void extgl_InitARBVertexBufferObject()
1260 {
1261 #ifdef GL_ARB_vertex_buffer_object
1262     if (!extgl_Extensions.ARB_vertex_buffer_object)
1263         return;
1264     glBindBufferARB = (glBindBufferARBPROC) extgl_GetProcAddress("glBindBufferARB");
1265     glDeleteBuffersARB = (glDeleteBuffersARBPROC) extgl_GetProcAddress("glDeleteBuffersARB");
1266     glGenBuffersARB = (glGenBuffersARBPROC) extgl_GetProcAddress("glGenBuffersARB");
1267     glIsBufferARB = (glIsBufferARBPROC) extgl_GetProcAddress("glIsBufferARB");
1268     glBufferDataARB = (glBufferDataARBPROC) extgl_GetProcAddress("glBufferDataARB");
1269     glBufferSubDataARB = (glBufferSubDataARBPROC) extgl_GetProcAddress("glBufferSubDataARB");
1270     glGetBufferSubDataARB = (glGetBufferSubDataARBPROC) extgl_GetProcAddress("glGetBufferSubDataARB");
1271     glMapBufferARB = (glMapBufferARBPROC) extgl_GetProcAddress("glMapBufferARB");
1272     glUnmapBufferARB = (glUnmapBufferARBPROC) extgl_GetProcAddress("glUnmapBufferARB");
1273     glGetBufferParameterivARB = (glGetBufferParameterivARBPROC) extgl_GetProcAddress("glGetBufferParameterivARB");
1274     glGetBufferPointervARB = (glGetBufferPointervARBPROC) extgl_GetProcAddress("glGetBufferPointervARB");
1275 #endif /* GL_ARB_vertex_buffer_object */
1276 }
1277 
1278 
extgl_InitEXTBlendMinmax()1279 void extgl_InitEXTBlendMinmax()
1280 {
1281 #ifdef GL_EXT_blend_minmax
1282     if (!extgl_Extensions.EXT_blend_minmax)
1283         return;
1284     glBlendEquationEXT = (glBlendEquationEXTPROC) extgl_GetProcAddress("glBlendEquationEXT");
1285 #endif /* GL_EXT_blend_minmax */
1286 }
1287 
1288 
extgl_InitEXTBlendColor()1289 void extgl_InitEXTBlendColor()
1290 {
1291 #ifdef GL_EXT_blend_color
1292     if (!extgl_Extensions.EXT_blend_color)
1293         return;
1294     glBlendColorEXT = (glBlendColorEXTPROC) extgl_GetProcAddress("glBlendColorEXT");
1295 #endif /* GL_EXT_blend_color */
1296 }
1297 
extgl_InitATIVertexAttribArrayObject()1298 void extgl_InitATIVertexAttribArrayObject()
1299 {
1300 #ifdef GL_ATI_vertex_attrib_array_object
1301     if (!extgl_Extensions.ATI_vertex_attrib_array_object)
1302         return;
1303     glVertexAttribArrayObjectATI = (glVertexAttribArrayObjectATIPROC) extgl_GetProcAddress("glVertexAttribArrayObjectATI");
1304     glGetVertexAttribArrayObjectfvATI = (glGetVertexAttribArrayObjectfvATIPROC) extgl_GetProcAddress("glGetVertexAttribArrayObjectfvATI");
1305     glGetVertexAttribArrayObjectivATI = (glGetVertexAttribArrayObjectivATIPROC) extgl_GetProcAddress("glGetVertexAttribArrayObjectivATI");
1306 #endif /* GL_ATI_vertex_attrib_array_object */
1307 }
1308 
extgl_InitATISeparateStencil()1309 void extgl_InitATISeparateStencil()
1310 {
1311 #ifdef GL_ATI_separate_stencil
1312     if (!extgl_Extensions.ATI_separate_stencil)
1313         return;
1314     glStencilOpSeparateATI = (glStencilOpSeparateATIPROC) extgl_GetProcAddress("glStencilOpSeparateATI");
1315     glStencilFuncSeparateATI = (glStencilFuncSeparateATIPROC) extgl_GetProcAddress("glStencilFuncSeparateATI");
1316 #endif /* GL_ATI_separate_stencil */
1317 }
1318 
extgl_InitATIMapObjectBuffer()1319 void extgl_InitATIMapObjectBuffer()
1320 {
1321 #ifdef GL_ATI_map_object_buffer
1322     if (!extgl_Extensions.ATI_map_object_buffer)
1323         return;
1324     glMapObjectBufferATI = (glMapObjectBufferATIPROC) extgl_GetProcAddress("glMapObjectBufferATI");
1325     glUnmapObjectBufferATI = (glUnmapObjectBufferATIPROC) extgl_GetProcAddress("glUnmapObjectBufferATI");
1326 #endif /* GL_ATI_map_object_buffer */
1327 }
1328 
extgl_InitNVPixelDataRange()1329 void extgl_InitNVPixelDataRange()
1330 {
1331 #ifdef GL_NV_pixel_data_range
1332     if (!extgl_Extensions.NV_pixel_data_range)
1333         return;
1334     glPixelDataRangeNV = (glPixelDataRangeNVPROC) extgl_GetProcAddress("glPixelDataRangeNV");
1335     glFlushPixelDataRangeNV = (glFlushPixelDataRangeNVPROC) extgl_GetProcAddress("glFlushPixelDataRangeNV");
1336 #endif /* GL_NV_pixel_data_range */
1337 }
1338 
extgl_InitNVHalfFloat()1339 void extgl_InitNVHalfFloat()
1340 {
1341 #ifdef GL_NV_half_float
1342     if (!extgl_Extensions.NV_half_float)
1343         return;
1344     glVertex2hNV = (glVertex2hNVPROC) extgl_GetProcAddress("glVertex2hNV");
1345     glVertex2hvNV = (glVertex2hvNVPROC) extgl_GetProcAddress("glVertex2hvNV");
1346     glVertex3hNV = (glVertex3hNVPROC) extgl_GetProcAddress("glVertex3hNV");
1347     glVertex3hvNV = (glVertex3hvNVPROC) extgl_GetProcAddress("glVertex3hvNV");
1348     glVertex4hNV = (glVertex4hNVPROC) extgl_GetProcAddress("glVertex4hNV");
1349     glVertex4hvNV = (glVertex4hvNVPROC) extgl_GetProcAddress("glVertex4hvNV");
1350     glNormal3hNV = (glNormal3hNVPROC) extgl_GetProcAddress("glNormal3hNV");
1351     glNormal3hvNV = (glNormal3hvNVPROC) extgl_GetProcAddress("glNormal3hvNV");
1352     glColor3hNV = (glColor3hNVPROC) extgl_GetProcAddress("glColor3hNV");
1353     glColor3hvNV = (glColor3hvNVPROC) extgl_GetProcAddress("glColor3hvNV");
1354     glColor4hNV = (glColor4hNVPROC) extgl_GetProcAddress("glColor4hNV");
1355     glColor4hvNV = (glColor4hvNVPROC) extgl_GetProcAddress("glColor4hvNV");
1356     glTexCoord1hNV = (glTexCoord1hNVPROC) extgl_GetProcAddress("glTexCoord1hNV");
1357     glTexCoord1hvNV = (glTexCoord1hvNVPROC) extgl_GetProcAddress("glTexCoord1hvNV");
1358     glTexCoord2hNV = (glTexCoord2hNVPROC) extgl_GetProcAddress("glTexCoord2hNV");
1359     glTexCoord2hvNV = (glTexCoord2hvNVPROC) extgl_GetProcAddress("glTexCoord2hvNV");
1360     glTexCoord3hNV = (glTexCoord3hNVPROC) extgl_GetProcAddress("glTexCoord3hNV");
1361     glTexCoord3hvNV = (glTexCoord3hvNVPROC) extgl_GetProcAddress("glTexCoord3hvNV");
1362     glTexCoord4hNV = (glTexCoord4hNVPROC) extgl_GetProcAddress("glTexCoord4hNV");
1363     glTexCoord4hvNV = (glTexCoord4hvNVPROC) extgl_GetProcAddress("glTexCoord4hvNV");
1364 
1365     if ((extgl_Extensions.OpenGL13) || (extgl_Extensions.ARB_multitexture))
1366     {
1367         glMultiTexCoord1hNV = (glMultiTexCoord1hNVPROC) extgl_GetProcAddress("glMultiTexCoord1hNV");
1368         glMultiTexCoord1hvNV = (glMultiTexCoord1hvNVPROC) extgl_GetProcAddress("glMultiTexCoord1hvNV");
1369         glMultiTexCoord2hNV = (glMultiTexCoord2hNVPROC) extgl_GetProcAddress("glMultiTexCoord2hNV");
1370         glMultiTexCoord2hvNV = (glMultiTexCoord2hvNVPROC) extgl_GetProcAddress("glMultiTexCoord2hvNV");
1371         glMultiTexCoord3hNV = (glMultiTexCoord3hNVPROC) extgl_GetProcAddress("glMultiTexCoord3hNV");
1372         glMultiTexCoord3hvNV = (glMultiTexCoord3hvNVPROC) extgl_GetProcAddress("glMultiTexCoord3hvNV");
1373         glMultiTexCoord4hNV = (glMultiTexCoord4hNVPROC) extgl_GetProcAddress("glMultiTexCoord4hNV");
1374         glMultiTexCoord4hvNV = (glMultiTexCoord4hvNVPROC) extgl_GetProcAddress("glMultiTexCoord4hvNV");
1375     }
1376 
1377     if (extgl_Extensions.EXT_fog_coord)
1378     {
1379         glFogCoordhNV = (glFogCoordhNVPROC) extgl_GetProcAddress("glFogCoordhNV");
1380         glFogCoordhvNV = (glFogCoordhvNVPROC) extgl_GetProcAddress("glFogCoordhvNV");
1381     }
1382 
1383     if (extgl_Extensions.EXT_secondary_color)
1384     {
1385         glSecondaryColor3hNV = (glSecondaryColor3hNVPROC) extgl_GetProcAddress("glSecondaryColor3hNV");
1386         glSecondaryColor3hvNV = (glSecondaryColor3hvNVPROC) extgl_GetProcAddress("glSecondaryColor3hvNV");
1387     }
1388 
1389     if (extgl_Extensions.EXT_vertex_weighting)
1390     {
1391         glVertexWeighthNV = (glVertexWeighthNVPROC) extgl_GetProcAddress("glVertexWeighthNV");
1392         glVertexWeighthvNV = (glVertexWeighthvNVPROC) extgl_GetProcAddress("glVertexWeighthvNV");
1393     }
1394 
1395     if (extgl_Extensions.NV_vertex_program)
1396     {
1397         glVertexAttrib1hNV = (glVertexAttrib1hNVPROC) extgl_GetProcAddress("glVertexAttrib1hNV");
1398         glVertexAttrib1hvNV = (glVertexAttrib1hvNVPROC) extgl_GetProcAddress("glVertexAttrib1hvNV");
1399         glVertexAttrib2hNV = (glVertexAttrib2hNVPROC) extgl_GetProcAddress("glVertexAttrib2hNV");
1400         glVertexAttrib2hvNV = (glVertexAttrib2hvNVPROC) extgl_GetProcAddress("glVertexAttrib2hvNV");
1401         glVertexAttrib3hNV = (glVertexAttrib3hNVPROC) extgl_GetProcAddress("glVertexAttrib3hNV");
1402         glVertexAttrib3hvNV = (glVertexAttrib3hvNVPROC) extgl_GetProcAddress("glVertexAttrib3hvNV");
1403         glVertexAttrib4hNV = (glVertexAttrib4hNVPROC) extgl_GetProcAddress("glVertexAttrib4hNV");
1404         glVertexAttrib4hvNV = (glVertexAttrib4hvNVPROC) extgl_GetProcAddress("glVertexAttrib4hvNV");
1405         glVertexAttribs1hvNV = (glVertexAttribs1hvNVPROC) extgl_GetProcAddress("glVertexAttribs1hvNV");
1406         glVertexAttribs2hvNV = (glVertexAttribs2hvNVPROC) extgl_GetProcAddress("glVertexAttribs2hvNV");
1407         glVertexAttribs3hvNV = (glVertexAttribs3hvNVPROC) extgl_GetProcAddress("glVertexAttribs3hvNV");
1408         glVertexAttribs4hvNV = (glVertexAttribs4hvNVPROC) extgl_GetProcAddress("glVertexAttribs4hvNV");
1409     }
1410 #endif /* GL_NV_half_float */
1411 }
1412 
extgl_InitATIDrawBuffers()1413 void extgl_InitATIDrawBuffers()
1414 {
1415 #ifdef GL_ATI_draw_buffers
1416     if (!extgl_Extensions.ATI_draw_buffers)
1417         return;
1418     glDrawBuffersATI = (glDrawBuffersATIPROC) extgl_GetProcAddress("glDrawBuffersATI");
1419 #endif /* GL_ATI_draw_buffers */
1420 }
1421 
extgl_InitARBFragmentProgram()1422 void extgl_InitARBFragmentProgram()
1423 {
1424 #ifdef GL_ARB_fragment_program
1425     if (!extgl_Extensions.ARB_fragment_program)
1426         return;
1427     glProgramStringARB = (glProgramStringARBPROC) extgl_GetProcAddress("glProgramStringARB");
1428     glBindProgramARB = (glBindProgramARBPROC) extgl_GetProcAddress("glBindProgramARB");
1429     glDeleteProgramsARB = (glDeleteProgramsARBPROC) extgl_GetProcAddress("glDeleteProgramsARB");
1430     glGenProgramsARB = (glGenProgramsARBPROC) extgl_GetProcAddress("glGenProgramsARB");
1431     glProgramEnvParameter4dARB = (glProgramEnvParameter4dARBPROC) extgl_GetProcAddress("glProgramEnvParameter4dARB");
1432     glProgramEnvParameter4dvARB = (glProgramEnvParameter4dvARBPROC) extgl_GetProcAddress("glProgramEnvParameter4dvARB");
1433     glProgramEnvParameter4fARB = (glProgramEnvParameter4fARBPROC) extgl_GetProcAddress("glProgramEnvParameter4fARB");
1434     glProgramEnvParameter4fvARB = (glProgramEnvParameter4fvARBPROC) extgl_GetProcAddress("glProgramEnvParameter4fvARB");
1435     glProgramLocalParameter4dARB = (glProgramLocalParameter4dARBPROC) extgl_GetProcAddress("glProgramLocalParameter4dARB");
1436     glProgramLocalParameter4dvARB = (glProgramLocalParameter4dvARBPROC) extgl_GetProcAddress("glProgramLocalParameter4dvARB");
1437     glProgramLocalParameter4fARB = (glProgramLocalParameter4fARBPROC) extgl_GetProcAddress("glProgramLocalParameter4fARB");
1438     glProgramLocalParameter4fvARB = (glProgramLocalParameter4fvARBPROC) extgl_GetProcAddress("glProgramLocalParameter4fvARB");
1439     glGetProgramEnvParameterdvARB = (glGetProgramEnvParameterdvARBPROC) extgl_GetProcAddress("glGetProgramEnvParameterdvARB");
1440     glGetProgramEnvParameterfvARB = (glGetProgramEnvParameterfvARBPROC) extgl_GetProcAddress("glGetProgramEnvParameterfvARB");
1441     glGetProgramLocalParameterdvARB = (glGetProgramLocalParameterdvARBPROC) extgl_GetProcAddress("glGetProgramLocalParameterdvARB");
1442     glGetProgramLocalParameterfvARB = (glGetProgramLocalParameterfvARBPROC) extgl_GetProcAddress("glGetProgramLocalParameterfvARB");
1443     glGetProgramivARB = (glGetProgramivARBPROC) extgl_GetProcAddress("glGetProgramivARB");
1444     glGetProgramStringARB = (glGetProgramStringARBPROC) extgl_GetProcAddress("glGetProgramStringARB");
1445     glIsProgramARB = (glIsProgramARBPROC) extgl_GetProcAddress("glIsProgramARB");
1446 #endif
1447 }
1448 
extgl_InitNVPrimitiveRestart()1449 void extgl_InitNVPrimitiveRestart()
1450 {
1451 #ifdef GL_NV_primitive_restart
1452     if (!extgl_Extensions.NV_primitive_restart)
1453         return;
1454     glPrimitiveRestartNV = (glPrimitiveRestartNVPROC) extgl_GetProcAddress("glPrimitiveRestartNV");
1455     glPrimitiveRestartIndexNV = (glPrimitiveRestartIndexNVPROC) extgl_GetProcAddress("glPrimitiveRestartIndexNV");
1456 #endif /* GL_NV_primitive_restart */
1457 }
1458 
extgl_InitNVFragmentProgram()1459 void extgl_InitNVFragmentProgram()
1460 {
1461 #ifdef GL_NV_fragment_program
1462     if (!extgl_Extensions.NV_fragment_program)
1463         return;
1464     glProgramNamedParameter4fNV = (glProgramNamedParameter4fNVPROC) extgl_GetProcAddress("glProgramNamedParameter4fNV");
1465     glProgramNamedParameter4dNV = (glProgramNamedParameter4dNVPROC) extgl_GetProcAddress("glProgramNamedParameter4dNV");
1466     glProgramNamedParameter4fvNV = (glProgramNamedParameter4fvNVPROC) extgl_GetProcAddress("glProgramNamedParameter4fvNV");
1467     glProgramNamedParameter4dvNV = (glProgramNamedParameter4dvNVPROC) extgl_GetProcAddress("glProgramNamedParameter4dvNV");
1468     glGetProgramNamedParameterfvNV = (glGetProgramNamedParameterfvNVPROC) extgl_GetProcAddress("glGetProgramNamedParameterfvNV");
1469     glGetProgramNamedParameterdvNV = (glGetProgramNamedParameterdvNVPROC) extgl_GetProcAddress("glGetProgramNamedParameterdvNV");
1470 #ifndef GL_ARB_vertex_program
1471     glProgramLocalParameter4dARB = (glProgramLocalParameter4dARBPROC) extgl_GetProcAddress("glProgramLocalParameter4dARB");
1472     glProgramLocalParameter4dvARB = (glProgramLocalParameter4dvARBPROC) extgl_GetProcAddress("glProgramLocalParameter4dvARB");
1473     glProgramLocalParameter4fARB = (glProgramLocalParameter4fARBPROC) extgl_GetProcAddress("glProgramLocalParameter4fARB");
1474     glProgramLocalParameter4fvARB = (glProgramLocalParameter4fvARBPROC) extgl_GetProcAddress("glProgramLocalParameter4fvARB");
1475     glGetProgramLocalParameterdvARB = (glGetProgramLocalParameterdvARBPROC) extgl_GetProcAddress("glGetProgramLocalParameterdvARB");
1476     glGetProgramLocalParameterfvARB = (glGetProgramLocalParameterfvARBPROC) extgl_GetProcAddress("glGetProgramLocalParameterfvARB");
1477 #endif /* GL_ARB_vertex_program */
1478 #endif /* GL_NV_fragment_program */
1479 }
1480 
extgl_InitNVElementArray()1481 void extgl_InitNVElementArray()
1482 {
1483 #ifdef GL_NV_element_array
1484     if (!extgl_Extensions.NV_element_array)
1485         return;
1486     glElementPointerNV = (glElementPointerNVPROC) extgl_GetProcAddress("glElementPointerNV");
1487     glDrawElementArrayNV = (glDrawElementArrayNVPROC) extgl_GetProcAddress("glDrawElementArrayNV");
1488     glDrawRangeElementArrayNV = (glDrawRangeElementArrayNVPROC) extgl_GetProcAddress("glDrawRangeElementArrayNV");
1489     glMultiDrawElementArrayNV = (glMultiDrawElementArrayNVPROC) extgl_GetProcAddress("glMultiDrawElementArrayNV");
1490     glMultiDrawRangeElementArrayNV = (glMultiDrawRangeElementArrayNVPROC) extgl_GetProcAddress("glMultiDrawRangeElementArrayNV");
1491 #endif
1492 }
1493 
1494 
extgl_InitEXTBlendFuncSeparate()1495 void extgl_InitEXTBlendFuncSeparate()
1496 {
1497 #ifdef GL_EXT_blend_func_separate
1498     if (!extgl_Extensions.EXT_blend_func_separate)
1499         return;
1500     glBlendFuncSeparateEXT = (glBlendFuncSeparateEXTPROC) extgl_GetProcAddress("glBlendFuncSeparateEXT");
1501 #endif
1502 }
1503 
extgl_InitEXTCullVertex()1504 void extgl_InitEXTCullVertex()
1505 {
1506 #ifdef GL_EXT_cull_vertex
1507     if (!extgl_Extensions.EXT_cull_vertex)
1508         return;
1509     glCullParameterfvEXT = (glCullParameterfvEXTPROC) extgl_GetProcAddress("glCullParameterfvEXT");
1510     glCullParameterdvEXT = (glCullParameterdvEXTPROC) extgl_GetProcAddress("glCullParameterdvEXT");
1511 #endif
1512 }
1513 
extgl_InitARBVertexProgram()1514 void extgl_InitARBVertexProgram()
1515 {
1516 #ifdef GL_ARB_vertex_program
1517     if (!extgl_Extensions.ARB_vertex_program)
1518         return;
1519     glVertexAttrib1sARB = (glVertexAttrib1sARBPROC) extgl_GetProcAddress("glVertexAttrib1sARB");
1520     glVertexAttrib1fARB = (glVertexAttrib1fARBPROC) extgl_GetProcAddress("glVertexAttrib1fARB");
1521     glVertexAttrib1dARB = (glVertexAttrib1dARBPROC) extgl_GetProcAddress("glVertexAttrib1dARB");
1522     glVertexAttrib2sARB = (glVertexAttrib2sARBPROC) extgl_GetProcAddress("glVertexAttrib2sARB");
1523     glVertexAttrib2fARB = (glVertexAttrib2fARBPROC) extgl_GetProcAddress("glVertexAttrib2fARB");
1524     glVertexAttrib2dARB = (glVertexAttrib2dARBPROC) extgl_GetProcAddress("glVertexAttrib2dARB");
1525     glVertexAttrib3sARB = (glVertexAttrib3sARBPROC) extgl_GetProcAddress("glVertexAttrib3sARB");
1526     glVertexAttrib3fARB = (glVertexAttrib3fARBPROC) extgl_GetProcAddress("glVertexAttrib3fARB");
1527     glVertexAttrib3dARB = (glVertexAttrib3dARBPROC) extgl_GetProcAddress("glVertexAttrib3dARB");
1528     glVertexAttrib4sARB = (glVertexAttrib4sARBPROC) extgl_GetProcAddress("glVertexAttrib4sARB");
1529     glVertexAttrib4fARB = (glVertexAttrib4fARBPROC) extgl_GetProcAddress("glVertexAttrib4fARB");
1530     glVertexAttrib4dARB = (glVertexAttrib4dARBPROC) extgl_GetProcAddress("glVertexAttrib4dARB");
1531     glVertexAttrib4NubARB = (glVertexAttrib4NubARBPROC) extgl_GetProcAddress("glVertexAttrib4NubARB");
1532     glVertexAttrib1svARB = (glVertexAttrib1svARBPROC) extgl_GetProcAddress("glVertexAttrib1svARB");
1533     glVertexAttrib1fvARB = (glVertexAttrib1fvARBPROC) extgl_GetProcAddress("glVertexAttrib1fvARB");
1534     glVertexAttrib1dvARB = (glVertexAttrib1dvARBPROC) extgl_GetProcAddress("glVertexAttrib1dvARB");
1535     glVertexAttrib2svARB = (glVertexAttrib2svARBPROC) extgl_GetProcAddress("glVertexAttrib2svARB");
1536     glVertexAttrib2fvARB = (glVertexAttrib2fvARBPROC) extgl_GetProcAddress("glVertexAttrib2fvARB");
1537     glVertexAttrib2dvARB = (glVertexAttrib2dvARBPROC) extgl_GetProcAddress("glVertexAttrib2dvARB");
1538     glVertexAttrib3svARB = (glVertexAttrib3svARBPROC) extgl_GetProcAddress("glVertexAttrib3svARB");
1539     glVertexAttrib3fvARB = (glVertexAttrib3fvARBPROC) extgl_GetProcAddress("glVertexAttrib3fvARB");
1540     glVertexAttrib3dvARB = (glVertexAttrib3dvARBPROC) extgl_GetProcAddress("glVertexAttrib3dvARB");
1541     glVertexAttrib4bvARB = (glVertexAttrib4bvARBPROC) extgl_GetProcAddress("glVertexAttrib4bvARB");
1542     glVertexAttrib4svARB = (glVertexAttrib4svARBPROC) extgl_GetProcAddress("glVertexAttrib4svARB");
1543     glVertexAttrib4ivARB = (glVertexAttrib4ivARBPROC) extgl_GetProcAddress("glVertexAttrib4ivARB");
1544     glVertexAttrib4ubvARB = (glVertexAttrib4ubvARBPROC) extgl_GetProcAddress("glVertexAttrib4ubvARB");
1545     glVertexAttrib4usvARB = (glVertexAttrib4usvARBPROC) extgl_GetProcAddress("glVertexAttrib4usvARB");
1546     glVertexAttrib4uivARB = (glVertexAttrib4uivARBPROC) extgl_GetProcAddress("glVertexAttrib4uivARB");
1547     glVertexAttrib4fvARB = (glVertexAttrib4fvARBPROC) extgl_GetProcAddress("glVertexAttrib4fvARB");
1548     glVertexAttrib4dvARB = (glVertexAttrib4dvARBPROC) extgl_GetProcAddress("glVertexAttrib4dvARB");
1549     glVertexAttrib4NbvARB = (glVertexAttrib4NbvARBPROC) extgl_GetProcAddress("glVertexAttrib4NbvARB");
1550     glVertexAttrib4NsvARB = (glVertexAttrib4NsvARBPROC) extgl_GetProcAddress("glVertexAttrib4NsvARB");
1551     glVertexAttrib4NivARB = (glVertexAttrib4NivARBPROC) extgl_GetProcAddress("glVertexAttrib4NivARB");
1552     glVertexAttrib4NubvARB = (glVertexAttrib4NubvARBPROC) extgl_GetProcAddress("glVertexAttrib4NubvARB");
1553     glVertexAttrib4NusvARB = (glVertexAttrib4NusvARBPROC) extgl_GetProcAddress("glVertexAttrib4NusvARB");
1554     glVertexAttrib4NuivARB = (glVertexAttrib4NuivARBPROC) extgl_GetProcAddress("glVertexAttrib4NuivARB");
1555     glVertexAttribPointerARB = (glVertexAttribPointerARBPROC) extgl_GetProcAddress("glVertexAttribPointerARB");
1556     glEnableVertexAttribArrayARB = (glEnableVertexAttribArrayARBPROC) extgl_GetProcAddress("glEnableVertexAttribArrayARB");
1557     glDisableVertexAttribArrayARB = (glDisableVertexAttribArrayARBPROC) extgl_GetProcAddress("glDisableVertexAttribArrayARB");
1558     glProgramStringARB = (glProgramStringARBPROC) extgl_GetProcAddress("glProgramStringARB");
1559     glBindProgramARB = (glBindProgramARBPROC) extgl_GetProcAddress("glBindProgramARB");
1560     glDeleteProgramsARB = (glDeleteProgramsARBPROC) extgl_GetProcAddress("glDeleteProgramsARB");
1561     glGenProgramsARB = (glGenProgramsARBPROC) extgl_GetProcAddress("glGenProgramsARB");
1562     glProgramEnvParameter4dARB = (glProgramEnvParameter4dARBPROC) extgl_GetProcAddress("glProgramEnvParameter4dARB");
1563     glProgramEnvParameter4dvARB = (glProgramEnvParameter4dvARBPROC) extgl_GetProcAddress("glProgramEnvParameter4dvARB");
1564     glProgramEnvParameter4fARB = (glProgramEnvParameter4fARBPROC) extgl_GetProcAddress("glProgramEnvParameter4fARB");
1565     glProgramEnvParameter4fvARB = (glProgramEnvParameter4fvARBPROC) extgl_GetProcAddress("glProgramEnvParameter4fvARB");
1566     glProgramLocalParameter4dARB = (glProgramLocalParameter4dARBPROC) extgl_GetProcAddress("glProgramLocalParameter4dARB");
1567     glProgramLocalParameter4dvARB = (glProgramLocalParameter4dvARBPROC) extgl_GetProcAddress("glProgramLocalParameter4dvARB");
1568     glProgramLocalParameter4fARB = (glProgramLocalParameter4fARBPROC) extgl_GetProcAddress("glProgramLocalParameter4fARB");
1569     glProgramLocalParameter4fvARB = (glProgramLocalParameter4fvARBPROC) extgl_GetProcAddress("glProgramLocalParameter4fvARB");
1570     glGetProgramEnvParameterdvARB = (glGetProgramEnvParameterdvARBPROC) extgl_GetProcAddress("glGetProgramEnvParameterdvARB");
1571     glGetProgramEnvParameterfvARB = (glGetProgramEnvParameterfvARBPROC) extgl_GetProcAddress("glGetProgramEnvParameterfvARB");
1572     glGetProgramLocalParameterdvARB = (glGetProgramLocalParameterdvARBPROC) extgl_GetProcAddress("glGetProgramLocalParameterdvARB");
1573     glGetProgramLocalParameterfvARB = (glGetProgramLocalParameterfvARBPROC) extgl_GetProcAddress("glGetProgramLocalParameterfvARB");
1574     glGetProgramivARB = (glGetProgramivARBPROC) extgl_GetProcAddress("glGetProgramivARB");
1575     glGetProgramStringARB = (glGetProgramStringARBPROC) extgl_GetProcAddress("glGetProgramStringARB");
1576     glGetVertexAttribdvARB = (glGetVertexAttribdvARBPROC) extgl_GetProcAddress("glGetVertexAttribdvARB");
1577     glGetVertexAttribfvARB = (glGetVertexAttribfvARBPROC) extgl_GetProcAddress("glGetVertexAttribfvARB");
1578     glGetVertexAttribivARB = (glGetVertexAttribivARBPROC) extgl_GetProcAddress("glGetVertexAttribivARB");
1579     glGetVertexAttribPointervARB = (glGetVertexAttribPointervARBPROC) extgl_GetProcAddress("glGetVertexAttribPointervARB");
1580     glIsProgramARB = (glIsProgramARBPROC) extgl_GetProcAddress("glIsProgramARB");
1581 #endif
1582 }
1583 
extgl_InitEXTStencilTwoSide()1584 void extgl_InitEXTStencilTwoSide()
1585 {
1586 #ifdef GL_EXT_stencil_two_side
1587     if (!extgl_Extensions.EXT_stencil_two_side)
1588         return;
1589     glActiveStencilFaceEXT = (glActiveStencilFaceEXTPROC) extgl_GetProcAddress("glActiveStencilFaceEXT");
1590 #endif
1591 }
1592 
extgl_InitARBWindowPos()1593 void extgl_InitARBWindowPos()
1594 {
1595 #ifdef GL_ARB_window_pos
1596     if (!extgl_Extensions.ARB_window_pos)
1597         return;
1598     glWindowPos2dARB = (glWindowPos2dARBPROC) extgl_GetProcAddress("glWindowPos2dARB");
1599     glWindowPos2fARB = (glWindowPos2fARBPROC) extgl_GetProcAddress("glWindowPos2fARB");
1600     glWindowPos2iARB = (glWindowPos2iARBPROC) extgl_GetProcAddress("glWindowPos2iARB");
1601     glWindowPos2sARB = (glWindowPos2sARBPROC) extgl_GetProcAddress("glWindowPos2sARB");
1602     glWindowPos2dvARB = (glWindowPos2dvARBPROC) extgl_GetProcAddress("glWindowPos2dvARB");
1603     glWindowPos2fvARB = (glWindowPos2fvARBPROC) extgl_GetProcAddress("glWindowPos2fvARB");
1604     glWindowPos2ivARB = (glWindowPos2ivARBPROC) extgl_GetProcAddress("glWindowPos2ivARB");
1605     glWindowPos2svARB = (glWindowPos2svARBPROC) extgl_GetProcAddress("glWindowPos2svARB");
1606     glWindowPos3dARB = (glWindowPos3dARBPROC) extgl_GetProcAddress("glWindowPos3dARB");
1607     glWindowPos3fARB = (glWindowPos3fARBPROC) extgl_GetProcAddress("glWindowPos3fARB");
1608     glWindowPos3iARB = (glWindowPos3iARBPROC) extgl_GetProcAddress("glWindowPos3iARB");
1609     glWindowPos3sARB = (glWindowPos3sARBPROC) extgl_GetProcAddress("glWindowPos3sARB");
1610     glWindowPos3dvARB = (glWindowPos3dvARBPROC) extgl_GetProcAddress("glWindowPos3dvARB");
1611     glWindowPos3fvARB = (glWindowPos3fvARBPROC) extgl_GetProcAddress("glWindowPos3fvARB");
1612     glWindowPos3ivARB = (glWindowPos3ivARBPROC) extgl_GetProcAddress("glWindowPos3ivARB");
1613     glWindowPos3svARB = (glWindowPos3svARBPROC) extgl_GetProcAddress("glWindowPos3svARB");
1614 #endif
1615 }
1616 
extgl_InitARBTextureCompression()1617 void extgl_InitARBTextureCompression()
1618 {
1619 #ifdef GL_ARB_texture_compression
1620     if (!extgl_Extensions.ARB_texture_compression)
1621         return;
1622     glCompressedTexImage3DARB = (glCompressedTexImage3DARBPROC) extgl_GetProcAddress("glCompressedTexImage3DARB");
1623     glCompressedTexImage2DARB = (glCompressedTexImage2DARBPROC) extgl_GetProcAddress("glCompressedTexImage2DARB");
1624     glCompressedTexImage1DARB = (glCompressedTexImage1DARBPROC) extgl_GetProcAddress("glCompressedTexImage1DARB");
1625     glCompressedTexSubImage3DARB = (glCompressedTexSubImage3DARBPROC) extgl_GetProcAddress("glCompressedTexSubImage3DARB");
1626     glCompressedTexSubImage2DARB = (glCompressedTexSubImage2DARBPROC) extgl_GetProcAddress("glCompressedTexSubImage2DARB");
1627     glCompressedTexSubImage1DARB = (glCompressedTexSubImage1DARBPROC) extgl_GetProcAddress("glCompressedTexSubImage1DARB");
1628     glGetCompressedTexImageARB = (glGetCompressedTexImageARBPROC) extgl_GetProcAddress("glGetCompressedTexImageARB");
1629 #endif
1630 }
1631 
extgl_InitNVPointSprite()1632 void extgl_InitNVPointSprite()
1633 {
1634 #ifdef GL_NV_point_sprite
1635     if (!extgl_Extensions.NV_point_sprite)
1636         return;
1637     glPointParameteriNV = (glPointParameteriNVPROC) extgl_GetProcAddress("glPointParameteriNV");
1638     glPointParameterivNV = (glPointParameterivNVPROC) extgl_GetProcAddress("glPointParameterivNV");
1639 #endif
1640 }
1641 
extgl_InitNVOcclusionQuery()1642 void extgl_InitNVOcclusionQuery()
1643 {
1644 #ifdef GL_NV_occlusion_query
1645     if (!extgl_Extensions.NV_occlusion_query)
1646         return;
1647     glGenOcclusionQueriesNV = (glGenOcclusionQueriesNVPROC) extgl_GetProcAddress("glGenOcclusionQueriesNV");
1648     glDeleteOcclusionQueriesNV = (glDeleteOcclusionQueriesNVPROC) extgl_GetProcAddress("glDeleteOcclusionQueriesNV");
1649     glIsOcclusionQueryNV = (glIsOcclusionQueryNVPROC) extgl_GetProcAddress("glIsOcclusionQueryNV");
1650     glBeginOcclusionQueryNV = (glBeginOcclusionQueryNVPROC) extgl_GetProcAddress("glBeginOcclusionQueryNV");
1651     glEndOcclusionQueryNV = (glEndOcclusionQueryNVPROC) extgl_GetProcAddress("glEndOcclusionQueryNV");
1652     glGetOcclusionQueryivNV = (glGetOcclusionQueryivNVPROC) extgl_GetProcAddress("glGetOcclusionQueryivNV");
1653     glGetOcclusionQueryuivNV = (glGetOcclusionQueryuivNVPROC) extgl_GetProcAddress("glGetOcclusionQueryuivNV");
1654 #endif
1655 }
1656 
extgl_InitATIVertexArrayObject()1657 void extgl_InitATIVertexArrayObject()
1658 {
1659 #ifdef GL_ATI_vertex_array_object
1660     if (!extgl_Extensions.ATI_vertex_array_object)
1661         return;
1662     glNewObjectBufferATI = (glNewObjectBufferATIPROC) extgl_GetProcAddress("glNewObjectBufferATI");
1663     glIsObjectBufferATI = (glIsObjectBufferATIPROC) extgl_GetProcAddress("glIsObjectBufferATI");
1664     glUpdateObjectBufferATI = (glUpdateObjectBufferATIPROC) extgl_GetProcAddress("glUpdateObjectBufferATI");
1665     glGetObjectBufferfvATI = (glGetObjectBufferfvATIPROC) extgl_GetProcAddress("glGetObjectBufferfvATI");
1666     glGetObjectBufferivATI = (glGetObjectBufferivATIPROC) extgl_GetProcAddress("glGetObjectBufferivATI");
1667     glFreeObjectBufferATI = (glFreeObjectBufferATIPROC) extgl_GetProcAddress("glFreeObjectBufferATI");
1668     glArrayObjectATI = (glArrayObjectATIPROC) extgl_GetProcAddress("glArrayObjectATI");
1669     glGetArrayObjectfvATI = (glGetArrayObjectfvATIPROC) extgl_GetProcAddress("glGetArrayObjectfvATI");
1670     glGetArrayObjectivATI = (glGetArrayObjectivATIPROC) extgl_GetProcAddress("glGetArrayObjectivATI");
1671     glVariantArrayObjectATI = (glVariantArrayObjectATIPROC) extgl_GetProcAddress("glVariantArrayObjectATI");
1672     glGetVariantArrayObjectfvATI = (glGetVariantArrayObjectfvATIPROC) extgl_GetProcAddress("glGetVariantArrayObjectfvATI");
1673     glGetVariantArrayObjectivATI = (glGetVariantArrayObjectivATIPROC) extgl_GetProcAddress("glGetVariantArrayObjectivATI");
1674 #endif
1675 }
1676 
extgl_InitATIVertexStreams()1677 void extgl_InitATIVertexStreams()
1678 {
1679 #ifdef GL_ATI_vertex_streams
1680     if (!extgl_Extensions.ATI_vertex_streams)
1681         return;
1682     glClientActiveVertexStreamATI = (glClientActiveVertexStreamATIPROC) extgl_GetProcAddress("glClientActiveVertexStreamATI");
1683     glVertexBlendEnviATI = (glVertexBlendEnviATIPROC) extgl_GetProcAddress("glVertexBlendEnviATI");
1684     glVertexBlendEnvfATI = (glVertexBlendEnvfATIPROC) extgl_GetProcAddress("glVertexBlendEnvfATI");
1685     glVertexStream2sATI = (glVertexStream2sATIPROC) extgl_GetProcAddress("glVertexStream2sATI");
1686     glVertexStream2svATI = (glVertexStream2svATIPROC) extgl_GetProcAddress("glVertexStream2svATI");
1687     glVertexStream2iATI = (glVertexStream2iATIPROC) extgl_GetProcAddress("glVertexStream2iATI");
1688     glVertexStream2ivATI = (glVertexStream2ivATIPROC) extgl_GetProcAddress("glVertexStream2ivATI");
1689     glVertexStream2fATI = (glVertexStream2fATIPROC) extgl_GetProcAddress("glVertexStream2fATI");
1690     glVertexStream2fvATI = (glVertexStream2fvATIPROC) extgl_GetProcAddress("glVertexStream2fvATI");
1691     glVertexStream2dATI = (glVertexStream2dATIPROC) extgl_GetProcAddress("glVertexStream2dATI");
1692     glVertexStream2dvATI = (glVertexStream2dvATIPROC) extgl_GetProcAddress("glVertexStream2dvATI");
1693     glVertexStream3sATI = (glVertexStream3sATIPROC) extgl_GetProcAddress("glVertexStream3sATI");
1694     glVertexStream3svATI = (glVertexStream3svATIPROC) extgl_GetProcAddress("glVertexStream3svATI");
1695     glVertexStream3iATI = (glVertexStream3iATIPROC) extgl_GetProcAddress("glVertexStream3iATI");
1696     glVertexStream3ivATI = (glVertexStream3ivATIPROC) extgl_GetProcAddress("glVertexStream3ivATI");
1697     glVertexStream3fATI = (glVertexStream3fATIPROC) extgl_GetProcAddress("glVertexStream3fATI");
1698     glVertexStream3fvATI = (glVertexStream3fvATIPROC) extgl_GetProcAddress("glVertexStream3fvATI");
1699     glVertexStream3dATI = (glVertexStream3dATIPROC) extgl_GetProcAddress("glVertexStream3dATI");
1700     glVertexStream3dvATI = (glVertexStream3dvATIPROC) extgl_GetProcAddress("glVertexStream3dvATI");
1701     glVertexStream4sATI = (glVertexStream4sATIPROC) extgl_GetProcAddress("glVertexStream4sATI");
1702     glVertexStream4svATI = (glVertexStream4svATIPROC) extgl_GetProcAddress("glVertexStream4svATI");
1703     glVertexStream4iATI = (glVertexStream4iATIPROC) extgl_GetProcAddress("glVertexStream4iATI");
1704     glVertexStream4ivATI = (glVertexStream4ivATIPROC) extgl_GetProcAddress("glVertexStream4ivATI");
1705     glVertexStream4fATI = (glVertexStream4fATIPROC) extgl_GetProcAddress("glVertexStream4fATI");
1706     glVertexStream4fvATI = (glVertexStream4fvATIPROC) extgl_GetProcAddress("glVertexStream4fvATI");
1707     glVertexStream4dATI = (glVertexStream4dATIPROC) extgl_GetProcAddress("glVertexStream4dATI");
1708     glVertexStream4dvATI = (glVertexStream4dvATIPROC) extgl_GetProcAddress("glVertexStream4dvATI");
1709     glNormalStream3bATI = (glNormalStream3bATIPROC) extgl_GetProcAddress("glNormalStream3bATI");
1710     glNormalStream3bvATI = (glNormalStream3bvATIPROC) extgl_GetProcAddress("glNormalStream3bvATI");
1711     glNormalStream3sATI = (glNormalStream3sATIPROC) extgl_GetProcAddress("glNormalStream3sATI");
1712     glNormalStream3svATI = (glNormalStream3svATIPROC) extgl_GetProcAddress("glNormalStream3svATI");
1713     glNormalStream3iATI = (glNormalStream3iATIPROC) extgl_GetProcAddress("glNormalStream3iATI");
1714     glNormalStream3ivATI = (glNormalStream3ivATIPROC) extgl_GetProcAddress("glNormalStream3ivATI");
1715     glNormalStream3fATI = (glNormalStream3fATIPROC) extgl_GetProcAddress("glNormalStream3fATI");
1716     glNormalStream3fvATI = (glNormalStream3fvATIPROC) extgl_GetProcAddress("glNormalStream3fvATI");
1717     glNormalStream3dATI = (glNormalStream3dATIPROC) extgl_GetProcAddress("glNormalStream3dATI");
1718     glNormalStream3dvATI = (glNormalStream3dvATIPROC) extgl_GetProcAddress("glNormalStream3dvATI");
1719 #endif
1720 }
1721 
extgl_InitATIElementArray()1722 void extgl_InitATIElementArray()
1723 {
1724 #ifdef GL_ATI_element_array
1725     if (!extgl_Extensions.ATI_element_array)
1726         return;
1727     glElementPointerATI = (glElementPointerATIPROC) extgl_GetProcAddress("glElementPointerATI");
1728     glDrawElementArrayATI = (glDrawElementArrayATIPROC) extgl_GetProcAddress("glDrawElementArrayATI");
1729     glDrawRangeElementArrayATI = (glDrawRangeElementArrayATIPROC) extgl_GetProcAddress("glDrawRangeElementArrayATI");
1730 #endif
1731 }
1732 
extgl_InitATIFragmentShader()1733 void extgl_InitATIFragmentShader()
1734 {
1735 #ifdef GL_ATI_fragment_shader
1736     if (!extgl_Extensions.ATI_fragment_shader)
1737         return;
1738     glGenFragmentShadersATI = (glGenFragmentShadersATIPROC) extgl_GetProcAddress("glGenFragmentShadersATI");
1739     glBindFragmentShaderATI = (glBindFragmentShaderATIPROC) extgl_GetProcAddress("glBindFragmentShaderATI");
1740     glDeleteFragmentShaderATI = (glDeleteFragmentShaderATIPROC) extgl_GetProcAddress("glDeleteFragmentShaderATI");
1741     glBeginFragmentShaderATI = (glBeginFragmentShaderATIPROC) extgl_GetProcAddress("glBeginFragmentShaderATI");
1742     glEndFragmentShaderATI = (glEndFragmentShaderATIPROC) extgl_GetProcAddress("glEndFragmentShaderATI");
1743     glPassTexCoordATI = (glPassTexCoordATIPROC) extgl_GetProcAddress("glPassTexCoordATI");
1744     glSampleMapATI = (glSampleMapATIPROC) extgl_GetProcAddress("glSampleMapATI");
1745     glColorFragmentOp1ATI = (glColorFragmentOp1ATIPROC) extgl_GetProcAddress("glColorFragmentOp1ATI");
1746     glColorFragmentOp2ATI = (glColorFragmentOp2ATIPROC) extgl_GetProcAddress("glColorFragmentOp2ATI");
1747     glColorFragmentOp3ATI = (glColorFragmentOp3ATIPROC) extgl_GetProcAddress("glColorFragmentOp3ATI");
1748     glAlphaFragmentOp1ATI = (glAlphaFragmentOp1ATIPROC) extgl_GetProcAddress("glAlphaFragmentOp1ATI");
1749     glAlphaFragmentOp2ATI = (glAlphaFragmentOp2ATIPROC) extgl_GetProcAddress("glAlphaFragmentOp2ATI");
1750     glAlphaFragmentOp3ATI = (glAlphaFragmentOp3ATIPROC) extgl_GetProcAddress("glAlphaFragmentOp3ATI");
1751     glSetFragmentShaderConstantATI = (glSetFragmentShaderConstantATIPROC) extgl_GetProcAddress("glSetFragmentShaderConstantATI");
1752 #endif
1753 }
1754 
1755 
extgl_InitATIEnvmapBumpmap()1756 void extgl_InitATIEnvmapBumpmap()
1757 {
1758 #ifdef GL_ATI_envmap_bumpmap
1759     if (!extgl_Extensions.ATI_envmap_bumpmap)
1760         return;
1761     glTexBumpParameterivATI = (glTexBumpParameterivATIPROC) extgl_GetProcAddress("glTexBumpParameterivATI");
1762     glTexBumpParameterfvATI = (glTexBumpParameterfvATIPROC) extgl_GetProcAddress("glTexBumpParameterfvATI");
1763     glGetTexBumpParameterivATI = (glGetTexBumpParameterivATIPROC) extgl_GetProcAddress("glGetTexBumpParameterivATI");
1764     glGetTexBumpParameterfvATI = (glGetTexBumpParameterfvATIPROC) extgl_GetProcAddress("glGetTexBumpParameterfvATI");
1765 #endif
1766 }
1767 
extgl_InitEXTVertexShader()1768 void extgl_InitEXTVertexShader()
1769 {
1770 #ifdef GL_EXT_vertex_shader
1771     if (!extgl_Extensions.EXT_vertex_shader)
1772         return;
1773     glBeginVertexShaderEXT = (glBeginVertexShaderEXTPROC) extgl_GetProcAddress("glBeginVertexShaderEXT");
1774     glEndVertexShaderEXT = (glEndVertexShaderEXTPROC) extgl_GetProcAddress("glEndVertexShaderEXT");
1775     glBindVertexShaderEXT = (glBindVertexShaderEXTPROC) extgl_GetProcAddress("glBindVertexShaderEXT");
1776     glGenVertexShadersEXT = (glGenVertexShadersEXTPROC) extgl_GetProcAddress("glGenVertexShadersEXT");
1777     glDeleteVertexShaderEXT = (glDeleteVertexShaderEXTPROC) extgl_GetProcAddress("glDeleteVertexShaderEXT");
1778     glShaderOp1EXT = (glShaderOp1EXTPROC) extgl_GetProcAddress("glShaderOp1EXT");
1779     glShaderOp2EXT = (glShaderOp2EXTPROC) extgl_GetProcAddress("glShaderOp2EXT");
1780     glShaderOp3EXT = (glShaderOp3EXTPROC) extgl_GetProcAddress("glShaderOp3EXT");
1781     glSwizzleEXT = (glSwizzleEXTPROC) extgl_GetProcAddress("glSwizzleEXT");
1782     glWriteMaskEXT = (glWriteMaskEXTPROC) extgl_GetProcAddress("glWriteMaskEXT");
1783     glInsertComponentEXT = (glInsertComponentEXTPROC) extgl_GetProcAddress("glInsertComponentEXT");
1784     glExtractComponentEXT = (glExtractComponentEXTPROC) extgl_GetProcAddress("glExtractComponentEXT");
1785     glGenSymbolsEXT = (glGenSymbolsEXTPROC) extgl_GetProcAddress("glGenSymbolsEXT");
1786     glSetInvariantEXT = (glSetInvariantEXTPROC) extgl_GetProcAddress("glSetInvarianceEXT");
1787     glSetLocalConstantEXT = (glSetLocalConstantEXTPROC) extgl_GetProcAddress("glSetLocalConstantEXT");
1788     glVariantbvEXT = (glVariantbvEXTPROC) extgl_GetProcAddress("glVariantbvEXT");
1789     glVariantsvEXT = (glVariantsvEXTPROC) extgl_GetProcAddress("glVariantsvEXT");
1790     glVariantivEXT = (glVariantivEXTPROC) extgl_GetProcAddress("glVariantivEXT");
1791     glVariantfvEXT = (glVariantfvEXTPROC) extgl_GetProcAddress("glVariantfvEXT");
1792     glVariantdvEXT = (glVariantdvEXTPROC) extgl_GetProcAddress("glVariantdvEXT");
1793     glVariantubvEXT = (glVariantubvEXTPROC) extgl_GetProcAddress("glVariantubvEXT");
1794     glVariantusvEXT = (glVariantusvEXTPROC) extgl_GetProcAddress("glVariantusvEXT");
1795     glVariantuivEXT = (glVariantuivEXTPROC) extgl_GetProcAddress("glVariantuivEXT");
1796     glVariantPointerEXT = (glVariantPointerEXTPROC) extgl_GetProcAddress("glVariantPointerEXT");
1797     glEnableVariantClientStateEXT = (glEnableVariantClientStateEXTPROC) extgl_GetProcAddress("glEnableVariantClientStateEXT");
1798     glDisableVariantClientStateEXT = (glDisableVariantClientStateEXTPROC) extgl_GetProcAddress("glDisableVariantClientStateEXT");
1799     glBindLightParameterEXT = (glBindLightParameterEXTPROC) extgl_GetProcAddress("glBindLightParameterEXT");
1800     glBindMaterialParameterEXT = (glBindMaterialParameterEXTPROC) extgl_GetProcAddress("glBindMaterialParameterEXT");
1801     glBindTexGenParameterEXT = (glBindTexGenParameterEXTPROC) extgl_GetProcAddress("glBindTexGenParameterEXT");
1802     glBindTextureUnitParameterEXT = (glBindTextureUnitParameterEXTPROC) extgl_GetProcAddress("glBindTextureUnitParameterEXT");
1803     glBindParameterEXT = (glBindParameterEXTPROC) extgl_GetProcAddress("glBindParameterEXT");
1804     glIsVariantEnabledEXT = (glIsVariantEnabledEXTPROC) extgl_GetProcAddress("glIsVariantEnabledEXT");
1805     glGetVariantBooleanvEXT = (glGetVariantBooleanvEXTPROC) extgl_GetProcAddress("glGetVariantBooleanvEXT");
1806     glGetVariantIntegervEXT = (glGetVariantIntegervEXTPROC) extgl_GetProcAddress("glGetVariantIntegervEXT");
1807     glGetVariantFloatvEXT = (glGetVariantFloatvEXTPROC) extgl_GetProcAddress("glGetVariantFloatvEXT");
1808     glGetVariantPointervEXT = (glGetVariantPointervEXTPROC) extgl_GetProcAddress("glGetVariantPointervEXT");
1809     glGetInvariantBooleanvEXT = (glGetInvariantBooleanvEXTPROC) extgl_GetProcAddress("glGetInvariantBooleanvEXT");
1810     glGetInvariantIntegervEXT = (glGetInvariantIntegervEXTPROC) extgl_GetProcAddress("glGetInvariantIntegervEXT");
1811     glGetInvariantFloatvEXT = (glGetInvariantFloatvEXTPROC) extgl_GetProcAddress("glGetInvariantFloatvEXT");
1812     glGetLocalConstantBooleanvEXT = (glGetLocalConstantBooleanvEXTPROC) extgl_GetProcAddress("glGetLocalConstantBooleanvEXT");
1813     glGetLocalConstantIntegervEXT = (glGetLocalConstantIntegervEXTPROC) extgl_GetProcAddress("glGetLocalConstantIntegervEXT");
1814     glGetLocalConstantFloatvEXT = (glGetLocalConstantFloatvEXTPROC) extgl_GetProcAddress("glGetLocalConstantFloatvEXT");
1815 #endif
1816 }
1817 
extgl_InitARBMatrixPalette()1818 void extgl_InitARBMatrixPalette()
1819 {
1820 #ifdef GL_ARB_matrix_palette
1821     if (!extgl_Extensions.ARB_matrix_palette)
1822         return;
1823     glCurrentPaletteMatrixARB = (glCurrentPaletteMatrixARBPROC) extgl_GetProcAddress("glCurrentPaletteMatrixARB");
1824     glMatrixIndexubvARB = (glMatrixIndexubvARBPROC) extgl_GetProcAddress("glMatrixIndexubvARB");
1825     glMatrixIndexusvARB = (glMatrixIndexusvARBPROC) extgl_GetProcAddress("glMatrixIndexusvARB");
1826     glMatrixIndexuivARB = (glMatrixIndexuivARBPROC) extgl_GetProcAddress("glMatrixIndexuivARB");
1827     glMatrixIndexPointerARB = (glMatrixIndexPointerARBPROC) extgl_GetProcAddress("glMatrixIndexPointerARB");
1828 #endif
1829 }
1830 
extgl_InitEXTMultiDrawArrays()1831 void extgl_InitEXTMultiDrawArrays()
1832 {
1833 #ifdef GL_EXT_multi_draw_arrays
1834     if (!extgl_Extensions.EXT_multi_draw_arrays)
1835         return;
1836     glMultiDrawArraysEXT = (glMultiDrawArraysEXTPROC) extgl_GetProcAddress("glMultiDrawArraysEXT");
1837     glMultiDrawElementsEXT = (glMultiDrawElementsEXTPROC) extgl_GetProcAddress("glMultiDrawElementsEXT");
1838 #endif
1839 }
1840 
extgl_InitARBVertexBlend()1841 void extgl_InitARBVertexBlend()
1842 {
1843 #ifdef GL_ARB_vertex_blend
1844     if (!extgl_Extensions.ARB_vertex_blend)
1845         return;
1846     glWeightbvARB = (glWeightbvARBPROC) extgl_GetProcAddress("glWeightbvARB");
1847     glWeightsvARB = (glWeightsvARBPROC) extgl_GetProcAddress("glWeightsvARB");
1848     glWeightivARB = (glWeightivARBPROC) extgl_GetProcAddress("glWeightivARB");
1849     glWeightfvARB = (glWeightfvARBPROC) extgl_GetProcAddress("glWeightfvARB");
1850     glWeightdvARB = (glWeightdvARBPROC) extgl_GetProcAddress("glWeightdvARB");
1851     glWeightubvARB = (glWeightubvARBPROC) extgl_GetProcAddress("glWeightubvARB");
1852     glWeightusvARB = (glWeightusvARBPROC) extgl_GetProcAddress("glWeightusvARB");
1853     glWeightuivARB = (glWeightuivARBPROC) extgl_GetProcAddress("glWeightuivARB");
1854     glWeightPointerARB = (glWeightPointerARBPROC) extgl_GetProcAddress("glWeightPointerARB");
1855     glVertexBlendARB = (glVertexBlendARBPROC) extgl_GetProcAddress("glVertexBlendARB");
1856 #endif
1857 }
1858 
extgl_InitARBPointParameters()1859 void extgl_InitARBPointParameters()
1860 {
1861 #ifdef GL_ARB_point_parameters
1862     if (!extgl_Extensions.ARB_point_parameters)
1863         return;
1864     glPointParameterfARB = (glPointParameterfARBPROC) extgl_GetProcAddress("glPointParameterfARB");
1865     glPointParameterfvARB = (glPointParameterfvARBPROC) extgl_GetProcAddress("glPointParameterfvARB");
1866 #endif
1867 }
1868 
extgl_InitATIPNTriangles()1869 void extgl_InitATIPNTriangles()
1870 {
1871 #ifdef GL_ATI_pn_triangles
1872     if (!extgl_Extensions.ATI_pn_triangles)
1873         return;
1874     glPNTrianglesiATI = (glPNTrianglesiATIPROC) extgl_GetProcAddress("glPNTrianglesiATI");
1875     glPNTrianglesfATI = (glPNTrianglesfATIPROC) extgl_GetProcAddress("glPNTrianglesfATI");
1876 #endif
1877 }
1878 
extgl_InitNVEvaluators()1879 void extgl_InitNVEvaluators()
1880 {
1881 #ifdef GL_NV_evaluators
1882     if (!extgl_Extensions.NV_evaluators)
1883         return;
1884     glMapControlPointsNV = (glMapControlPointsNVPROC) extgl_GetProcAddress("glMapControlPointsNV");
1885     glMapParameterivNV = (glMapParameterivNVPROC) extgl_GetProcAddress("glMapParameterivNV");
1886     glMapParameterfvNV = (glMapParameterfvNVPROC) extgl_GetProcAddress("glMapParameterfvNV");
1887     glGetMapControlPointsNV = (glGetMapControlPointsNVPROC) extgl_GetProcAddress("glGetMapControlPointsNV");
1888     glGetMapParameterivNV = (glGetMapParameterivNVPROC) extgl_GetProcAddress("glGetMapParameterivNV");
1889     glGetMapParameterfvNV = (glGetMapParameterfvNVPROC) extgl_GetProcAddress("glGetMapParameterfvNV");
1890     glGetMapAttribParameterivNV = (glGetMapAttribParameterivNVPROC) extgl_GetProcAddress("glGetMapAttribParameterivNV");
1891     glGetMapAttribParameterfvNV = (glGetMapAttribParameterfvNVPROC) extgl_GetProcAddress("glGetMapAttribParameterfvNV");
1892     glEvalMapsNV = (glEvalMapsNVPROC) extgl_GetProcAddress("glEvalMapsNV");
1893 #endif
1894 }
1895 
extgl_InitNVRegisterCombiners2()1896 void extgl_InitNVRegisterCombiners2()
1897 {
1898 #ifdef GL_NV_register_combiners
1899     if (!extgl_Extensions.NV_register_combiners2)
1900         return;
1901     glCombinerStageParameterfvNV = (glCombinerStageParameterfvNVPROC) extgl_GetProcAddress("glCombinerStageParameterfvNV");
1902     glGetCombinerStageParameterfvNV = (glGetCombinerStageParameterfvNVPROC) extgl_GetProcAddress("glGetCombinerStageParameterfvNV");
1903 #endif
1904 }
1905 
extgl_InitNVFence()1906 void extgl_InitNVFence()
1907 {
1908 #ifdef GL_NV_fence
1909     if (!extgl_Extensions.NV_fence)
1910         return;
1911     glGenFencesNV = (glGenFencesNVPROC) extgl_GetProcAddress("glGenFencesNV");
1912     glDeleteFencesNV = (glDeleteFencesNVPROC) extgl_GetProcAddress("glDeleteFencesNV");
1913     glSetFenceNV = (glSetFenceNVPROC) extgl_GetProcAddress("glSetFenceNV");
1914     glTestFenceNV = (glTestFenceNVPROC) extgl_GetProcAddress("glTestFenceNV");
1915     glFinishFenceNV = (glFinishFenceNVPROC) extgl_GetProcAddress("glFinishFenceNV");
1916     glIsFenceNV = (glIsFenceNVPROC) extgl_GetProcAddress("glIsFenceNV");
1917     glGetFenceivNV = (glGetFenceivNVPROC) extgl_GetProcAddress("glGetFenceivNV");
1918 #endif
1919 }
1920 
extgl_InitNVVertexProgram()1921 void extgl_InitNVVertexProgram()
1922 {
1923 #ifdef GL_NV_vertex_program
1924     if (!extgl_Extensions.NV_vertex_program)
1925         return;
1926     glBindProgramNV = (glBindProgramNVPROC) extgl_GetProcAddress("glBindProgramNV");
1927     glDeleteProgramsNV = (glDeleteProgramsNVPROC) extgl_GetProcAddress("glDeleteProgramsNV");
1928     glExecuteProgramNV = (glExecuteProgramNVPROC) extgl_GetProcAddress("glExecuteProgramNV");
1929     glGenProgramsNV = (glGenProgramsNVPROC) extgl_GetProcAddress("glGenProgramsNV");
1930     glAreProgramsResidentNV = (glAreProgramsResidentNVPROC) extgl_GetProcAddress("glAreProgramsResidentNV");
1931     glRequestResidentProgramsNV = (glRequestResidentProgramsNVPROC) extgl_GetProcAddress("glRequestResidentProgramsNV");
1932     glGetProgramParameterfvNV = (glGetProgramParameterfvNVPROC) extgl_GetProcAddress("glGetProgramParameterfvNV");
1933     glGetProgramParameterdvNV = (glGetProgramParameterdvNVPROC) extgl_GetProcAddress("glGetProgramParameterdvNV");
1934     glGetProgramivNV = (glGetProgramivNVPROC) extgl_GetProcAddress("glGetProgramivNV");
1935     glGetProgramStringNV = (glGetProgramStringNVPROC) extgl_GetProcAddress("glGetProgramStringNV");
1936     glGetTrackMatrixivNV = (glGetTrackMatrixivNVPROC) extgl_GetProcAddress("glGetTrackMatrixivNV");
1937     glGetVertexAttribdvNV = (glGetVertexAttribdvNVPROC) extgl_GetProcAddress("glGetVertexAttribdvNV");
1938     glGetVertexAttribfvNV = (glGetVertexAttribfvNVPROC) extgl_GetProcAddress("glGetVertexAttribfvNV");
1939     glGetVertexAttribivNV = (glGetVertexAttribivNVPROC) extgl_GetProcAddress("glGetVertexAttribivNV");
1940     glGetVertexAttribPointervNV = (glGetVertexAttribPointervNVPROC) extgl_GetProcAddress("glGetVertexAttribPointervNV");
1941     glIsProgramNV = (glIsProgramNVPROC) extgl_GetProcAddress("glIsProgramNV");
1942     glLoadProgramNV = (glLoadProgramNVPROC) extgl_GetProcAddress("glLoadProgramNV");
1943     glProgramParameter4fNV = (glProgramParameter4fNVPROC) extgl_GetProcAddress("glProgramParameter4fNV");
1944     glProgramParameter4dNV = (glProgramParameter4dNVPROC) extgl_GetProcAddress("glProgramParameter4dNV");
1945     glProgramParameter4dvNV = (glProgramParameter4dvNVPROC) extgl_GetProcAddress("glProgramParameter4dvNV");
1946     glProgramParameter4fvNV = (glProgramParameter4fvNVPROC) extgl_GetProcAddress("glProgramParameter4fvNV");
1947     glProgramParameters4dvNV = (glProgramParameters4dvNVPROC) extgl_GetProcAddress("glProgramParameters4dvNV");
1948     glProgramParameters4fvNV = (glProgramParameters4fvNVPROC) extgl_GetProcAddress("glProgramParameters4fvNV");
1949     glTrackMatrixNV = (glTrackMatrixNVPROC) extgl_GetProcAddress("glTrackMatrixNV");
1950     glVertexAttribPointerNV = (glVertexAttribPointerNVPROC) extgl_GetProcAddress("glVertexAttribPointerNV");
1951     glVertexAttrib1sNV = (glVertexAttrib1sNVPROC) extgl_GetProcAddress("glVertexAttrib1sNV");
1952     glVertexAttrib1fNV = (glVertexAttrib1fNVPROC) extgl_GetProcAddress("glVertexAttrib1fNV");
1953     glVertexAttrib1dNV = (glVertexAttrib1dNVPROC) extgl_GetProcAddress("glVertexAttrib1dNV");
1954     glVertexAttrib2sNV = (glVertexAttrib2sNVPROC) extgl_GetProcAddress("glVertexAttrib2sNV");
1955     glVertexAttrib2fNV = (glVertexAttrib2fNVPROC) extgl_GetProcAddress("glVertexAttrib2fNV");
1956     glVertexAttrib2dNV = (glVertexAttrib2dNVPROC) extgl_GetProcAddress("glVertexAttrib2dNV");
1957     glVertexAttrib3sNV = (glVertexAttrib3sNVPROC) extgl_GetProcAddress("glVertexAttrib3sNV");
1958     glVertexAttrib3fNV = (glVertexAttrib3fNVPROC) extgl_GetProcAddress("glVertexAttrib3fNV");
1959     glVertexAttrib3dNV = (glVertexAttrib3dNVPROC) extgl_GetProcAddress("glVertexAttrib3dNV");
1960     glVertexAttrib4sNV = (glVertexAttrib4sNVPROC) extgl_GetProcAddress("glVertexAttrib4sNV");
1961     glVertexAttrib4fNV = (glVertexAttrib4fNVPROC) extgl_GetProcAddress("glVertexAttrib4fNV");
1962     glVertexAttrib4dNV = (glVertexAttrib4dNVPROC) extgl_GetProcAddress("glVertexAttrib4dNV");
1963     glVertexAttrib4ubNV = (glVertexAttrib4ubNVPROC) extgl_GetProcAddress("glVertexAttrib4ubNV");
1964     glVertexAttrib1svNV = (glVertexAttrib1svNVPROC) extgl_GetProcAddress("glVertexAttrib1svNV");
1965     glVertexAttrib1fvNV = (glVertexAttrib1fvNVPROC) extgl_GetProcAddress("glVertexAttrib1fvNV");
1966     glVertexAttrib1dvNV = (glVertexAttrib1dvNVPROC) extgl_GetProcAddress("glVertexAttrib1dvNV");
1967     glVertexAttrib2svNV = (glVertexAttrib2svNVPROC) extgl_GetProcAddress("glVertexAttrib2svNV");
1968     glVertexAttrib2fvNV = (glVertexAttrib2fvNVPROC) extgl_GetProcAddress("glVertexAttrib2fvNV");
1969     glVertexAttrib2dvNV = (glVertexAttrib2dvNVPROC) extgl_GetProcAddress("glVertexAttrib2dvNV");
1970     glVertexAttrib3svNV = (glVertexAttrib3svNVPROC) extgl_GetProcAddress("glVertexAttrib3svNV");
1971     glVertexAttrib3fvNV = (glVertexAttrib3fvNVPROC) extgl_GetProcAddress("glVertexAttrib3fvNV");
1972     glVertexAttrib3dvNV = (glVertexAttrib3dvNVPROC) extgl_GetProcAddress("glVertexAttrib3dvNV");
1973     glVertexAttrib4svNV = (glVertexAttrib4svNVPROC) extgl_GetProcAddress("glVertexAttrib4svNV");
1974     glVertexAttrib4fvNV = (glVertexAttrib4fvNVPROC) extgl_GetProcAddress("glVertexAttrib4fvNV");
1975     glVertexAttrib4dvNV = (glVertexAttrib4dvNVPROC) extgl_GetProcAddress("glVertexAttrib4dvNV");
1976     glVertexAttrib4ubvNV = (glVertexAttrib4ubvNVPROC) extgl_GetProcAddress("glVertexAttrib4ubvNV");
1977     glVertexAttribs1svNV = (glVertexAttribs1svNVPROC) extgl_GetProcAddress("glVertexAttribs1svNV");
1978     glVertexAttribs1fvNV = (glVertexAttribs1fvNVPROC) extgl_GetProcAddress("glVertexAttribs1fvNV");
1979     glVertexAttribs1dvNV = (glVertexAttribs1dvNVPROC) extgl_GetProcAddress("glVertexAttribs1dvNV");
1980     glVertexAttribs2svNV = (glVertexAttribs2svNVPROC) extgl_GetProcAddress("glVertexAttribs2svNV");
1981     glVertexAttribs2fvNV = (glVertexAttribs2fvNVPROC) extgl_GetProcAddress("glVertexAttribs2fvNV");
1982     glVertexAttribs2dvNV = (glVertexAttribs2dvNVPROC) extgl_GetProcAddress("glVertexAttribs2dvNV");
1983     glVertexAttribs3svNV = (glVertexAttribs3svNVPROC) extgl_GetProcAddress("glVertexAttribs3svNV");
1984     glVertexAttribs3fvNV = (glVertexAttribs3fvNVPROC) extgl_GetProcAddress("glVertexAttribs3fvNV");
1985     glVertexAttribs3dvNV = (glVertexAttribs3dvNVPROC) extgl_GetProcAddress("glVertexAttribs3dvNV");
1986     glVertexAttribs4svNV = (glVertexAttribs4svNVPROC) extgl_GetProcAddress("glVertexAttribs4svNV");
1987     glVertexAttribs4fvNV = (glVertexAttribs4fvNVPROC) extgl_GetProcAddress("glVertexAttribs4fvNV");
1988     glVertexAttribs4dvNV = (glVertexAttribs4dvNVPROC) extgl_GetProcAddress("glVertexAttribs4dvNV");
1989     glVertexAttribs4ubvNV = (glVertexAttribs4ubvNVPROC) extgl_GetProcAddress("glVertexAttribs4ubvNV");
1990 #endif
1991 }
1992 
extgl_InitEXTVertexWeighting()1993 void extgl_InitEXTVertexWeighting()
1994 {
1995 #ifdef GL_EXT_vertex_weighting
1996     if (!extgl_Extensions.EXT_vertex_weighting)
1997         return;
1998     glVertexWeightfEXT = (glVertexWeightfEXTPROC) extgl_GetProcAddress("glVertexWeightfEXT");
1999     glVertexWeightfvEXT = (glVertexWeightfvEXTPROC) extgl_GetProcAddress("glVertexWeightfvEXT");
2000     glVertexWeightPointerEXT = (glVertexWeightPointerEXTPROC) extgl_GetProcAddress("glVertexWeightPointerEXT");
2001 #endif
2002 }
2003 
extgl_InitARBMultisample()2004 void extgl_InitARBMultisample()
2005 {
2006 #ifdef GL_ARB_multisample
2007     if (!extgl_Extensions.ARB_multisample)
2008         return;
2009     glSampleCoverageARB = (glSampleCoverageARBPROC) extgl_GetProcAddress("glSampleCoverageARB");
2010 #endif
2011 }
2012 
extgl_InitNVRegisterCombiners()2013 void extgl_InitNVRegisterCombiners()
2014 {
2015 #ifdef GL_NV_register_combiners
2016     if (!extgl_Extensions.NV_register_combiners)
2017         return;
2018     glCombinerParameterfvNV = (glCombinerParameterfvNVPROC) extgl_GetProcAddress("glCombinerParameterfvNV");
2019     glCombinerParameterfNV = (glCombinerParameterfNVPROC) extgl_GetProcAddress("glCombinerParameterfNV");
2020     glCombinerParameterivNV = (glCombinerParameterivNVPROC) extgl_GetProcAddress("glCombinerParameterivNV");
2021     glCombinerParameteriNV = (glCombinerParameteriNVPROC) extgl_GetProcAddress("glCombinerParameteriNV");
2022     glCombinerInputNV = (glCombinerInputNVPROC) extgl_GetProcAddress("glCombinerInputNV");
2023     glCombinerOutputNV = (glCombinerOutputNVPROC) extgl_GetProcAddress("glCombinerOutputNV");
2024     glFinalCombinerInputNV = (glFinalCombinerInputNVPROC) extgl_GetProcAddress("glFinalCombinerInputNV");
2025     glGetCombinerInputParameterfvNV = (glGetCombinerInputParameterfvNVPROC) extgl_GetProcAddress("glGetCombinerInputParameterfvNV");
2026     glGetCombinerInputParameterivNV = (glGetCombinerInputParameterivNVPROC) extgl_GetProcAddress("glGetCombinerInputParameterivNV");
2027     glGetCombinerOutputParameterfvNV = (glGetCombinerOutputParameterfvNVPROC) extgl_GetProcAddress("glGetCombinerOutputParameterfvNV");
2028     glGetCombinerOutputParameterivNV = (glGetCombinerOutputParameterivNVPROC) extgl_GetProcAddress("glGetCombinerOutputParameterivNV");
2029     glGetFinalCombinerInputParameterfvNV = (glGetFinalCombinerInputParameterfvNVPROC) extgl_GetProcAddress("glGetFinalCombinerInputParameterfvNV");
2030     glGetFinalCombinerInputParameterivNV = (glGetFinalCombinerInputParameterivNVPROC) extgl_GetProcAddress("glGetFinalCombinerInputParameterivNV");
2031 #endif
2032 }
2033 
extgl_InitEXTPointParameters()2034 void extgl_InitEXTPointParameters()
2035 {
2036 #ifdef GL_EXT_point_parameters
2037     if (!extgl_Extensions.EXT_point_parameters)
2038         return;
2039     glPointParameterfEXT = (glPointParameterfEXTPROC) extgl_GetProcAddress("glPointParameterfEXT");
2040     glPointParameterfvEXT = (glPointParameterfvEXTPROC) extgl_GetProcAddress("glPointParameterfvEXT");
2041 #endif
2042 }
2043 
extgl_InitNVVertexArrayRange()2044 void extgl_InitNVVertexArrayRange()
2045 {
2046 #ifdef GL_NV_vertex_array_range
2047     if (!extgl_Extensions.NV_vertex_array_range)
2048         return;
2049     glFlushVertexArrayRangeNV = (glFlushVertexArrayRangeNVPROC) extgl_GetProcAddress("glFlushVertexArrayRangeNV");
2050     glVertexArrayRangeNV = (glVertexArrayRangeNVPROC) extgl_GetProcAddress("glVertexArrayRangeNV");
2051 #if defined(_WIN32) || defined(__CYGWIN__) || defined(__MINGW32__)
2052     wglAllocateMemoryNV = (wglAllocateMemoryNVPROC) extgl_GetProcAddress("wglAllocateMemoryNV");
2053     wglFreeMemoryNV = (wglFreeMemoryNVPROC) extgl_GetProcAddress("wglFreeMemoryNV");
2054 #else
2055     glXAllocateMemoryNV = (glXAllocateMemoryNVPROC) extgl_GetProcAddress("glXAllocateMemoryNV");
2056     glXFreeMemoryNV = (glXFreeMemoryNVPROC) extgl_GetProcAddress("glXFreeMemoryNV");
2057 #endif /* WIN32 */
2058 #endif
2059 }
extgl_InitEXTFogCoord()2060 void extgl_InitEXTFogCoord()
2061 {
2062 #ifdef GL_EXT_fog_coord
2063     if (!extgl_Extensions.EXT_fog_coord)
2064         return;
2065     glFogCoordfEXT = (glFogCoordfEXTPROC) extgl_GetProcAddress("glFogCoordfEXT");
2066     glFogCoordfvEXT = (glFogCoordfvEXTPROC) extgl_GetProcAddress("glFogCoordfvEXT");
2067     glFogCoorddEXT = (glFogCoorddEXTPROC) extgl_GetProcAddress("glFogCoorddEXT");
2068     glFogCoorddvEXT = (glFogCoorddvEXTPROC) extgl_GetProcAddress("glFogCoorddvEXT");
2069     glFogCoordPointerEXT = (glFogCoordPointerEXTPROC) extgl_GetProcAddress("glFogCoordPointerEXT");
2070 #endif
2071 }
2072 
extgl_InitEXTSecondaryColor()2073 void extgl_InitEXTSecondaryColor()
2074 {
2075 #ifdef GL_EXT_secondary_color
2076     if (!extgl_Extensions.EXT_secondary_color)
2077         return;
2078     glSecondaryColor3bEXT = (glSecondaryColor3bEXTPROC) extgl_GetProcAddress("glSecondaryColor3bEXT");
2079     glSecondaryColor3bvEXT = (glSecondaryColor3bvEXTPROC) extgl_GetProcAddress("glSecondaryColor3bvEXT");
2080     glSecondaryColor3dEXT = (glSecondaryColor3dEXTPROC) extgl_GetProcAddress("glSecondaryColor3dEXT");
2081     glSecondaryColor3dvEXT = (glSecondaryColor3dvEXTPROC) extgl_GetProcAddress("glSecondaryColor3dvEXT");
2082     glSecondaryColor3fEXT = (glSecondaryColor3fEXTPROC) extgl_GetProcAddress("glSecondaryColor3fEXT");
2083     glSecondaryColor3fvEXT = (glSecondaryColor3fvEXTPROC) extgl_GetProcAddress("glSecondaryColor3fvEXT");
2084     glSecondaryColor3iEXT = (glSecondaryColor3iEXTPROC) extgl_GetProcAddress("glSecondaryColor3iEXT");
2085     glSecondaryColor3ivEXT = (glSecondaryColor3ivEXTPROC) extgl_GetProcAddress("glSecondaryColor3ivEXT");
2086     glSecondaryColor3sEXT = (glSecondaryColor3sEXTPROC) extgl_GetProcAddress("glSecondaryColor3sEXT");
2087     glSecondaryColor3svEXT = (glSecondaryColor3svEXTPROC) extgl_GetProcAddress("glSecondaryColor3svEXT");
2088     glSecondaryColor3ubEXT = (glSecondaryColor3ubEXTPROC) extgl_GetProcAddress("glSecondaryColor3ubEXT");
2089     glSecondaryColor3ubvEXT = (glSecondaryColor3ubvEXTPROC) extgl_GetProcAddress("glSecondaryColor3ubvEXT");
2090     glSecondaryColor3uiEXT = (glSecondaryColor3uiEXTPROC) extgl_GetProcAddress("glSecondaryColor3uiEXT");
2091     glSecondaryColor3uivEXT = (glSecondaryColor3uivEXTPROC) extgl_GetProcAddress("glSecondaryColor3uivEXT");
2092     glSecondaryColor3usEXT = (glSecondaryColor3usEXTPROC) extgl_GetProcAddress("glSecondaryColor3usEXT");
2093     glSecondaryColor3usvEXT = (glSecondaryColor3usvEXTPROC) extgl_GetProcAddress("glSecondaryColor3usvEXT");
2094     glSecondaryColorPointerEXT = (glSecondaryColorPointerEXTPROC) extgl_GetProcAddress("glSecondaryColorPointerEXT");
2095 #endif
2096 }
2097 
extgl_InitEXTCompiledVertexArray()2098 void extgl_InitEXTCompiledVertexArray()
2099 {
2100 #ifdef GL_EXT_compiled_vertex_array
2101     if (!extgl_Extensions.EXT_compiled_vertex_array)
2102         return;
2103     glLockArraysEXT = (glLockArraysEXTPROC) extgl_GetProcAddress("glLockArraysEXT");
2104     glUnlockArraysEXT = (glUnlockArraysEXTPROC) extgl_GetProcAddress("glUnlockArraysEXT");
2105 #endif
2106 }
2107 
extgl_InitARBTransposeMatrix()2108 void extgl_InitARBTransposeMatrix()
2109 {
2110 #ifdef GL_ARB_transpose_matrix
2111     if (!extgl_Extensions.ARB_transpose_matrix)
2112         return;
2113     glLoadTransposeMatrixfARB = (glLoadTransposeMatrixfARBPROC) extgl_GetProcAddress("glLoadTransposeMatrixfARB");
2114     glLoadTransposeMatrixdARB = (glLoadTransposeMatrixdARBPROC) extgl_GetProcAddress("glLoadTransposeMatrixdARB");
2115     glMultTransposeMatrixfARB = (glMultTransposeMatrixfARBPROC) extgl_GetProcAddress("glMultTransposeMatrixfARB");
2116     glMultTransposeMatrixdARB = (glMultTransposeMatrixdARBPROC) extgl_GetProcAddress("glMultTransposeMatrixdARB");
2117 #endif
2118 }
2119 
extgl_InitEXTDrawRangeElements()2120 void extgl_InitEXTDrawRangeElements()
2121 {
2122 #ifdef GL_EXT_draw_range_elements
2123     if (!extgl_Extensions.EXT_draw_range_elements)
2124         return;
2125     glDrawRangeElementsEXT = (glDrawRangeElementsEXTPROC) extgl_GetProcAddress("glDrawRangeElementsEXT");
2126 #endif
2127 }
2128 
2129 
extgl_InitOpenGL1_2()2130 void extgl_InitOpenGL1_2()
2131 {
2132 #if defined(_WIN32) || defined(__CYGWIN__) || defined(__MINGW32__)
2133 #ifdef GL_VERSION_1_2
2134     if (!extgl_Extensions.OpenGL12)
2135         return;
2136     glTexImage3D = (glTexImage3DPROC) extgl_GetProcAddress("glTexImage3D");
2137     glTexSubImage3D = (glTexSubImage3DPROC) extgl_GetProcAddress("glTexSubImage3D");
2138     glCopyTexSubImage3D = (glCopyTexSubImage3DPROC) extgl_GetProcAddress("glCopyTexSubImage3D");
2139     glDrawRangeElements = (glDrawRangeElementsPROC) extgl_GetProcAddress("glDrawRangeElements");
2140 #endif /* GL_VERSION_1_2 */
2141 #endif /* WIN32 */
2142 }
2143 
extgl_InitARBImaging()2144 void extgl_InitARBImaging()
2145 {
2146 #if defined(_WIN32) || defined(__CYGWIN__) || defined(__MINGW32__)
2147 #ifdef GL_ARB_imaging
2148     if (!extgl_Extensions.ARB_imaging)
2149         return;
2150     glBlendColor = (glBlendColorPROC) extgl_GetProcAddress("glBlendColor");
2151     glBlendEquation = (glBlendEquationPROC) extgl_GetProcAddress("glBlendEquation");
2152     glColorTable = (glColorTablePROC) extgl_GetProcAddress("glColorTable");
2153     glColorTableParameterfv = (glColorTableParameterfvPROC) extgl_GetProcAddress("glColorTableParameterfv");
2154     glColorTableParameteriv = (glColorTableParameterivPROC) extgl_GetProcAddress("glColorTableParameteriv");
2155     glCopyColorTable = (glCopyColorTablePROC) extgl_GetProcAddress("glCopyColorTable");
2156     glGetColorTable = (glGetColorTablePROC) extgl_GetProcAddress("glGetColorTable");
2157     glGetColorTableParameterfv = (glGetColorTableParameterfvPROC) extgl_GetProcAddress("glGetColorTableParameterfv");
2158     glGetColorTableParameteriv = (glGetColorTableParameterivPROC) extgl_GetProcAddress("glGetColorTableParameteriv");
2159     glColorSubTable = (glColorSubTablePROC) extgl_GetProcAddress("glColorSubTable");
2160     glCopyColorSubTable = (glCopyColorSubTablePROC) extgl_GetProcAddress("glCopyColorSubTable");
2161     glConvolutionFilter1D = (glConvolutionFilter1DPROC) extgl_GetProcAddress("glConvolutionFilter1D");
2162     glConvolutionFilter2D = (glConvolutionFilter2DPROC) extgl_GetProcAddress("glConvolutionFilter2D");
2163     glConvolutionParameterf = (glConvolutionParameterfPROC) extgl_GetProcAddress("glConvolutionParameterf");
2164     glConvolutionParameterfv = (glConvolutionParameterfvPROC) extgl_GetProcAddress("glConvolutionParameterfv");
2165     glConvolutionParameteri = (glConvolutionParameteriPROC) extgl_GetProcAddress("glConvolutionParameteri");
2166     glConvolutionParameteriv = (glConvolutionParameterivPROC) extgl_GetProcAddress("glConvolutionParameteriv");
2167     glCopyConvolutionFilter1D = (glCopyConvolutionFilter1DPROC) extgl_GetProcAddress("glCopyConvolutionFilter1D");
2168     glCopyConvolutionFilter2D = (glCopyConvolutionFilter2DPROC) extgl_GetProcAddress("glCopyConvolutionFilter2D");
2169     glGetConvolutionFilter = (glGetConvolutionFilterPROC) extgl_GetProcAddress("glGetConvolutionFilter");
2170     glGetConvolutionParameterfv = (glGetConvolutionParameterfvPROC) extgl_GetProcAddress("glGetConvolutionParameterfv");
2171     glGetConvolutionParameteriv = (glGetConvolutionParameterivPROC) extgl_GetProcAddress("glGetConvolutionParameteriv");
2172     glGetSeparableFilter = (glGetSeparableFilterPROC) extgl_GetProcAddress("glGetSeparableFilter");
2173     glSeparableFilter2D = (glSeparableFilter2DPROC) extgl_GetProcAddress("glSeparableFilter2D");
2174     glGetHistogram = (glGetHistogramPROC) extgl_GetProcAddress("glGetHistogram");
2175     glGetHistogramParameterfv = (glGetHistogramParameterfvPROC) extgl_GetProcAddress("glGetHistogramParameterfv");
2176     glGetHistogramParameteriv = (glGetHistogramParameterivPROC) extgl_GetProcAddress("glGetHistogramParameteriv");
2177     glGetMinmax = (glGetMinmaxPROC) extgl_GetProcAddress("glGetMinmax");
2178     glGetMinmaxParameterfv = (glGetMinmaxParameterfvPROC) extgl_GetProcAddress("glGetMinmaxParameterfv");
2179     glGetMinmaxParameteriv = (glGetMinmaxParameterivPROC) extgl_GetProcAddress("glGetMinmaxParameteriv");
2180     glHistogram = (glHistogramPROC) extgl_GetProcAddress("glHistogram");
2181     glMinmax = (glMinmaxPROC) extgl_GetProcAddress("glMinmax");
2182     glResetHistogram = (glResetHistogramPROC) extgl_GetProcAddress("glResetHistogram");
2183     glResetMinmax = (glResetMinmaxPROC) extgl_GetProcAddress("glResetMinmax");
2184 #endif /* GL_ARB_imaging */
2185 #endif /* WIN32 */
2186 }
2187 
extgl_InitOpenGL1_3()2188 void extgl_InitOpenGL1_3()
2189 {
2190 #if defined(_WIN32) || defined(__CYGWIN__) || defined(__MINGW32__)
2191 #ifdef GL_VERSION_1_3
2192     if (!extgl_Extensions.OpenGL13)
2193         return;
2194     glActiveTexture = (glActiveTexturePROC) extgl_GetProcAddress("glActiveTexture");
2195     glClientActiveTexture = (glClientActiveTexturePROC) extgl_GetProcAddress("glClientActiveTexture");
2196 
2197     glMultiTexCoord1d = (glMultiTexCoord1dPROC) extgl_GetProcAddress("glMultiTexCoord1d");
2198     glMultiTexCoord1dv = (glMultiTexCoord1dvPROC) extgl_GetProcAddress("glMultiTexCoord1dv");
2199     glMultiTexCoord1f = (glMultiTexCoord1fPROC) extgl_GetProcAddress("glMultiTexCoord1f");
2200     glMultiTexCoord1fv = (glMultiTexCoord1fvPROC) extgl_GetProcAddress("glMultiTexCoord1fv");
2201     glMultiTexCoord1i = (glMultiTexCoord1iPROC) extgl_GetProcAddress("glMultiTexCoord1i");
2202     glMultiTexCoord1iv = (glMultiTexCoord1ivPROC) extgl_GetProcAddress("glMultiTexCoord1iv");
2203     glMultiTexCoord1s = (glMultiTexCoord1sPROC) extgl_GetProcAddress("glMultiTexCoord1s");
2204     glMultiTexCoord1sv = (glMultiTexCoord1svPROC) extgl_GetProcAddress("glMultiTexCoord1sv");
2205 
2206     glMultiTexCoord2d = (glMultiTexCoord2dPROC) extgl_GetProcAddress("glMultiTexCoord2d");
2207     glMultiTexCoord2dv = (glMultiTexCoord2dvPROC) extgl_GetProcAddress("glMultiTexCoord2dv");
2208     glMultiTexCoord2f = (glMultiTexCoord2fPROC) extgl_GetProcAddress("glMultiTexCoord2f");
2209     glMultiTexCoord2fv = (glMultiTexCoord2fvPROC) extgl_GetProcAddress("glMultiTexCoord2fv");
2210     glMultiTexCoord2i = (glMultiTexCoord2iPROC) extgl_GetProcAddress("glMultiTexCoord2i");
2211     glMultiTexCoord2iv = (glMultiTexCoord2ivPROC) extgl_GetProcAddress("glMultiTexCoord2iv");
2212     glMultiTexCoord2s = (glMultiTexCoord2sPROC) extgl_GetProcAddress("glMultiTexCoord2s");
2213     glMultiTexCoord2sv = (glMultiTexCoord2svPROC) extgl_GetProcAddress("glMultiTexCoord2sv");
2214 
2215     glMultiTexCoord3d = (glMultiTexCoord3dPROC) extgl_GetProcAddress("glMultiTexCoord3d");
2216     glMultiTexCoord3dv = (glMultiTexCoord3dvPROC) extgl_GetProcAddress("glMultiTexCoord3dv");
2217     glMultiTexCoord3f = (glMultiTexCoord3fPROC) extgl_GetProcAddress("glMultiTexCoord3f");
2218     glMultiTexCoord3fv = (glMultiTexCoord3fvPROC) extgl_GetProcAddress("glMultiTexCoord3fv");
2219     glMultiTexCoord3i = (glMultiTexCoord3iPROC) extgl_GetProcAddress("glMultiTexCoord3i");
2220     glMultiTexCoord3iv = (glMultiTexCoord3ivPROC) extgl_GetProcAddress("glMultiTexCoord3iv");
2221     glMultiTexCoord3s = (glMultiTexCoord3sPROC) extgl_GetProcAddress("glMultiTexCoord3s");
2222     glMultiTexCoord3sv = (glMultiTexCoord3svPROC) extgl_GetProcAddress("glMultiTexCoord3sv");
2223 
2224     glMultiTexCoord4d = (glMultiTexCoord4dPROC) extgl_GetProcAddress("glMultiTexCoord4d");
2225     glMultiTexCoord4dv = (glMultiTexCoord4dvPROC) extgl_GetProcAddress("glMultiTexCoord4dv");
2226     glMultiTexCoord4f = (glMultiTexCoord4fPROC) extgl_GetProcAddress("glMultiTexCoord4f");
2227     glMultiTexCoord4fv = (glMultiTexCoord4fvPROC) extgl_GetProcAddress("glMultiTexCoord4fv");
2228     glMultiTexCoord4i = (glMultiTexCoord4iPROC) extgl_GetProcAddress("glMultiTexCoord4i");
2229     glMultiTexCoord4iv = (glMultiTexCoord4ivPROC) extgl_GetProcAddress("glMultiTexCoord4iv");
2230     glMultiTexCoord4s = (glMultiTexCoord4sPROC) extgl_GetProcAddress("glMultiTexCoord4s");
2231     glMultiTexCoord4sv = (glMultiTexCoord4svPROC) extgl_GetProcAddress("glMultiTexCoord4sv");
2232 
2233     glLoadTransposeMatrixf = (glLoadTransposeMatrixfPROC) extgl_GetProcAddress("glLoadTransposeMatrixf");
2234     glLoadTransposeMatrixd = (glLoadTransposeMatrixdPROC) extgl_GetProcAddress("glLoadTransposeMatrixd");
2235     glMultTransposeMatrixf = (glMultTransposeMatrixfPROC) extgl_GetProcAddress("glMultTransposeMatrixf");
2236     glMultTransposeMatrixd = (glMultTransposeMatrixdPROC) extgl_GetProcAddress("glMultTransposeMatrixd");
2237     glCompressedTexImage3D = (glCompressedTexImage3DPROC) extgl_GetProcAddress("glCompressedTexImage3D");
2238     glCompressedTexImage2D = (glCompressedTexImage2DPROC) extgl_GetProcAddress("glCompressedTexImage2D");
2239     glCompressedTexImage1D = (glCompressedTexImage1DPROC) extgl_GetProcAddress("glCompressedTexImage1D");
2240     glCompressedTexSubImage3D = (glCompressedTexSubImage3DPROC) extgl_GetProcAddress("glCompressedTexSubImage3D");
2241     glCompressedTexSubImage2D = (glCompressedTexSubImage2DPROC) extgl_GetProcAddress("glCompressedTexSubImage2D");
2242     glCompressedTexSubImage1D = (glCompressedTexSubImage1DPROC) extgl_GetProcAddress("glCompressedTexSubImage1D");
2243     glGetCompressedTexImage = (glGetCompressedTexImagePROC) extgl_GetProcAddress("glGetCompressedTexImage");
2244 
2245     glSampleCoverage = (glSampleCoveragePROC) extgl_GetProcAddress("glSampleCoverage");
2246 #endif /* GL_VERSION_1_3 */
2247 #endif /* WIN32 */
2248 }
2249 
extgl_InitOpenGL1_4()2250 void extgl_InitOpenGL1_4()
2251 {
2252 #if defined(_WIN32) || defined(__CYGWIN__) || defined(__MINGW32__)
2253 #ifdef GL_VERSION_1_4
2254     if (!extgl_Extensions.OpenGL14)
2255         return;
2256     glBlendColor = (glBlendColorPROC) extgl_GetProcAddress("glBlendColor");
2257     glBlendEquation = (glBlendEquationPROC) extgl_GetProcAddress("glBlendEquation");
2258     glFogCoordf = (glFogCoordfPROC) extgl_GetProcAddress("glFogCoordf");
2259     glFogCoordfv = (glFogCoordfvPROC) extgl_GetProcAddress("glFogCoordfv");
2260     glFogCoordd = (glFogCoorddPROC) extgl_GetProcAddress("glFogCoordd");
2261     glFogCoorddv = (glFogCoorddvPROC) extgl_GetProcAddress("glFogCoorddv");
2262     glFogCoordPointer = (glFogCoordPointerPROC) extgl_GetProcAddress("glFogCoordPointer");
2263     glMultiDrawArrays = (glMultiDrawArraysPROC) extgl_GetProcAddress("glMultiDrawArrays");
2264     glMultiDrawElements = (glMultiDrawElementsPROC) extgl_GetProcAddress("glMultiDrawElements");
2265     glPointParameterf = (glPointParameterfPROC) extgl_GetProcAddress("glPointParameterf");
2266     glPointParameterfv = (glPointParameterfvPROC) extgl_GetProcAddress("glPointParameterfv");
2267     glSecondaryColor3b = (glSecondaryColor3bPROC) extgl_GetProcAddress("glSecondaryColor3b");
2268     glSecondaryColor3bv = (glSecondaryColor3bvPROC) extgl_GetProcAddress("glSecondaryColor3bv");
2269     glSecondaryColor3d = (glSecondaryColor3dPROC) extgl_GetProcAddress("glSecondaryColor3d");
2270     glSecondaryColor3dv = (glSecondaryColor3dvPROC) extgl_GetProcAddress("glSecondaryColor3dv");
2271     glSecondaryColor3f = (glSecondaryColor3fPROC) extgl_GetProcAddress("glSecondaryColor3f");
2272     glSecondaryColor3fv = (glSecondaryColor3fvPROC) extgl_GetProcAddress("glSecondaryColor3fv");
2273     glSecondaryColor3i = (glSecondaryColor3iPROC) extgl_GetProcAddress("glSecondaryColor3i");
2274     glSecondaryColor3iv = (glSecondaryColor3ivPROC) extgl_GetProcAddress("glSecondaryColor3iv");
2275     glSecondaryColor3s = (glSecondaryColor3sPROC) extgl_GetProcAddress("glSecondaryColor3s");
2276     glSecondaryColor3sv = (glSecondaryColor3svPROC) extgl_GetProcAddress("glSecondaryColor3sv");
2277     glSecondaryColor3ub = (glSecondaryColor3ubPROC) extgl_GetProcAddress("glSecondaryColor3ub");
2278     glSecondaryColor3ubv = (glSecondaryColor3ubvPROC) extgl_GetProcAddress("glSecondaryColor3ubv");
2279     glSecondaryColor3ui = (glSecondaryColor3uiPROC) extgl_GetProcAddress("glSecondaryColor3ui");
2280     glSecondaryColor3uiv = (glSecondaryColor3uivPROC) extgl_GetProcAddress("glSecondaryColor3uiv");
2281     glSecondaryColor3us = (glSecondaryColor3usPROC) extgl_GetProcAddress("glSecondaryColor3us");
2282     glSecondaryColor3usv = (glSecondaryColor3usvPROC) extgl_GetProcAddress("glSecondaryColor3usv");
2283     glSecondaryColorPointer = (glSecondaryColorPointerPROC) extgl_GetProcAddress("glSecondaryColorPointer");
2284     glBlendFuncSeparate = (glBlendFuncSeparatePROC) extgl_GetProcAddress("glBlendFuncSeparate");
2285     glWindowPos2d = (glWindowPos2dPROC) extgl_GetProcAddress("glWindowPos2d");
2286     glWindowPos2f = (glWindowPos2fPROC) extgl_GetProcAddress("glWindowPos2f");
2287     glWindowPos2i = (glWindowPos2iPROC) extgl_GetProcAddress("glWindowPos2i");
2288     glWindowPos2s = (glWindowPos2sPROC) extgl_GetProcAddress("glWindowPos2s");
2289     glWindowPos2dv = (glWindowPos2dvPROC) extgl_GetProcAddress("glWindowPos2dv");
2290     glWindowPos2fv = (glWindowPos2fvPROC) extgl_GetProcAddress("glWindowPos2fv");
2291     glWindowPos2iv = (glWindowPos2ivPROC) extgl_GetProcAddress("glWindowPos2iv");
2292     glWindowPos2sv = (glWindowPos2svPROC) extgl_GetProcAddress("glWindowPos2sv");
2293     glWindowPos3d = (glWindowPos3dPROC) extgl_GetProcAddress("glWindowPos3d");
2294     glWindowPos3f = (glWindowPos3fPROC) extgl_GetProcAddress("glWindowPos3f");
2295     glWindowPos3i = (glWindowPos3iPROC) extgl_GetProcAddress("glWindowPos3i");
2296     glWindowPos3s = (glWindowPos3sPROC) extgl_GetProcAddress("glWindowPos3s");
2297     glWindowPos3dv = (glWindowPos3dvPROC) extgl_GetProcAddress("glWindowPos3dv");
2298     glWindowPos3fv = (glWindowPos3fvPROC) extgl_GetProcAddress("glWindowPos3fv");
2299     glWindowPos3iv = (glWindowPos3ivPROC) extgl_GetProcAddress("glWindowPos3iv");
2300     glWindowPos3sv = (glWindowPos3svPROC) extgl_GetProcAddress("glWindowPos3sv");
2301 #endif /* GL_VERSION_1_4 */
2302 #endif /* WIN32 */
2303 }
2304 
extgl_InitSupportedExtensions()2305 void extgl_InitSupportedExtensions()
2306 {
2307     char *s = (char*) glGetString(GL_VERSION);
2308     extgl_ExtString[0] = 0;
2309     if (!s)
2310         return;
2311     s = strstr(s, "1.");
2312     if (s == NULL)
2313     {
2314         extgl_Extensions.OpenGL12 = 0;
2315         extgl_Extensions.OpenGL13 = 0;
2316         extgl_Extensions.OpenGL14 = 0;
2317     }
2318     else
2319     {
2320         extgl_Extensions.OpenGL12 = 0;
2321         extgl_Extensions.OpenGL13 = 0;
2322         extgl_Extensions.OpenGL14 = 0;
2323 
2324         if( s[2] >= '4' )
2325         {
2326             extgl_Extensions.OpenGL12 = 1;
2327             extgl_Extensions.OpenGL13 = 1;
2328             extgl_Extensions.OpenGL14 = 1;
2329         }
2330         if( s[2] == '3' )
2331         {
2332             extgl_Extensions.OpenGL12 = 1;
2333             extgl_Extensions.OpenGL13 = 1;
2334         }
2335         if( s[2] == '2' )
2336         {
2337             extgl_Extensions.OpenGL12 = 1;
2338         }
2339     }
2340     extgl_Extensions.ARB_depth_texture = QueryExtension("GL_ARB_depth_texture");
2341     extgl_Extensions.ARB_fragment_program = QueryExtension("GL_ARB_fragment_program");
2342     extgl_Extensions.ARB_imaging = QueryExtension("GL_ARB_imaging");
2343     extgl_Extensions.ARB_matrix_palette = QueryExtension("GL_ARB_matrix_palette");
2344     extgl_Extensions.ARB_multisample = QueryExtension("GL_ARB_multisample");
2345     extgl_Extensions.ARB_multitexture = QueryExtension("GL_ARB_multitexture");
2346     extgl_Extensions.ARB_point_parameters = QueryExtension("GL_ARB_point_parameters");
2347     extgl_Extensions.ARB_shadow = QueryExtension("GL_ARB_shadow");
2348     extgl_Extensions.ARB_shadow_ambient = QueryExtension("GL_ARB_shadow_ambient");
2349     extgl_Extensions.ARB_texture_border_clamp = QueryExtension("GL_ARB_texture_border_clamp");
2350     extgl_Extensions.ARB_texture_compression = QueryExtension("GL_ARB_texture_compression");
2351     extgl_Extensions.ARB_texture_cube_map = QueryExtension("GL_ARB_texture_cube_map");
2352     extgl_Extensions.ARB_texture_env_add = QueryExtension("GL_ARB_texture_env_add");
2353     extgl_Extensions.ARB_texture_env_combine = QueryExtension("GL_ARB_texture_env_combine");
2354     extgl_Extensions.ARB_texture_env_crossbar = QueryExtension("GL_ARB_texture_env_crossbar");
2355     extgl_Extensions.ARB_texture_env_dot3 = QueryExtension("GL_ARB_texture_env_dot3");
2356     extgl_Extensions.ARB_texture_mirrored_repeat = QueryExtension("GL_ARB_texture_mirrored_repeat");
2357     extgl_Extensions.ARB_transpose_matrix = QueryExtension("GL_ARB_transpose_matrix");
2358     extgl_Extensions.ARB_vertex_blend = QueryExtension("GL_ARB_vertex_blend");
2359     extgl_Extensions.ARB_vertex_buffer_object = QueryExtension("GL_ARB_vertex_buffer_object");
2360     extgl_Extensions.ARB_vertex_program = QueryExtension("GL_ARB_vertex_program");
2361     extgl_Extensions.ARB_window_pos = QueryExtension("GL_ARB_window_pos");
2362     extgl_Extensions.EXT_abgr = QueryExtension("GL_EXT_abgr");
2363     extgl_Extensions.EXT_bgra = QueryExtension("GL_EXT_bgra");
2364     extgl_Extensions.EXT_blend_color = QueryExtension("GL_EXT_blend_color");
2365     extgl_Extensions.EXT_blend_func_separate = QueryExtension("GL_EXT_blend_func_separate");
2366     extgl_Extensions.EXT_blend_minmax = QueryExtension("GL_EXT_blend_minmax");
2367     extgl_Extensions.EXT_blend_subtract = QueryExtension("GL_EXT_blend_subtract");
2368     extgl_Extensions.EXT_compiled_vertex_array = QueryExtension("GL_EXT_compiled_vertex_array");
2369     extgl_Extensions.EXT_cull_vertex = QueryExtension("GL_EXT_cull_vertex");
2370     extgl_Extensions.EXT_depth_bounds_test = QueryExtension("EXT_depth_bounds_test");
2371     extgl_Extensions.EXT_draw_range_elements = QueryExtension("GL_EXT_draw_range_elements");
2372     extgl_Extensions.EXT_fog_coord = QueryExtension("GL_EXT_fog_coord");
2373     extgl_Extensions.EXT_multi_draw_arrays = QueryExtension("GL_EXT_multi_draw_arrays");
2374     extgl_Extensions.EXT_point_parameters = QueryExtension("GL_EXT_point_parameters");
2375     extgl_Extensions.EXT_secondary_color = QueryExtension("GL_EXT_secondary_color");
2376     extgl_Extensions.EXT_separate_specular_color = QueryExtension("GL_EXT_separate_specular_color");
2377     extgl_Extensions.EXT_shadow_funcs = QueryExtension("GL_EXT_shadow_funcs");
2378     extgl_Extensions.EXT_stencil_two_side = QueryExtension("GL_EXT_stencil_two_side");
2379     extgl_Extensions.EXT_stencil_wrap = QueryExtension("GL_EXT_stencil_wrap");
2380     extgl_Extensions.EXT_texture_compression_s3tc = QueryExtension("GL_EXT_texture_compression_s3tc");
2381     extgl_Extensions.EXT_texture_env_combine = QueryExtension("GL_EXT_texture_env_combine");
2382     extgl_Extensions.EXT_texture_filter_anisotropic = QueryExtension("GL_EXT_texture_filter_anisotropic");
2383     extgl_Extensions.EXT_texture_lod_bias = QueryExtension("GL_EXT_texture_lod_bias");
2384     extgl_Extensions.EXT_texture_rectangle = QueryExtension("GL_EXT_texture_rectangle");
2385     extgl_Extensions.EXT_vertex_shader = QueryExtension("GL_EXT_vertex_shader");
2386     extgl_Extensions.EXT_vertex_weighting = QueryExtension("GL_EXT_vertex_weighting");
2387     extgl_Extensions.ATI_draw_buffers = QueryExtension("GL_ATI_draw_buffers");
2388     extgl_Extensions.ATI_element_array = QueryExtension("GL_ATI_element_array");
2389     extgl_Extensions.ATI_envmap_bumpmap = QueryExtension("GL_ATI_envmap_bumpmap");
2390     extgl_Extensions.ATI_fragment_shader = QueryExtension("GL_ATI_fragment_shader");
2391     extgl_Extensions.ATI_map_object_buffer = QueryExtension("GL_ATI_map_object_buffer");
2392     extgl_Extensions.ATI_pn_triangles = QueryExtension("GL_ATI_pn_triangles");
2393     extgl_Extensions.ATI_point_cull_mode = QueryExtension("GL_ATI_point_cull_mode");
2394     extgl_Extensions.ATI_separate_stencil = QueryExtension("GL_ATI_separate_stencil");
2395     extgl_Extensions.ATI_text_fragment_shader = QueryExtension("GL_ATI_text_fragment_shader");
2396     extgl_Extensions.ATI_texture_env_combine3 = QueryExtension("GL_ATI_texture_env_combine3");
2397     extgl_Extensions.ATI_texture_float = QueryExtension("GL_ATI_texture_float");
2398     extgl_Extensions.ATI_texture_mirror_once = QueryExtension("GL_ATI_texture_mirror_once");
2399     extgl_Extensions.ATI_vertex_array_object = QueryExtension("GL_ATI_vertex_array_object");
2400     extgl_Extensions.ATI_vertex_attrib_array_object = QueryExtension("GL_ATI_vertex_attrib_array_object");
2401     extgl_Extensions.ATI_vertex_streams = QueryExtension("GL_ATI_vertex_streams");
2402     extgl_Extensions.ATIX_point_sprites = QueryExtension("GL_ATIX_point_sprites");
2403     extgl_Extensions.ATIX_texture_env_route = QueryExtension("GL_ATIX_texture_env_route");
2404     extgl_Extensions.HP_occlusion_test = QueryExtension("GL_HP_occlusion_test");
2405     extgl_Extensions.NV_blend_square = QueryExtension("GL_NV_blend_square");
2406     extgl_Extensions.NV_copy_depth_to_color = QueryExtension("GL_NV_copy_depth_to_color");
2407     extgl_Extensions.NV_depth_clamp = QueryExtension("GL_NV_depth_clamp");
2408     extgl_Extensions.NV_element_array = QueryExtension("GL_NV_element_array");
2409     extgl_Extensions.NV_evaluators = QueryExtension("GL_NV_evaluators");
2410     extgl_Extensions.NV_fence = QueryExtension("GL_NV_fence");
2411     extgl_Extensions.NV_float_buffer = QueryExtension("GL_NV_float_buffer");
2412     extgl_Extensions.NV_fog_distance = QueryExtension("GL_NV_fog_distance");
2413     extgl_Extensions.NV_fragment_program = QueryExtension("GL_NV_fragment_program");
2414     extgl_Extensions.NV_half_float = QueryExtension("GL_NV_half_float");
2415     extgl_Extensions.NV_light_max_exponent = QueryExtension("GL_NV_light_max_exponent");
2416     extgl_Extensions.NV_occlusion_query = QueryExtension("GL_NV_occlusion_query");
2417     extgl_Extensions.NV_packed_depth_stencil = QueryExtension("GL_NV_packed_depth_stencil");
2418     extgl_Extensions.NV_pixel_data_range = QueryExtension("GL_NV_pixel_data_range");
2419     extgl_Extensions.NV_point_sprite = QueryExtension("GL_NV_point_sprite");
2420     extgl_Extensions.NV_primitive_restart = QueryExtension("GL_NV_primitive_restart");
2421     extgl_Extensions.NV_register_combiners = QueryExtension("GL_NV_register_combiners");
2422     extgl_Extensions.NV_register_combiners2 = QueryExtension("GL_NV_register_combiners2");
2423     extgl_Extensions.NV_texgen_reflection = QueryExtension("GL_NV_texgen_reflection");
2424     extgl_Extensions.NV_texture_env_combine4 = QueryExtension("GL_NV_texture_env_combine4");
2425     extgl_Extensions.NV_texture_expand_normal = QueryExtension("GL_NV_texture_expand_normal");
2426     extgl_Extensions.NV_texture_rectangle = QueryExtension("GL_NV_texture_rectangle");
2427     extgl_Extensions.NV_texture_shader = QueryExtension("GL_NV_texture_shader");
2428     extgl_Extensions.NV_texture_shader2 = QueryExtension("GL_NV_texture_shader2");
2429     extgl_Extensions.NV_texture_shader3 = QueryExtension("GL_NV_texture_shader3");
2430     extgl_Extensions.NV_vertex_array_range = QueryExtension("GL_NV_vertex_array_range");
2431     extgl_Extensions.NV_vertex_array_range2 = QueryExtension("GL_NV_vertex_array_range2");
2432     extgl_Extensions.NV_vertex_program = QueryExtension("GL_NV_vertex_program");
2433     extgl_Extensions.NV_vertex_program1_1 = QueryExtension("GL_NV_vertex_program1_1");
2434     extgl_Extensions.NV_vertex_program2 = QueryExtension("GL_NV_vertex_program2");
2435     extgl_Extensions.SGIS_generate_mipmap = QueryExtension("GL_SGIS_generate_mipmap");
2436     extgl_Extensions.SGIS_texture_lod = QueryExtension("GL_SGIS_texture_lod");
2437     extgl_Extensions.SGIX_depth_texture = QueryExtension("GL_SGIX_depth_texture");
2438     extgl_Extensions.SGIX_shadow = QueryExtension("GL_SGIX_shadow");
2439 }
2440 
2441 
2442 /* extgl_Init the extensions and load all the functions */
extgl_Initialize()2443 int extgl_Initialize()
2444 {
2445     extgl_error = 0;
2446     extgl_InitSupportedExtensions();
2447 
2448     /* first load the etensions */
2449     extgl_InitARBFragmentProgram();
2450     extgl_InitARBImaging();
2451     extgl_InitARBMatrixPalette();
2452     extgl_InitARBMultisample();
2453     extgl_InitARBMultitexture();
2454     extgl_InitARBPointParameters();
2455     extgl_InitARBTextureCompression();
2456     extgl_InitARBTransposeMatrix();
2457     extgl_InitARBVertexBlend();
2458     extgl_InitARBVertexBufferObject();
2459     extgl_InitARBVertexProgram();
2460     extgl_InitARBWindowPos();
2461     extgl_InitEXTBlendColor();
2462     extgl_InitEXTBlendFuncSeparate();
2463     extgl_InitEXTBlendMinmax();
2464     extgl_InitEXTCompiledVertexArray();
2465     extgl_InitEXTCullVertex();
2466     extgl_InitEXTDepthBoundsTest();
2467     extgl_InitEXTDrawRangeElements();
2468     extgl_InitEXTFogCoord();
2469     extgl_InitEXTMultiDrawArrays();
2470     extgl_InitEXTPointParameters();
2471     extgl_InitEXTSecondaryColor();
2472     extgl_InitEXTStencilTwoSide();
2473     extgl_InitEXTVertexShader();
2474     extgl_InitEXTVertexWeighting();
2475     extgl_InitATIDrawBuffers();
2476     extgl_InitATIElementArray();
2477     extgl_InitATIEnvmapBumpmap();
2478     extgl_InitATIFragmentShader();
2479     extgl_InitATIMapObjectBuffer();
2480     extgl_InitATIPNTriangles();
2481     extgl_InitATISeparateStencil();
2482     extgl_InitATIVertexArrayObject();
2483     extgl_InitATIVertexAttribArrayObject();
2484     extgl_InitATIVertexStreams();
2485     extgl_InitNVElementArray();
2486     extgl_InitNVFence();
2487     extgl_InitNVFragmentProgram();
2488     extgl_InitNVOcclusionQuery();
2489     extgl_InitNVPixelDataRange();
2490     extgl_InitNVPointSprite();
2491     extgl_InitNVPrimitiveRestart();
2492     extgl_InitNVRegisterCombiners();
2493     extgl_InitNVRegisterCombiners2();
2494     extgl_InitNVVertexArrayRange();
2495     extgl_InitNVVertexProgram();
2496     extgl_InitNVHalfFloat();
2497 
2498    /* now load core opengl */
2499     extgl_InitOpenGL1_2();
2500     extgl_InitOpenGL1_3();
2501     extgl_InitOpenGL1_4();
2502 
2503     /* load WGL extensions */
2504 #if defined(_WIN32) || defined(__CYGWIN__) || defined(__MINGW32__)
2505     extgl_InitializeWGL();
2506 #endif
2507 
2508     SupportedExtensions = extgl_Extensions;
2509     return extgl_error;
2510 }
2511 
2512 /* deprecated function please do not use it, use extgl_Initialize() instead */
glInitialize()2513 int glInitialize()
2514 {
2515     return extgl_Initialize();
2516 }
2517 
extgl_ExtensionSupported(const char * name)2518 int extgl_ExtensionSupported(const char *name)
2519 {
2520     char tmp[100];
2521     sprintf(tmp, "%s ", name);
2522     if (strstr(extgl_ExtString, tmp))
2523         return 1;
2524     return 0;
2525 }
2526 
2527 /* turn on the warning for the borland compiler*/
2528 #ifdef __BORLANDC__
2529 #pragma warn .8064
2530 #pragma warn .8065
2531 #endif /* __BORLANDC__	*/
2532 
2533