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