1 /* Copyright (c) 2001-2002 Lev Povalahev
5 http://www.uni-karlsruhe.de/~uli2/
9 /* following extensions are supported:
16 GL_ARB_point_parameters
19 GL_ARB_texture_compression
20 GL_ARB_texture_env_add
21 GL_ARB_texture_env_dot3
22 GL_ARB_texture_env_combine
23 GL_ARB_texture_env_crossbar
24 GL_ARB_texture_border_clamp
25 GL_ARB_texture_cube_map
26 GL_ARB_texture_mirrored_repeat
27 GL_ARB_transpose_matrix
30 GL_EXT_compiled_vertex_array
32 GL_EXT_multi_draw_arrays
33 GL_EXT_point_parameters
34 GL_EXT_secondary_color
36 GL_EXT_texture_filter_anisotropic
37 GL_EXT_texture_lod_bias
39 GL_EXT_vertex_weighting
42 GL_ATI_fragment_shader
44 GL_ATI_texture_mirror_once
45 GL_ATI_vertex_array_object;
48 GL_ATIX_texture_env_route
51 GL_NV_copy_depth_to_color
56 GL_NV_light_max_exponent
58 GL_NV_packed_depth_stencil
60 GL_NV_register_combiners
61 GL_NV_register_combiners2
62 GL_NV_texgen_reflection
63 GL_NV_texture_env_combine4
64 GL_NV_texture_rectangle
68 GL_NV_vertex_array_range
69 GL_NV_vertex_array_range2
71 GL_NV_vertex_program1_1
72 GL_SGIS_generate_mipmap
76 WGL_ARB_extensions_string
79 WGL_ARB_render_texture
80 WGL_EXT_extensions_string
88 /* function variables */
90 /*-------------------------------------*/
92 /*-------------------------------------*/
96 /* WGL_EXT_etxension_string */
98 wglGetExtensionsStringEXTPROC wglGetExtensionsStringEXT = NULL;
100 /* WGL_ARB_buffer_region */
102 wglCreateBufferRegionARBPROC wglCreateBufferRegionARB = NULL;
103 wglDeleteBufferRegionARBPROC wglDeleteBufferRegionARB = NULL;
104 wglSaveBufferRegionARBPROC wglSaveBufferRegionARB = NULL;
105 wglRestoreBufferRegionARBPROC wglRestoreBufferRegionARB = NULL;
107 /* WGL_ARB_extension_string */
109 wglGetExtensionsStringARBPROC wglGetExtensionsStringARB = NULL;
111 /* WGL_ARB_pbuffer */
113 wglCreatePbufferARBPROC wglCreatePbufferARB = NULL;
114 wglGetPbufferDCARBPROC wglGetPbufferDCARB = NULL;
115 wglReleasePbufferDCARBPROC wglReleasePbufferDCARB = NULL;
116 wglDestroyPbufferARBPROC wglDestroyPbufferARB = NULL;
117 wglQueryPbufferARBPROC wglQueryPbufferARB = NULL;
119 /* WGL_ARB_pixel_format */
121 wglGetPixelFormatAttribivARBPROC wglGetPixelFormatAttribivARB = NULL;
122 wglGetPixelFormatAttribfvARBPROC wglGetPixelFormatAttribfvARB = NULL;
123 wglChoosePixelFormatARBPROC wglChoosePixelFormatARB = NULL;
125 /* WGL_ARB_render_texture */
127 wglBindTexImageARBPROC wglBindTexImageARB = NULL;
128 wglReleaseTexImageARBPROC wglReleaseTexImageARB = NULL;
129 wglSetPbufferAttribARBPROC wglSetPbufferAttribARB = NULL;
131 /* WGL_EXT_swap_control */
133 wglSwapIntervalEXTPROC wglSwapIntervalEXT = NULL;
134 wglGetSwapIntervalEXTPROC wglGetSwapIntervalEXT = NULL;
136 /* WGL_ARB_make_current_read */
138 wglMakeContextCurrentARBPROC wglMakeContextCurrentARB = NULL;
139 wglGetCurrentReadDCARBPROC wglGetCurrentReadDCARB = NULL;
143 wglAllocateMemoryNVPROC wglAllocateMemoryNV = NULL;
144 wglFreeMemoryNVPROC wglFreeMemoryNV = NULL;
150 /*-------------------------------------*/
151 /*---WGL STUFF END---------------------*/
152 /*-------------------------------------*/
154 glBlendColorPROC glBlendColor = NULL;
155 glBlendEquationPROC glBlendEquation = NULL;
156 glDrawRangeElementsPROC glDrawRangeElements = NULL;
157 glColorTablePROC glColorTable = NULL;
158 glColorTableParameterfvPROC glColorTableParameterfv = NULL;
159 glColorTableParameterivPROC glColorTableParameteriv = NULL;
160 glCopyColorTablePROC glCopyColorTable = NULL;
161 glGetColorTablePROC glGetColorTable = NULL;
162 glGetColorTableParameterfvPROC glGetColorTableParameterfv = NULL;
163 glGetColorTableParameterivPROC glGetColorTableParameteriv = NULL;
164 glColorSubTablePROC glColorSubTable = NULL;
165 glCopyColorSubTablePROC glCopyColorSubTable = NULL;
166 glConvolutionFilter1DPROC glConvolutionFilter1D = NULL;
167 glConvolutionFilter2DPROC glConvolutionFilter2D = NULL;
168 glConvolutionParameterfPROC glConvolutionParameterf = NULL;
169 glConvolutionParameterfvPROC glConvolutionParameterfv = NULL;
170 glConvolutionParameteriPROC glConvolutionParameteri = NULL;
171 glConvolutionParameterivPROC glConvolutionParameteriv = NULL;
172 glCopyConvolutionFilter1DPROC glCopyConvolutionFilter1D = NULL;
173 glCopyConvolutionFilter2DPROC glCopyConvolutionFilter2D = NULL;
174 glGetConvolutionFilterPROC glGetConvolutionFilter = NULL;
175 glGetConvolutionParameterfvPROC glGetConvolutionParameterfv = NULL;
176 glGetConvolutionParameterivPROC glGetConvolutionParameteriv = NULL;
177 glGetSeparableFilterPROC glGetSeparableFilter = NULL;
178 glSeparableFilter2DPROC glSeparableFilter2D = NULL;
179 glGetHistogramPROC glGetHistogram = NULL;
180 glGetHistogramParameterfvPROC glGetHistogramParameterfv = NULL;
181 glGetHistogramParameterivPROC glGetHistogramParameteriv = NULL;
182 glGetMinmaxPROC glGetMinmax = NULL;
183 glGetMinmaxParameterfvPROC glGetMinmaxParameterfv = NULL;
184 glGetMinmaxParameterivPROC glGetMinmaxParameteriv = NULL;
185 glHistogramPROC glHistogram = NULL;
186 glMinmaxPROC glMinmax = NULL;
187 glResetHistogramPROC glResetHistogram = NULL;
188 glResetMinmaxPROC glResetMinmax = NULL;
189 glTexImage3DPROC glTexImage3D = NULL;
190 glTexSubImage3DPROC glTexSubImage3D = NULL;
191 glCopyTexSubImage3DPROC glCopyTexSubImage3D = NULL;
195 glActiveTexturePROC glActiveTexture = NULL;
196 glClientActiveTexturePROC glClientActiveTexture = NULL;
197 glMultiTexCoord1dPROC glMultiTexCoord1d = NULL;
198 glMultiTexCoord1dvPROC glMultiTexCoord1dv = NULL;
199 glMultiTexCoord1fPROC glMultiTexCoord1f = NULL;
200 glMultiTexCoord1fvPROC glMultiTexCoord1fv = NULL;
201 glMultiTexCoord1iPROC glMultiTexCoord1i = NULL;
202 glMultiTexCoord1ivPROC glMultiTexCoord1iv = NULL;
203 glMultiTexCoord1sPROC glMultiTexCoord1s = NULL;
204 glMultiTexCoord1svPROC glMultiTexCoord1sv = NULL;
205 glMultiTexCoord2dPROC glMultiTexCoord2d = NULL;
206 glMultiTexCoord2dvPROC glMultiTexCoord2dv = NULL;
207 glMultiTexCoord2fPROC glMultiTexCoord2f = NULL;
208 glMultiTexCoord2fvPROC glMultiTexCoord2fv = NULL;
209 glMultiTexCoord2iPROC glMultiTexCoord2i = NULL;
210 glMultiTexCoord2ivPROC glMultiTexCoord2iv = NULL;
211 glMultiTexCoord2sPROC glMultiTexCoord2s = NULL;
212 glMultiTexCoord2svPROC glMultiTexCoord2sv = NULL;
213 glMultiTexCoord3dPROC glMultiTexCoord3d = NULL;
214 glMultiTexCoord3dvPROC glMultiTexCoord3dv = NULL;
215 glMultiTexCoord3fPROC glMultiTexCoord3f = NULL;
216 glMultiTexCoord3fvPROC glMultiTexCoord3fv = NULL;
217 glMultiTexCoord3iPROC glMultiTexCoord3i = NULL;
218 glMultiTexCoord3ivPROC glMultiTexCoord3iv = NULL;
219 glMultiTexCoord3sPROC glMultiTexCoord3s = NULL;
220 glMultiTexCoord3svPROC glMultiTexCoord3sv = NULL;
221 glMultiTexCoord4dPROC glMultiTexCoord4d = NULL;
222 glMultiTexCoord4dvPROC glMultiTexCoord4dv = NULL;
223 glMultiTexCoord4fPROC glMultiTexCoord4f = NULL;
224 glMultiTexCoord4fvPROC glMultiTexCoord4fv = NULL;
225 glMultiTexCoord4iPROC glMultiTexCoord4i = NULL;
226 glMultiTexCoord4ivPROC glMultiTexCoord4iv = NULL;
227 glMultiTexCoord4sPROC glMultiTexCoord4s = NULL;
228 glMultiTexCoord4svPROC glMultiTexCoord4sv = NULL;
229 glLoadTransposeMatrixfPROC glLoadTransposeMatrixf = NULL;
230 glLoadTransposeMatrixdPROC glLoadTransposeMatrixd = NULL;
231 glMultTransposeMatrixfPROC glMultTransposeMatrixf = NULL;
232 glMultTransposeMatrixdPROC glMultTransposeMatrixd = NULL;
233 glCompressedTexImage3DPROC glCompressedTexImage3D = NULL;
234 glCompressedTexImage2DPROC glCompressedTexImage2D = NULL;
235 glCompressedTexImage1DPROC glCompressedTexImage1D = NULL;
236 glCompressedTexSubImage3DPROC glCompressedTexSubImage3D = NULL;
237 glCompressedTexSubImage2DPROC glCompressedTexSubImage2D = NULL;
238 glCompressedTexSubImage1DPROC glCompressedTexSubImage1D = NULL;
239 glGetCompressedTexImagePROC glGetCompressedTexImage = NULL;
240 glSampleCoveragePROC glSampleCoverage = NULL;
242 /* ARB_multitexture */
244 glActiveTexturePROC glActiveTextureARB = NULL;
245 glClientActiveTexturePROC glClientActiveTextureARB = NULL;
246 glMultiTexCoord1dPROC glMultiTexCoord1dARB = NULL;
247 glMultiTexCoord1dvPROC glMultiTexCoord1dvARB = NULL;
248 glMultiTexCoord1fPROC glMultiTexCoord1fARB = NULL;
249 glMultiTexCoord1fvPROC glMultiTexCoord1fvARB = NULL;
250 glMultiTexCoord1iPROC glMultiTexCoord1iARB = NULL;
251 glMultiTexCoord1ivPROC glMultiTexCoord1ivARB = NULL;
252 glMultiTexCoord1sPROC glMultiTexCoord1sARB = NULL;
253 glMultiTexCoord1svPROC glMultiTexCoord1svARB = NULL;
254 glMultiTexCoord2dPROC glMultiTexCoord2dARB = NULL;
255 glMultiTexCoord2dvPROC glMultiTexCoord2dvARB = NULL;
256 glMultiTexCoord2fPROC glMultiTexCoord2fARB = NULL;
257 glMultiTexCoord2fvPROC glMultiTexCoord2fvARB = NULL;
258 glMultiTexCoord2iPROC glMultiTexCoord2iARB = NULL;
259 glMultiTexCoord2ivPROC glMultiTexCoord2ivARB = NULL;
260 glMultiTexCoord2sPROC glMultiTexCoord2sARB = NULL;
261 glMultiTexCoord2svPROC glMultiTexCoord2svARB = NULL;
262 glMultiTexCoord3dPROC glMultiTexCoord3dARB = NULL;
263 glMultiTexCoord3dvPROC glMultiTexCoord3dvARB = NULL;
264 glMultiTexCoord3fPROC glMultiTexCoord3fARB = NULL;
265 glMultiTexCoord3fvPROC glMultiTexCoord3fvARB = NULL;
266 glMultiTexCoord3iPROC glMultiTexCoord3iARB = NULL;
267 glMultiTexCoord3ivPROC glMultiTexCoord3ivARB = NULL;
268 glMultiTexCoord3sPROC glMultiTexCoord3sARB = NULL;
269 glMultiTexCoord3svPROC glMultiTexCoord3svARB = NULL;
270 glMultiTexCoord4dPROC glMultiTexCoord4dARB = NULL;
271 glMultiTexCoord4dvPROC glMultiTexCoord4dvARB = NULL;
272 glMultiTexCoord4fPROC glMultiTexCoord4fARB = NULL;
273 glMultiTexCoord4fvPROC glMultiTexCoord4fvARB = NULL;
274 glMultiTexCoord4iPROC glMultiTexCoord4iARB = NULL;
275 glMultiTexCoord4ivPROC glMultiTexCoord4ivARB = NULL;
276 glMultiTexCoord4sPROC glMultiTexCoord4sARB = NULL;
277 glMultiTexCoord4svPROC glMultiTexCoord4svARB = NULL;
279 /* ARB_transpose_matrix */
281 glLoadTransposeMatrixfPROC glLoadTransposeMatrixfARB = NULL;
282 glLoadTransposeMatrixdPROC glLoadTransposeMatrixdARB = NULL;
283 glMultTransposeMatrixfPROC glMultTransposeMatrixfARB = NULL;
284 glMultTransposeMatrixdPROC glMultTransposeMatrixdARB = NULL;
286 /* ARB_texture_compression */
288 glCompressedTexImage3DPROC glCompressedTexImage3DARB = NULL;
289 glCompressedTexImage2DPROC glCompressedTexImage2DARB = NULL;
290 glCompressedTexImage1DPROC glCompressedTexImage1DARB = NULL;
291 glCompressedTexSubImage3DPROC glCompressedTexSubImage3DARB = NULL;
292 glCompressedTexSubImage2DPROC glCompressedTexSubImage2DARB = NULL;
293 glCompressedTexSubImage1DPROC glCompressedTexSubImage1DARB = NULL;
294 glGetCompressedTexImagePROC glGetCompressedTexImageARB = NULL;
296 glSecondaryColor3bEXTPROC glSecondaryColor3bEXT = NULL;
297 glSecondaryColor3bvEXTPROC glSecondaryColor3bvEXT = NULL;
298 glSecondaryColor3dEXTPROC glSecondaryColor3dEXT = NULL;
299 glSecondaryColor3dvEXTPROC glSecondaryColor3dvEXT = NULL;
300 glSecondaryColor3fEXTPROC glSecondaryColor3fEXT = NULL;
301 glSecondaryColor3fvEXTPROC glSecondaryColor3fvEXT = NULL;
302 glSecondaryColor3iEXTPROC glSecondaryColor3iEXT = NULL;
303 glSecondaryColor3ivEXTPROC glSecondaryColor3ivEXT = NULL;
304 glSecondaryColor3sEXTPROC glSecondaryColor3sEXT = NULL;
305 glSecondaryColor3svEXTPROC glSecondaryColor3svEXT = NULL;
306 glSecondaryColor3ubEXTPROC glSecondaryColor3ubEXT = NULL;
307 glSecondaryColor3ubvEXTPROC glSecondaryColor3ubvEXT = NULL;
308 glSecondaryColor3uiEXTPROC glSecondaryColor3uiEXT = NULL;
309 glSecondaryColor3uivEXTPROC glSecondaryColor3uivEXT = NULL;
310 glSecondaryColor3usEXTPROC glSecondaryColor3usEXT = NULL;
311 glSecondaryColor3usvEXTPROC glSecondaryColor3usvEXT = NULL;
312 glSecondaryColorPointerEXTPROC glSecondaryColorPointerEXT = NULL;
314 /* ETX_compiled_vertex_array */
316 glLockArraysEXTPROC glLockArraysEXT = NULL;
317 glUnlockArraysEXTPROC glUnlockArraysEXT = NULL;
322 glFogCoordfEXTPROC glFogCoordfEXT = NULL;
323 glFogCoordfvEXTPROC glFogCoordfvEXT = NULL;
324 glFogCoorddEXTPROC glFogCoorddEXT = NULL;
325 glFogCoorddvEXTPROC glFogCoorddvEXT = NULL;
326 glFogCoordPointerEXTPROC glFogCoordPointerEXT = NULL;
328 /* NV_vertex_array_range */
330 glFlushVertexArrayRangeNVPROC glFlushVertexArrayRangeNV = NULL;
331 glVertexArrayRangeNVPROC glVertexArrayRangeNV = NULL;
333 /* EXT_point_parameters */
335 glPointParameterfEXTPROC glPointParameterfEXT = NULL;
336 glPointParameterfvEXTPROC glPointParameterfvEXT = NULL;
338 /* NV_register_combiners */
340 glCombinerParameterfvNVPROC glCombinerParameterfvNV = NULL;
341 glCombinerParameterfNVPROC glCombinerParameterfNV = NULL;
342 glCombinerParameterivNVPROC glCombinerParameterivNV = NULL;
343 glCombinerParameteriNVPROC glCombinerParameteriNV = NULL;
344 glCombinerInputNVPROC glCombinerInputNV = NULL;
345 glCombinerOutputNVPROC glCombinerOutputNV = NULL;
346 glFinalCombinerInputNVPROC glFinalCombinerInputNV = NULL;
347 glGetCombinerInputParameterfvNVPROC glGetCombinerInputParameterfvNV = NULL;
348 glGetCombinerInputParameterivNVPROC glGetCombinerInputParameterivNV = NULL;
349 glGetCombinerOutputParameterfvNVPROC glGetCombinerOutputParameterfvNV = NULL;
350 glGetCombinerOutputParameterivNVPROC glGetCombinerOutputParameterivNV = NULL;
351 glGetFinalCombinerInputParameterfvNVPROC glGetFinalCombinerInputParameterfvNV = NULL;
352 glGetFinalCombinerInputParameterivNVPROC glGetFinalCombinerInputParameterivNV = NULL;
354 /* ARB_multisample */
356 glSampleCoveragePROC glSampleCoverageARB = NULL;
358 /* EXT_vertex_weighting */
360 glVertexWeightfEXTPROC glVertexWeightfEXT = NULL;
361 glVertexWeightfvEXTPROC glVertexWeightfvEXT = NULL;
362 glVertexWeightPointerEXTPROC glVertexWeightPointerEXT = NULL;
364 /* NV_vertex_program */
366 glBindProgramNVPROC glBindProgramNV = NULL;
367 glDeleteProgramsNVPROC glDeleteProgramsNV = NULL;
368 glExecuteProgramNVPROC glExecuteProgramNV = NULL;
369 glGenProgramsNVPROC glGenProgramsNV = NULL;
370 glAreProgramsResidentNVPROC glAreProgramsResidentNV = NULL;
371 glRequestResidentProgramsNVPROC glRequestResidentProgramsNV = NULL;
372 glGetProgramParameterfvNVPROC glGetProgramParameterfvNV = NULL;
373 glGetProgramParameterdvNVPROC glGetProgramParameterdvNV = NULL;
374 glGetProgramivNVPROC glGetProgramivNV = NULL;
375 glGetProgramStringNVPROC glGetProgramStringNV = NULL;
376 glGetTrackMatrixivNVPROC glGetTrackMatrixivNV = NULL;
377 glGetVertexAttribdvNVPROC glGetVertexAttribdvNV = NULL;
378 glGetVertexAttribfvNVPROC glGetVertexAttribfvNV = NULL;
379 glGetVertexAttribivNVPROC glGetVertexAttribivNV = NULL;
380 glGetVertexAttribPointervNVPROC glGetVertexAttribPointervNV = NULL;
381 glIsProgramNVPROC glIsProgramNV = NULL;
382 glLoadProgramNVPROC glLoadProgramNV = NULL;
383 glProgramParameter4fNVPROC glProgramParameter4fNV = NULL;
384 glProgramParameter4dNVPROC glProgramParameter4dNV = NULL;
385 glProgramParameter4dvNVPROC glProgramParameter4dvNV = NULL;
386 glProgramParameter4fvNVPROC glProgramParameter4fvNV = NULL;
387 glProgramParameters4dvNVPROC glProgramParameters4dvNV = NULL;
388 glProgramParameters4fvNVPROC glProgramParameters4fvNV = NULL;
389 glTrackMatrixNVPROC glTrackMatrixNV = NULL;
390 glVertexAttribPointerNVPROC glVertexAttribPointerNV = NULL;
391 glVertexAttrib1sNVPROC glVertexAttrib1sNV = NULL;
392 glVertexAttrib1fNVPROC glVertexAttrib1fNV = NULL;
393 glVertexAttrib1dNVPROC glVertexAttrib1dNV = NULL;
394 glVertexAttrib2sNVPROC glVertexAttrib2sNV = NULL;
395 glVertexAttrib2fNVPROC glVertexAttrib2fNV = NULL;
396 glVertexAttrib2dNVPROC glVertexAttrib2dNV = NULL;
397 glVertexAttrib3sNVPROC glVertexAttrib3sNV = NULL;
398 glVertexAttrib3fNVPROC glVertexAttrib3fNV = NULL;
399 glVertexAttrib3dNVPROC glVertexAttrib3dNV = NULL;
400 glVertexAttrib4sNVPROC glVertexAttrib4sNV = NULL;
401 glVertexAttrib4fNVPROC glVertexAttrib4fNV = NULL;
402 glVertexAttrib4dNVPROC glVertexAttrib4dNV = NULL;
403 glVertexAttrib4ubNVPROC glVertexAttrib4ubNV = NULL;
404 glVertexAttrib1svNVPROC glVertexAttrib1svNV = NULL;
405 glVertexAttrib1fvNVPROC glVertexAttrib1fvNV = NULL;
406 glVertexAttrib1dvNVPROC glVertexAttrib1dvNV = NULL;
407 glVertexAttrib2svNVPROC glVertexAttrib2svNV = NULL;
408 glVertexAttrib2fvNVPROC glVertexAttrib2fvNV = NULL;
409 glVertexAttrib2dvNVPROC glVertexAttrib2dvNV = NULL;
410 glVertexAttrib3svNVPROC glVertexAttrib3svNV = NULL;
411 glVertexAttrib3fvNVPROC glVertexAttrib3fvNV = NULL;
412 glVertexAttrib3dvNVPROC glVertexAttrib3dvNV = NULL;
413 glVertexAttrib4svNVPROC glVertexAttrib4svNV = NULL;
414 glVertexAttrib4fvNVPROC glVertexAttrib4fvNV = NULL;
415 glVertexAttrib4dvNVPROC glVertexAttrib4dvNV = NULL;
416 glVertexAttrib4ubvNVPROC glVertexAttrib4ubvNV = NULL;
417 glVertexAttribs1svNVPROC glVertexAttribs1svNV = NULL;
418 glVertexAttribs1fvNVPROC glVertexAttribs1fvNV = NULL;
419 glVertexAttribs1dvNVPROC glVertexAttribs1dvNV = NULL;
420 glVertexAttribs2svNVPROC glVertexAttribs2svNV = NULL;
421 glVertexAttribs2fvNVPROC glVertexAttribs2fvNV = NULL;
422 glVertexAttribs2dvNVPROC glVertexAttribs2dvNV = NULL;
423 glVertexAttribs3svNVPROC glVertexAttribs3svNV = NULL;
424 glVertexAttribs3fvNVPROC glVertexAttribs3fvNV = NULL;
425 glVertexAttribs3dvNVPROC glVertexAttribs3dvNV = NULL;
426 glVertexAttribs4svNVPROC glVertexAttribs4svNV = NULL;
427 glVertexAttribs4fvNVPROC glVertexAttribs4fvNV = NULL;
428 glVertexAttribs4dvNVPROC glVertexAttribs4dvNV = NULL;
429 glVertexAttribs4ubvNVPROC glVertexAttribs4ubvNV = NULL;
433 glGenFencesNVPROC glGenFencesNV = NULL;
434 glDeleteFencesNVPROC glDeleteFencesNV = NULL;
435 glSetFenceNVPROC glSetFenceNV = NULL;
436 glTestFenceNVPROC glTestFenceNV = NULL;
437 glFinishFenceNVPROC glFinishFenceNV = NULL;
438 glIsFenceNVPROC glIsFenceNV = NULL;
439 glGetFenceivNVPROC glGetFenceivNV = NULL;
441 /* NV_register_combiners2 */
443 glCombinerStageParameterfvNVPROC glCombinerStageParameterfvNV = NULL;
444 glGetCombinerStageParameterfvNVPROC glGetCombinerStageParameterfvNV = NULL;
448 glMapControlPointsNVPROC glMapControlPointsNV = NULL;
449 glMapParameterivNVPROC glMapParameterivNV = NULL;
450 glMapParameterfvNVPROC glMapParameterfvNV = NULL;
451 glGetMapControlPointsNVPROC glGetMapControlPointsNV = NULL;
452 glGetMapParameterivNVPROC glGetMapParameterivNV = NULL;
453 glGetMapParameterfvNVPROC glGetMapParameterfvNV = NULL;
454 glGetMapAttribParameterivNVPROC glGetMapAttribParameterivNV = NULL;
455 glGetMapAttribParameterfvNVPROC glGetMapAttribParameterfvNV = NULL;
456 glEvalMapsNVPROC glEvalMapsNV = NULL;
458 /* ATI_pn_triangles */
460 glPNTrianglesiATIPROC glPNTrianglesiATI = NULL;
461 glPNTrianglesfATIPROC glPNTrianglesfATI = NULL;
463 /* ARB_point_parameters */
465 glPointParameterfARBPROC glPointParameterfARB = NULL;
466 glPointParameterfvARBPROC glPointParameterfvARB = NULL;
468 /* ARB_vertex_blend */
470 glWeightbvARBPROC glWeightbvARB = NULL;
471 glWeightsvARBPROC glWeightsvARB = NULL;
472 glWeightivARBPROC glWeightivARB = NULL;
473 glWeightfvARBPROC glWeightfvARB = NULL;
474 glWeightdvARBPROC glWeightdvARB = NULL;
475 glWeightubvARBPROC glWeightubvARB = NULL;
476 glWeightusvARBPROC glWeightusvARB = NULL;
477 glWeightuivARBPROC glWeightuivARB = NULL;
478 glWeightPointerARBPROC glWeightPointerARB = NULL;
479 glVertexBlendARBPROC glVertexBlendARB = NULL;
481 /* EXT_multi_draw_arrays */
483 glMultiDrawArraysEXTPROC glMultiDrawArraysEXT = NULL;
484 glMultiDrawElementsEXTPROC glMultiDrawElementsEXT = NULL;
486 /* ARB_matrix_palette */
488 glCurrentPaletteMatrixARBPROC glCurrentPaletteMatrixARB = NULL;
489 glMatrixIndexubvARBPROC glMatrixIndexubvARB = NULL;
490 glMatrixIndexusvARBPROC glMatrixIndexusvARB = NULL;
491 glMatrixIndexuivARBPROC glMatrixIndexuivARB = NULL;
492 glMatrixIndexPointerARBPROC glMatrixIndexPointerARB = NULL;
494 /* EXT_vertex_shader */
496 glBeginVertexShaderEXTPROC glBeginVertexShaderEXT = NULL;
497 glEndVertexShaderEXTPROC glEndVertexShaderEXT = NULL;
498 glBindVertexShaderEXTPROC glBindVertexShaderEXT = NULL;
499 glGenVertexShadersEXTPROC glGenVertexShadersEXT = NULL;
500 glDeleteVertexShaderEXTPROC glDeleteVertexShaderEXT = NULL;
501 glShaderOp1EXTPROC glShaderOp1EXT = NULL;
502 glShaderOp2EXTPROC glShaderOp2EXT = NULL;
503 glShaderOp3EXTPROC glShaderOp3EXT = NULL;
504 glSwizzleEXTPROC glSwizzleEXT = NULL;
505 glWriteMaskEXTPROC glWriteMaskEXT = NULL;
506 glInsertComponentEXTPROC glInsertComponentEXT = NULL;
507 glExtractComponentEXTPROC glExtractComponentEXT = NULL;
508 glGenSymbolsEXTPROC glGenSymbolsEXT = NULL;
509 glSetInvariantEXTPROC glSetInvariantEXT = NULL;
510 glSetLocalConstantEXTPROC glSetLocalConstantEXT = NULL;
511 glVariantbvEXTPROC glVariantbvEXT = NULL;
512 glVariantsvEXTPROC glVariantsvEXT = NULL;
513 glVariantivEXTPROC glVariantivEXT = NULL;
514 glVariantfvEXTPROC glVariantfvEXT = NULL;
515 glVariantdvEXTPROC glVariantdvEXT = NULL;
516 glVariantubvEXTPROC glVariantubvEXT = NULL;
517 glVariantusvEXTPROC glVariantusvEXT = NULL;
518 glVariantuivEXTPROC glVariantuivEXT = NULL;
519 glVariantPointerEXTPROC glVariantPointerEXT = NULL;
520 glEnableVariantClientStateEXTPROC glEnableVariantClientStateEXT = NULL;
521 glDisableVariantClientStateEXTPROC glDisableVariantClientStateEXT = NULL;
522 glBindLightParameterEXTPROC glBindLightParameterEXT = NULL;
523 glBindMaterialParameterEXTPROC glBindMaterialParameterEXT = NULL;
524 glBindTexGenParameterEXTPROC glBindTexGenParameterEXT = NULL;
525 glBindTextureUnitParameterEXTPROC glBindTextureUnitParameterEXT = NULL;
526 glBindParameterEXTPROC glBindParameterEXT = NULL;
527 glIsVariantEnabledEXTPROC glIsVariantEnabledEXT = NULL;
528 glGetVariantBooleanvEXTPROC glGetVariantBooleanvEXT = NULL;
529 glGetVariantIntegervEXTPROC glGetVariantIntegervEXT = NULL;
530 glGetVariantFloatvEXTPROC glGetVariantFloatvEXT = NULL;
531 glGetVariantPointervEXTPROC glGetVariantPointervEXT = NULL;
532 glGetInvariantBooleanvEXTPROC glGetInvariantBooleanvEXT = NULL;
533 glGetInvariantIntegervEXTPROC glGetInvariantIntegervEXT = NULL;
534 glGetInvariantFloatvEXTPROC glGetInvariantFloatvEXT = NULL;
535 glGetLocalConstantBooleanvEXTPROC glGetLocalConstantBooleanvEXT = NULL;
536 glGetLocalConstantIntegervEXTPROC glGetLocalConstantIntegervEXT = NULL;
537 glGetLocalConstantFloatvEXTPROC glGetLocalConstantFloatvEXT = NULL;
539 /* ATI_envmap_bumpmap */
541 glTexBumpParameterivATIPROC glTexBumpParameterivATI = NULL;
542 glTexBumpParameterfvATIPROC glTexBumpParameterfvATI = NULL;
543 glGetTexBumpParameterivATIPROC glGetTexBumpParameterivATI = NULL;
544 glGetTexBumpParameterfvATIPROC glGetTexBumpParameterfvATI = NULL;
546 /* ATI_fragment_shader */
548 glGenFragmentShadersATIPROC glGenFragmentShadersATI = NULL;
549 glBindFragmentShaderATIPROC glBindFragmentShaderATI = NULL;
550 glDeleteFragmentShaderATIPROC glDeleteFragmentShaderATI = NULL;
551 glBeginFragmentShaderATIPROC glBeginFragmentShaderATI = NULL;
552 glEndFragmentShaderATIPROC glEndFragmentShaderATI = NULL;
553 glPassTexCoordATIPROC glPassTexCoordATI = NULL;
554 glSampleMapATIPROC glSampleMapATI = NULL;
555 glColorFragmentOp1ATIPROC glColorFragmentOp1ATI = NULL;
556 glColorFragmentOp2ATIPROC glColorFragmentOp2ATI = NULL;
557 glColorFragmentOp3ATIPROC glColorFragmentOp3ATI = NULL;
558 glAlphaFragmentOp1ATIPROC glAlphaFragmentOp1ATI = NULL;
559 glAlphaFragmentOp2ATIPROC glAlphaFragmentOp2ATI = NULL;
560 glAlphaFragmentOp3ATIPROC glAlphaFragmentOp3ATI = NULL;
561 glSetFragmentShaderConstantATIPROC glSetFragmentShaderConstantATI = NULL;
563 /* ATI_element_array */
565 glElementPointerATIPROC glElementPointerATI = NULL;
566 glDrawElementArrayATIPROC glDrawElementArrayATI = NULL;
567 glDrawRangeElementArrayATIPROC glDrawRangeElementArrayATI = NULL;
569 /* ATI_vertex_streams */
571 glClientActiveVertexStreamATIPROC glClientActiveVertexStreamATI = NULL;
572 glVertexBlendEnviATIPROC glVertexBlendEnviATI = NULL;
573 glVertexBlendEnvfATIPROC glVertexBlendEnvfATI = NULL;
574 glVertexStream2sATIPROC glVertexStream2sATI = NULL;
575 glVertexStream2svATIPROC glVertexStream2svATI = NULL;
576 glVertexStream2iATIPROC glVertexStream2iATI = NULL;
577 glVertexStream2ivATIPROC glVertexStream2ivATI = NULL;
578 glVertexStream2fATIPROC glVertexStream2fATI = NULL;
579 glVertexStream2fvATIPROC glVertexStream2fvATI = NULL;
580 glVertexStream2dATIPROC glVertexStream2dATI = NULL;
581 glVertexStream2dvATIPROC glVertexStream2dvATI = NULL;
582 glVertexStream3sATIPROC glVertexStream3sATI = NULL;
583 glVertexStream3svATIPROC glVertexStream3svATI = NULL;
584 glVertexStream3iATIPROC glVertexStream3iATI = NULL;
585 glVertexStream3ivATIPROC glVertexStream3ivATI = NULL;
586 glVertexStream3fATIPROC glVertexStream3fATI = NULL;
587 glVertexStream3fvATIPROC glVertexStream3fvATI = NULL;
588 glVertexStream3dATIPROC glVertexStream3dATI = NULL;
589 glVertexStream3dvATIPROC glVertexStream3dvATI = NULL;
590 glVertexStream4sATIPROC glVertexStream4sATI = NULL;
591 glVertexStream4svATIPROC glVertexStream4svATI = NULL;
592 glVertexStream4iATIPROC glVertexStream4iATI = NULL;
593 glVertexStream4ivATIPROC glVertexStream4ivATI = NULL;
594 glVertexStream4fATIPROC glVertexStream4fATI = NULL;
595 glVertexStream4fvATIPROC glVertexStream4fvATI = NULL;
596 glVertexStream4dATIPROC glVertexStream4dATI = NULL;
597 glVertexStream4dvATIPROC glVertexStream4dvATI = NULL;
598 glNormalStream3bATIPROC glNormalStream3bATI = NULL;
599 glNormalStream3bvATIPROC glNormalStream3bvATI = NULL;
600 glNormalStream3sATIPROC glNormalStream3sATI = NULL;
601 glNormalStream3svATIPROC glNormalStream3svATI = NULL;
602 glNormalStream3iATIPROC glNormalStream3iATI = NULL;
603 glNormalStream3ivATIPROC glNormalStream3ivATI = NULL;
604 glNormalStream3fATIPROC glNormalStream3fATI = NULL;
605 glNormalStream3fvATIPROC glNormalStream3fvATI = NULL;
606 glNormalStream3dATIPROC glNormalStream3dATI = NULL;
607 glNormalStream3dvATIPROC glNormalStream3dvATI = NULL;
609 /* ATI_vertex_array_object */
611 glNewObjectBufferATIPROC glNewObjectBufferATI = NULL;
612 glIsObjectBufferATIPROC glIsObjectBufferATI = NULL;
613 glUpdateObjectBufferATIPROC glUpdateObjectBufferATI = NULL;
614 glGetObjectBufferfvATIPROC glGetObjectBufferfvATI = NULL;
615 glGetObjectBufferivATIPROC glGetObjectBufferivATI = NULL;
616 glFreeObjectBufferATIPROC glFreeObjectBufferATI = NULL;
617 glArrayObjectATIPROC glArrayObjectATI = NULL;
618 glGetArrayObjectfvATIPROC glGetArrayObjectfvATI = NULL;
619 glGetArrayObjectivATIPROC glGetArrayObjectivATI = NULL;
620 glVariantArrayObjectATIPROC glVariantArrayObjectATI = NULL;
621 glGetVariantArrayObjectfvATIPROC glGetVariantArrayObjectfvATI = NULL;
622 glGetVariantArrayObjectivATIPROC glGetVariantArrayObjectivATI = NULL;
624 /* NV_occlusion_query */
626 glGenOcclusionQueriesNVPROC glGenOcclusionQueriesNV = NULL;
627 glDeleteOcclusionQueriesNVPROC glDeleteOcclusionQueriesNV = NULL;
628 glIsOcclusionQueryNVPROC glIsOcclusionQueryNV = NULL;
629 glBeginOcclusionQueryNVPROC glBeginOcclusionQueryNV = NULL;
630 glEndOcclusionQueryNVPROC glEndOcclusionQueryNV = NULL;
631 glGetOcclusionQueryivNVPROC glGetOcclusionQueryivNV = NULL;
632 glGetOcclusionQueryuivNVPROC glGetOcclusionQueryuivNV = NULL;
634 /* NV_point_sprite */
636 glPointParameteriNVPROC glPointParameteriNV = NULL;
637 glPointParameterivNVPROC glPointParameterivNV = NULL;
641 glWindowPos2dARBPROC glWindowPos2dARB = NULL;
642 glWindowPos2fARBPROC glWindowPos2fARB = NULL;
643 glWindowPos2iARBPROC glWindowPos2iARB = NULL;
644 glWindowPos2sARBPROC glWindowPos2sARB = NULL;
645 glWindowPos2dvARBPROC glWindowPos2dvARB = NULL;
646 glWindowPos2fvARBPROC glWindowPos2fvARB = NULL;
647 glWindowPos2ivARBPROC glWindowPos2ivARB = NULL;
648 glWindowPos2svARBPROC glWindowPos2svARB = NULL;
649 glWindowPos3dARBPROC glWindowPos3dARB = NULL;
650 glWindowPos3fARBPROC glWindowPos3fARB = NULL;
651 glWindowPos3iARBPROC glWindowPos3iARB = NULL;
652 glWindowPos3sARBPROC glWindowPos3sARB = NULL;
653 glWindowPos3dvARBPROC glWindowPos3dvARB = NULL;
654 glWindowPos3fvARBPROC glWindowPos3fvARB = NULL;
655 glWindowPos3ivARBPROC glWindowPos3ivARB = NULL;
656 glWindowPos3svARBPROC glWindowPos3svARB = NULL;
660 static int error = 0;
662 struct ExtensionTypes SupportedExtensions;
666 void *lglGetProcAddress(char *name)
669 void *t = wglGetProcAddress(name);
673 /*sprintf(err, "wglGetProcAddress on %s failed", name);*/
674 error = 1; /* MessageBox(0, err, "Error", MB_OK | MB_ICONHAND);*/
678 void *t = glXGetProcAddressARB((byte*)name);
687 /*-----------------------------------------------------*/
689 /*-----------------------------------------------------*/
699 /* set the DC you will be working with */
701 /** returns true if the extention is available */
702 int QueryWGLExtension(const char *name)
704 const GLubyte *extensions = NULL;
705 const GLubyte *start;
706 GLubyte *where, *terminator;
708 /* Extension names should not have spaces. */
709 where = (GLubyte *) strchr(name, ' ');
710 if (where || *name == '\0')
712 if ((wglGetExtensionsStringARB == NULL) || (_dc == 0))
713 if (wglGetExtensionsStringEXT == NULL)
716 extensions = wglGetExtensionsStringEXT();
718 extensions = wglGetExtensionsStringARB(_dc);
719 /* It takes a bit of care to be fool-proof about parsing the
720 OpenGL extensions string. Don't be fooled by sub-strings,
725 where = (GLubyte *) strstr((const char *) start, name);
728 terminator = where + strlen(name);
729 if (where == start || *(where - 1) == ' ')
730 if (*terminator == ' ' || *terminator == '\0')
737 void InitWGLARBBufferRegion()
739 if (!SupportedExtensions.wgl.ARB_buffer_region)
741 wglCreateBufferRegionARB = (wglCreateBufferRegionARBPROC) lglGetProcAddress("wglCreateBufferRegionARB");
742 wglDeleteBufferRegionARB = (wglDeleteBufferRegionARBPROC) lglGetProcAddress("wglDeleteBufferRegionARB");
743 wglSaveBufferRegionARB = (wglSaveBufferRegionARBPROC) lglGetProcAddress("wglSaveBufferRegionARB");
744 wglRestoreBufferRegionARB = (wglRestoreBufferRegionARBPROC) lglGetProcAddress("wglRestoreBufferRegionARB");
748 void InitWGLARBPbuffer()
750 if (!SupportedExtensions.wgl.ARB_pbuffer)
752 wglCreatePbufferARB = (wglCreatePbufferARBPROC) lglGetProcAddress("wglCreatePbufferARB");
753 wglGetPbufferDCARB = (wglGetPbufferDCARBPROC) lglGetProcAddress("wglGetPbufferDCARB");
754 wglReleasePbufferDCARB = (wglReleasePbufferDCARBPROC) lglGetProcAddress("wglReleasePbufferDCARB");
755 wglDestroyPbufferARB = (wglDestroyPbufferARBPROC) lglGetProcAddress("wglDestroyPbufferARB");
756 wglQueryPbufferARB = (wglQueryPbufferARBPROC) lglGetProcAddress("wglQueryPbufferARB");
759 void InitWGLARBPixelFormat()
761 if (!SupportedExtensions.wgl.ARB_pixel_format)
763 wglGetPixelFormatAttribivARB = (wglGetPixelFormatAttribivARBPROC) lglGetProcAddress("wglGetPixelFormatAttribivARB");
764 wglGetPixelFormatAttribfvARB = (wglGetPixelFormatAttribfvARBPROC) lglGetProcAddress("wglGetPixelFormatAttribfvARB");
765 wglChoosePixelFormatARB = (wglChoosePixelFormatARBPROC) lglGetProcAddress("wglChoosePixelFormatARB");
768 void InitWGLARBRenderTexture()
770 if (!SupportedExtensions.wgl.ARB_render_texture)
772 wglBindTexImageARB = (wglBindTexImageARBPROC) lglGetProcAddress("wglBindTexImageARB");
773 wglReleaseTexImageARB = (wglReleaseTexImageARBPROC) lglGetProcAddress("wglReleaseTexImageARB");
774 wglSetPbufferAttribARB = (wglSetPbufferAttribARBPROC) lglGetProcAddress("wglSetPbufferAttribARB");
777 void InitWGLEXTSwapControl()
779 if (!SupportedExtensions.wgl.EXT_swap_control)
781 wglSwapIntervalEXT = (wglSwapIntervalEXTPROC) lglGetProcAddress("wglSwapIntervalEXT");
782 wglGetSwapIntervalEXT = (wglGetSwapIntervalEXTPROC) lglGetProcAddress("wglGetSwapIntervalEXT");
785 void InitWGLARBMakeCurrentRead()
787 if (!SupportedExtensions.wgl.ARB_make_current_read)
789 wglMakeContextCurrentARB = (wglMakeContextCurrentARBPROC) lglGetProcAddress("wglMakeContextCurrentARB");
790 wglGetCurrentReadDCARB = (wglGetCurrentReadDCARBPROC) lglGetProcAddress("wglGetCurrentReadDCARB");
793 void InitSupportedWGLExtensions()
795 SupportedExtensions.wgl.ARB_buffer_region = QueryWGLExtension("WGL_ARB_buffer_region");
796 SupportedExtensions.wgl.ARB_pbuffer = QueryWGLExtension("WGL_ARB_pbuffer");
797 SupportedExtensions.wgl.ARB_pixel_format = QueryWGLExtension("WGL_ARB_pixel_format");
798 SupportedExtensions.wgl.ARB_render_texture = QueryWGLExtension("WGL_ARB_render_texture");
799 SupportedExtensions.wgl.EXT_swap_control = QueryWGLExtension("WGL_EXT_swap_control");
800 SupportedExtensions.wgl.ARB_make_current_read = QueryWGLExtension("WGL_ARB_make_current_read");
801 SupportedExtensions.wgl.ARB_multisample = QueryWGLExtension("WGL_ARB_multisample");
804 void _wglSetDC(HDC dc)
809 int wglInitialize(HDC dc)
813 wglGetExtensionsStringARB = (wglGetExtensionsStringARBPROC) lglGetProcAddress("wglGetExtensionsStringARB");
814 wglGetExtensionsStringEXT = (wglGetExtensionsStringEXTPROC) lglGetProcAddress("wglGetExtensionsStringEXT");
815 SupportedExtensions.wgl.ARB_extensions_string = wglGetExtensionsStringARB != NULL;
816 SupportedExtensions.wgl.EXT_extensions_string = wglGetExtensionsStringEXT != NULL;
819 InitSupportedWGLExtensions();
822 InitWGLARBMakeCurrentRead();
823 InitWGLEXTSwapControl();
824 InitWGLARBRenderTexture();
825 InitWGLARBPixelFormat();
827 InitWGLARBBufferRegion();
834 /*-----------------------------------------------------*/
836 /*-----------------------------------------------------*/
838 /** returns true if the extention is available */
839 int QueryExtension(const char *name)
841 const GLubyte *extensions = NULL;
842 const GLubyte *start;
843 GLubyte *where, *terminator;
845 /* Extension names should not have spaces. */
846 where = (GLubyte *) strchr(name, ' ');
847 if (where || *name == '\0')
849 extensions = glGetString(GL_EXTENSIONS);
850 /* It takes a bit of care to be fool-proof about parsing the
851 OpenGL extensions string. Don't be fooled by sub-strings,
856 where = (GLubyte *) strstr((const char *) start, name);
859 terminator = where + strlen(name);
860 if (where == start || *(where - 1) == ' ')
861 if (*terminator == ' ' || *terminator == '\0')
867 /* char *s = (char*)glGetString(GL_EXTENSIONS);
868 char *temp = strstr(s, name);
872 void InitARBWindowPos()
874 if (!SupportedExtensions.ARB_window_pos)
876 glWindowPos2dARB = (glWindowPos2dARBPROC) lglGetProcAddress("glWindowPos2dARB");
877 glWindowPos2fARB = (glWindowPos2fARBPROC) lglGetProcAddress("glWindowPos2fARB");
878 glWindowPos2iARB = (glWindowPos2iARBPROC) lglGetProcAddress("glWindowPos2iARB");
879 glWindowPos2sARB = (glWindowPos2sARBPROC) lglGetProcAddress("glWindowPos2sARB");
880 glWindowPos2dvARB = (glWindowPos2dvARBPROC) lglGetProcAddress("glWindowPos2dvARB");
881 glWindowPos2fvARB = (glWindowPos2fvARBPROC) lglGetProcAddress("glWindowPos2fvARB");
882 glWindowPos2ivARB = (glWindowPos2ivARBPROC) lglGetProcAddress("glWindowPos2ivARB");
883 glWindowPos2svARB = (glWindowPos2svARBPROC) lglGetProcAddress("glWindowPos2svARB");
884 glWindowPos3dARB = (glWindowPos3dARBPROC) lglGetProcAddress("glWindowPos3dARB");
885 glWindowPos3fARB = (glWindowPos3fARBPROC) lglGetProcAddress("glWindowPos3fARB");
886 glWindowPos3iARB = (glWindowPos3iARBPROC) lglGetProcAddress("glWindowPos3iARB");
887 glWindowPos3sARB = (glWindowPos3sARBPROC) lglGetProcAddress("glWindowPos3sARB");
888 glWindowPos3dvARB = (glWindowPos3dvARBPROC) lglGetProcAddress("glWindowPos3dvARB");
889 glWindowPos3fvARB = (glWindowPos3fvARBPROC) lglGetProcAddress("glWindowPos3fvARB");
890 glWindowPos3ivARB = (glWindowPos3ivARBPROC) lglGetProcAddress("glWindowPos3ivARB");
891 glWindowPos3svARB = (glWindowPos3svARBPROC) lglGetProcAddress("glWindowPos3svARB");
894 void InitARBTextureCompression()
896 if (!SupportedExtensions.ARB_texture_compression)
898 glCompressedTexImage3DARB = (glCompressedTexImage3DPROC) lglGetProcAddress("glCompressedTexImage3DARB");
899 glCompressedTexImage2DARB = (glCompressedTexImage2DPROC) lglGetProcAddress("glCompressedTexImage2DARB");
900 glCompressedTexImage1DARB = (glCompressedTexImage1DPROC) lglGetProcAddress("glCompressedTexImage1DARB");
901 glCompressedTexSubImage3DARB = (glCompressedTexSubImage3DPROC) lglGetProcAddress("glCompressedTexSubImage3DARB");
902 glCompressedTexSubImage2DARB = (glCompressedTexSubImage2DPROC) lglGetProcAddress("glCompressedTexSubImage2DARB");
903 glCompressedTexSubImage1DARB = (glCompressedTexSubImage1DPROC) lglGetProcAddress("glCompressedTexSubImage1DARB");
904 glGetCompressedTexImageARB = (glGetCompressedTexImagePROC) lglGetProcAddress("glGetCompressedTexImageARB");
907 void InitNVPointSprite()
909 if (!SupportedExtensions.NV_point_sprite)
911 glPointParameteriNV = (glPointParameteriNVPROC) lglGetProcAddress("glPointParameteriNV");
912 glPointParameterivNV = (glPointParameterivNVPROC) lglGetProcAddress("glPointParameterivNV");
915 void InitNVOcclusionQuery()
917 if (!SupportedExtensions.NV_occlusion_query)
919 glGenOcclusionQueriesNV = (glGenOcclusionQueriesNVPROC) lglGetProcAddress("glGenOcclusionQueriesNV");
920 glDeleteOcclusionQueriesNV = (glDeleteOcclusionQueriesNVPROC) lglGetProcAddress("glDeleteOcclusionQueriesNV");
921 glIsOcclusionQueryNV = (glIsOcclusionQueryNVPROC) lglGetProcAddress("glIsOcclusionQueryNV");
922 glBeginOcclusionQueryNV = (glBeginOcclusionQueryNVPROC) lglGetProcAddress("glBeginOcclusionQueryNV");
923 glEndOcclusionQueryNV = (glEndOcclusionQueryNVPROC) lglGetProcAddress("glEndOcclusionQueryNV");
924 glGetOcclusionQueryivNV = (glGetOcclusionQueryivNVPROC) lglGetProcAddress("glGetOcclusionQueryivNV");
925 glGetOcclusionQueryuivNV = (glGetOcclusionQueryuivNVPROC) lglGetProcAddress("glGetOcclusionQueryuivNV");
928 #ifndef __PROTOTYPE__
930 void InitATIVertexArrayObject()
932 if (!SupportedExtensions.ATI_vertex_array_object)
934 glNewObjectBufferATI = (glNewObjectBufferATIPROC) lglGetProcAddress("glNewObjectBufferATI");
935 glIsObjectBufferATI = (glIsObjectBufferATIPROC) lglGetProcAddress("glIsObjectBufferATI");
936 glUpdateObjectBufferATI = (glUpdateObjectBufferATIPROC) lglGetProcAddress("glUpdateObjectBufferATI");
937 glGetObjectBufferfvATI = (glGetObjectBufferfvATIPROC) lglGetProcAddress("glGetObjectBufferfvATI");
938 glGetObjectBufferivATI = (glGetObjectBufferivATIPROC) lglGetProcAddress("glGetObjectBufferivATI");
939 glFreeObjectBufferATI = (glFreeObjectBufferATIPROC) lglGetProcAddress("glFreeObjectBufferATI");
940 glArrayObjectATI = (glArrayObjectATIPROC) lglGetProcAddress("glArrayObjectATI");
941 glGetArrayObjectfvATI = (glGetArrayObjectfvATIPROC) lglGetProcAddress("glGetArrayObjectfvATI");
942 glGetArrayObjectivATI = (glGetArrayObjectivATIPROC) lglGetProcAddress("glGetArrayObjectivATI");
943 glVariantArrayObjectATI = (glVariantArrayObjectATIPROC) lglGetProcAddress("glVariantArrayObjectATI");
944 glGetVariantArrayObjectfvATI = (glGetVariantArrayObjectfvATIPROC) lglGetProcAddress("glGetVariantArrayObjectfvATI");
945 glGetVariantArrayObjectivATI = (glGetVariantArrayObjectivATIPROC) lglGetProcAddress("glGetVariantArrayObjectivATI");
948 void InitATIVertexStreams()
950 if (!SupportedExtensions.ATI_vertex_streams)
952 glClientActiveVertexStreamATI = (glClientActiveVertexStreamATIPROC) lglGetProcAddress("glClientActiveVertexStreamATI");
953 glVertexBlendEnviATI = (glVertexBlendEnviATIPROC) lglGetProcAddress("glVertexBlendEnviATI");
954 glVertexBlendEnvfATI = (glVertexBlendEnvfATIPROC) lglGetProcAddress("glVertexBlendEnvfATI");
955 glVertexStream2sATI = (glVertexStream2sATIPROC) lglGetProcAddress("glVertexStream2sATI");
956 glVertexStream2svATI = (glVertexStream2svATIPROC) lglGetProcAddress("glVertexStream2svATI");
957 glVertexStream2iATI = (glVertexStream2iATIPROC) lglGetProcAddress("glVertexStream2iATI");
958 glVertexStream2ivATI = (glVertexStream2ivATIPROC) lglGetProcAddress("glVertexStream2ivATI");
959 glVertexStream2fATI = (glVertexStream2fATIPROC) lglGetProcAddress("glVertexStream2fATI");
960 glVertexStream2fvATI = (glVertexStream2fvATIPROC) lglGetProcAddress("glVertexStream2fvATI");
961 glVertexStream2dATI = (glVertexStream2dATIPROC) lglGetProcAddress("glVertexStream2dATI");
962 glVertexStream2dvATI = (glVertexStream2dvATIPROC) lglGetProcAddress("glVertexStream2dvATI");
963 glVertexStream3sATI = (glVertexStream3sATIPROC) lglGetProcAddress("glVertexStream3sATI");
964 glVertexStream3svATI = (glVertexStream3svATIPROC) lglGetProcAddress("glVertexStream3svATI");
965 glVertexStream3iATI = (glVertexStream3iATIPROC) lglGetProcAddress("glVertexStream3iATI");
966 glVertexStream3ivATI = (glVertexStream3ivATIPROC) lglGetProcAddress("glVertexStream3ivATI");
967 glVertexStream3fATI = (glVertexStream3fATIPROC) lglGetProcAddress("glVertexStream3fATI");
968 glVertexStream3fvATI = (glVertexStream3fvATIPROC) lglGetProcAddress("glVertexStream3fvATI");
969 glVertexStream3dATI = (glVertexStream3dATIPROC) lglGetProcAddress("glVertexStream3dATI");
970 glVertexStream3dvATI = (glVertexStream3dvATIPROC) lglGetProcAddress("glVertexStream3dvATI");
971 glVertexStream4sATI = (glVertexStream4sATIPROC) lglGetProcAddress("glVertexStream4sATI");
972 glVertexStream4svATI = (glVertexStream4svATIPROC) lglGetProcAddress("glVertexStream4svATI");
973 glVertexStream4iATI = (glVertexStream4iATIPROC) lglGetProcAddress("glVertexStream4iATI");
974 glVertexStream4ivATI = (glVertexStream4ivATIPROC) lglGetProcAddress("glVertexStream4ivATI");
975 glVertexStream4fATI = (glVertexStream4fATIPROC) lglGetProcAddress("glVertexStream4fATI");
976 glVertexStream4fvATI = (glVertexStream4fvATIPROC) lglGetProcAddress("glVertexStream4fvATI");
977 glVertexStream4dATI = (glVertexStream4dATIPROC) lglGetProcAddress("glVertexStream4dATI");
978 glVertexStream4dvATI = (glVertexStream4dvATIPROC) lglGetProcAddress("glVertexStream4dvATI");
979 glNormalStream3bATI = (glNormalStream3bATIPROC) lglGetProcAddress("glNormalStream3bATI");
980 glNormalStream3bvATI = (glNormalStream3bvATIPROC) lglGetProcAddress("glNormalStream3bvATI");
981 glNormalStream3sATI = (glNormalStream3sATIPROC) lglGetProcAddress("glNormalStream3sATI");
982 glNormalStream3svATI = (glNormalStream3svATIPROC) lglGetProcAddress("glNormalStream3svATI");
983 glNormalStream3iATI = (glNormalStream3iATIPROC) lglGetProcAddress("glNormalStream3iATI");
984 glNormalStream3ivATI = (glNormalStream3ivATIPROC) lglGetProcAddress("glNormalStream3ivATI");
985 glNormalStream3fATI = (glNormalStream3fATIPROC) lglGetProcAddress("glNormalStream3fATI");
986 glNormalStream3fvATI = (glNormalStream3fvATIPROC) lglGetProcAddress("glNormalStream3fvATI");
987 glNormalStream3dATI = (glNormalStream3dATIPROC) lglGetProcAddress("glNormalStream3dATI");
988 glNormalStream3dvATI = (glNormalStream3dvATIPROC) lglGetProcAddress("glNormalStream3dvATI");
991 void InitATIElementArray()
993 if (!SupportedExtensions.ATI_element_array)
995 glElementPointerATI = (glElementPointerATIPROC) lglGetProcAddress("glElementPointerATI");
996 glDrawElementArrayATI = (glDrawElementArrayATIPROC) lglGetProcAddress("glDrawElementArrayATI");
997 glDrawRangeElementArrayATI = (glDrawRangeElementArrayATIPROC) lglGetProcAddress("glDrawRangeElementArrayATI");
1000 void InitATIFragmentShader()
1002 if (!SupportedExtensions.ATI_fragment_shader)
1004 glGenFragmentShadersATI = (glGenFragmentShadersATIPROC) lglGetProcAddress("glGenFragmentShadersATI");
1005 glBindFragmentShaderATI = (glBindFragmentShaderATIPROC) lglGetProcAddress("glBindFragmentShaderATI");
1006 glDeleteFragmentShaderATI = (glDeleteFragmentShaderATIPROC) lglGetProcAddress("glDeleteFragmentShaderATI");
1007 glBeginFragmentShaderATI = (glBeginFragmentShaderATIPROC) lglGetProcAddress("glBeginFragmentShaderATI");
1008 glEndFragmentShaderATI = (glEndFragmentShaderATIPROC) lglGetProcAddress("glEndFragmentShaderATI");
1009 glPassTexCoordATI = (glPassTexCoordATIPROC) lglGetProcAddress("glPassTexCoordATI");
1010 glSampleMapATI = (glSampleMapATIPROC) lglGetProcAddress("glSampleMapATI");
1011 glColorFragmentOp1ATI = (glColorFragmentOp1ATIPROC) lglGetProcAddress("glColorFragmentOp1ATI");
1012 glColorFragmentOp2ATI = (glColorFragmentOp2ATIPROC) lglGetProcAddress("glColorFragmentOp2ATI");
1013 glColorFragmentOp3ATI = (glColorFragmentOp3ATIPROC) lglGetProcAddress("glColorFragmentOp3ATI");
1014 glAlphaFragmentOp1ATI = (glAlphaFragmentOp1ATIPROC) lglGetProcAddress("glAlphaFragmentOp1ATI");
1015 glAlphaFragmentOp2ATI = (glAlphaFragmentOp2ATIPROC) lglGetProcAddress("glAlphaFragmentOp2ATI");
1016 glAlphaFragmentOp3ATI = (glAlphaFragmentOp3ATIPROC) lglGetProcAddress("glAlphaFragmentOp3ATI");
1017 glSetFragmentShaderConstantATI = (glSetFragmentShaderConstantATIPROC) lglGetProcAddress("glSetFragmentShaderConstantATI");
1020 void InitATIEnvmapBumpmap()
1022 if (!SupportedExtensions.ATI_envmap_bumpmap)
1024 glTexBumpParameterivATI = (glTexBumpParameterivATIPROC) lglGetProcAddress("glTexBumpParameterivATI");
1025 glTexBumpParameterfvATI = (glTexBumpParameterfvATIPROC) lglGetProcAddress("glTexBumpParameterfvATI");
1026 glGetTexBumpParameterivATI = (glGetTexBumpParameterivATIPROC) lglGetProcAddress("glGetTexBumpParameterivATI");
1027 glGetTexBumpParameterfvATI = (glGetTexBumpParameterfvATIPROC) lglGetProcAddress("glGetTexBumpParameterfvATI");
1030 void InitEXTVertexShader()
1032 if (!SupportedExtensions.EXT_vertex_shader)
1034 glBeginVertexShaderEXT = (glBeginVertexShaderEXTPROC) lglGetProcAddress("glBeginVertexShaderEXT");
1035 glEndVertexShaderEXT = (glEndVertexShaderEXTPROC) lglGetProcAddress("glEndVertexShaderEXT");
1036 glBindVertexShaderEXT = (glBindVertexShaderEXTPROC) lglGetProcAddress("glBindVertexShaderEXT");
1037 glGenVertexShadersEXT = (glGenVertexShadersEXTPROC) lglGetProcAddress("glGenVertexShadersEXT");
1038 glDeleteVertexShaderEXT = (glDeleteVertexShaderEXTPROC) lglGetProcAddress("glDeleteVertexShaderEXT");
1039 glShaderOp1EXT = (glShaderOp1EXTPROC) lglGetProcAddress("glShaderOp1EXT");
1040 glShaderOp2EXT = (glShaderOp2EXTPROC) lglGetProcAddress("glShaderOp2EXT");
1041 glShaderOp3EXT = (glShaderOp3EXTPROC) lglGetProcAddress("glShaderOp3EXT");
1042 glSwizzleEXT = (glSwizzleEXTPROC) lglGetProcAddress("glSwizzleEXT");
1043 glWriteMaskEXT = (glWriteMaskEXTPROC) lglGetProcAddress("glWriteMaskEXT");
1044 glInsertComponentEXT = (glInsertComponentEXTPROC) lglGetProcAddress("glInsertComponentEXT");
1045 glExtractComponentEXT = (glExtractComponentEXTPROC) lglGetProcAddress("glExtractComponentEXT");
1046 glGenSymbolsEXT = (glGenSymbolsEXTPROC) lglGetProcAddress("glGenSymbolsEXT");
1047 glSetInvariantEXT = (glSetInvariantEXTPROC) lglGetProcAddress("glSetInvarianceEXT");
1048 glSetLocalConstantEXT = (glSetLocalConstantEXTPROC) lglGetProcAddress("glSetLocalConstantEXT");
1049 glVariantbvEXT = (glVariantbvEXTPROC) lglGetProcAddress("glVariantbvEXT");
1050 glVariantsvEXT = (glVariantsvEXTPROC) lglGetProcAddress("glVariantsvEXT");
1051 glVariantivEXT = (glVariantivEXTPROC) lglGetProcAddress("glVariantivEXT");
1052 glVariantfvEXT = (glVariantfvEXTPROC) lglGetProcAddress("glVariantfvEXT");
1053 glVariantdvEXT = (glVariantdvEXTPROC) lglGetProcAddress("glVariantdvEXT");
1054 glVariantubvEXT = (glVariantubvEXTPROC) lglGetProcAddress("glVariantubvEXT");
1055 glVariantusvEXT = (glVariantusvEXTPROC) lglGetProcAddress("glVariantusvEXT");
1056 glVariantuivEXT = (glVariantuivEXTPROC) lglGetProcAddress("glVariantuivEXT");
1057 glVariantPointerEXT = (glVariantPointerEXTPROC) lglGetProcAddress("glVariantPointerEXT");
1058 glEnableVariantClientStateEXT = (glEnableVariantClientStateEXTPROC) lglGetProcAddress("glEnableVariantClientStateEXT");
1059 glDisableVariantClientStateEXT = (glDisableVariantClientStateEXTPROC) lglGetProcAddress("glDisableVariantClientStateEXT");
1060 glBindLightParameterEXT = (glBindLightParameterEXTPROC) lglGetProcAddress("glBindLightParameterEXT");
1061 glBindMaterialParameterEXT = (glBindMaterialParameterEXTPROC) lglGetProcAddress("glBindMaterialParameterEXT");
1062 glBindTexGenParameterEXT = (glBindTexGenParameterEXTPROC) lglGetProcAddress("glBindTexGenParameterEXT");
1063 glBindTextureUnitParameterEXT = (glBindTextureUnitParameterEXTPROC) lglGetProcAddress("glBindTextureUnitParameterEXT");
1064 glBindParameterEXT = (glBindParameterEXTPROC) lglGetProcAddress("glBindParameterEXT");
1065 glIsVariantEnabledEXT = (glIsVariantEnabledEXTPROC) lglGetProcAddress("glIsVariantEnabledEXT");
1066 glGetVariantBooleanvEXT = (glGetVariantBooleanvEXTPROC) lglGetProcAddress("glGetVariantBooleanvEXT");
1067 glGetVariantIntegervEXT = (glGetVariantIntegervEXTPROC) lglGetProcAddress("glGetVariantIntegervEXT");
1068 glGetVariantFloatvEXT = (glGetVariantFloatvEXTPROC) lglGetProcAddress("glGetVariantFloatvEXT");
1069 glGetVariantPointervEXT = (glGetVariantPointervEXTPROC) lglGetProcAddress("glGetVariantPointervEXT");
1070 glGetInvariantBooleanvEXT = (glGetInvariantBooleanvEXTPROC) lglGetProcAddress("glGetInvariantBooleanvEXT");
1071 glGetInvariantIntegervEXT = (glGetInvariantIntegervEXTPROC) lglGetProcAddress("glGetInvariantIntegervEXT");
1072 glGetInvariantFloatvEXT = (glGetInvariantFloatvEXTPROC) lglGetProcAddress("glGetInvariantFloatvEXT");
1073 glGetLocalConstantBooleanvEXT = (glGetLocalConstantBooleanvEXTPROC) lglGetProcAddress("glGetLocalConstantBooleanvEXT");
1074 glGetLocalConstantIntegervEXT = (glGetLocalConstantIntegervEXTPROC) lglGetProcAddress("glGetLocalConstantIntegervEXT");
1075 glGetLocalConstantFloatvEXT = (glGetLocalConstantFloatvEXTPROC) lglGetProcAddress("glGetLocalConstantFloatvEXT");
1078 void InitARBMatrixPalette()
1080 if (!SupportedExtensions.ARB_matrix_palette)
1082 glCurrentPaletteMatrixARB = (glCurrentPaletteMatrixARBPROC) lglGetProcAddress("glCurrentPaletteMatrixARB");
1083 glMatrixIndexubvARB = (glMatrixIndexubvARBPROC) lglGetProcAddress("glMatrixIndexubvARB");
1084 glMatrixIndexusvARB = (glMatrixIndexusvARBPROC) lglGetProcAddress("glMatrixIndexusvARB");
1085 glMatrixIndexuivARB = (glMatrixIndexuivARBPROC) lglGetProcAddress("glMatrixIndexuivARB");
1086 glMatrixIndexPointerARB = (glMatrixIndexPointerARBPROC) lglGetProcAddress("glMatrixIndexPointerARB");
1089 void InitEXTMultiDrawArrays()
1091 if (!SupportedExtensions.EXT_multi_draw_arrays)
1093 glMultiDrawArraysEXT = (glMultiDrawArraysEXTPROC) lglGetProcAddress("glMultiDrawArraysEXT");
1094 glMultiDrawElementsEXT = (glMultiDrawElementsEXTPROC) lglGetProcAddress("glMultiDrawElementsEXT");
1097 void InitARBVertexBlend()
1099 if (!SupportedExtensions.ARB_vertex_blend)
1101 glWeightbvARB = (glWeightbvARBPROC) lglGetProcAddress("glWeightbvARB");
1102 glWeightsvARB = (glWeightsvARBPROC) lglGetProcAddress("glWeightsvARB");
1103 glWeightivARB = (glWeightivARBPROC) lglGetProcAddress("glWeightivARB");
1104 glWeightfvARB = (glWeightfvARBPROC) lglGetProcAddress("glWeightfvARB");
1105 glWeightdvARB = (glWeightdvARBPROC) lglGetProcAddress("glWeightdvARB");
1106 glWeightubvARB = (glWeightubvARBPROC) lglGetProcAddress("glWeightubvARB");
1107 glWeightusvARB = (glWeightusvARBPROC) lglGetProcAddress("glWeightusvARB");
1108 glWeightuivARB = (glWeightuivARBPROC) lglGetProcAddress("glWeightuivARB");
1109 glWeightPointerARB = (glWeightPointerARBPROC) lglGetProcAddress("glWeightPointerARB");
1110 glVertexBlendARB = (glVertexBlendARBPROC) lglGetProcAddress("glVertexBlendARB");
1113 void InitARBPointParameters()
1115 if (!SupportedExtensions.ARB_point_parameters)
1117 glPointParameterfARB = (glPointParameterfARBPROC) lglGetProcAddress("glPointParameterfARB");
1118 glPointParameterfvARB = (glPointParameterfvARBPROC) lglGetProcAddress("glPointParameterfvARB");
1121 void InitATIPNTriangles()
1123 if (!SupportedExtensions.ATI_pn_triangles)
1125 glPNTrianglesiATI = (glPNTrianglesiATIPROC) lglGetProcAddress("glPNTrianglesiATI");
1126 glPNTrianglesfATI = (glPNTrianglesfATIPROC) lglGetProcAddress("glPNTrianglesfATI");
1129 void InitNVEvaluators()
1131 if (!SupportedExtensions.NV_evaluators)
1133 glMapControlPointsNV = (glMapControlPointsNVPROC) lglGetProcAddress("glMapControlPointsNV");
1134 glMapParameterivNV = (glMapParameterivNVPROC) lglGetProcAddress("glMapParameterivNV");
1135 glMapParameterfvNV = (glMapParameterfvNVPROC) lglGetProcAddress("glMapParameterfvNV");
1136 glGetMapControlPointsNV = (glGetMapControlPointsNVPROC) lglGetProcAddress("glGetMapControlPointsNV");
1137 glGetMapParameterivNV = (glGetMapParameterivNVPROC) lglGetProcAddress("glGetMapParameterivNV");
1138 glGetMapParameterfvNV = (glGetMapParameterfvNVPROC) lglGetProcAddress("glGetMapParameterfvNV");
1139 glGetMapAttribParameterivNV = (glGetMapAttribParameterivNVPROC) lglGetProcAddress("glGetMapAttribParameterivNV");
1140 glGetMapAttribParameterfvNV = (glGetMapAttribParameterfvNVPROC) lglGetProcAddress("glGetMapAttribParameterfvNV");
1141 glEvalMapsNV = (glEvalMapsNVPROC) lglGetProcAddress("glEvalMapsNV");
1144 void InitNVRegisterCombiners2()
1146 if (!SupportedExtensions.NV_register_combiners2)
1148 glCombinerStageParameterfvNV = (glCombinerStageParameterfvNVPROC) lglGetProcAddress("glCombinerStageParameterfvNV");
1149 glGetCombinerStageParameterfvNV = (glGetCombinerStageParameterfvNVPROC) lglGetProcAddress("glGetCombinerStageParameterfvNV");
1154 if (!SupportedExtensions.NV_fence)
1156 glGenFencesNV = (glGenFencesNVPROC) lglGetProcAddress("glGenFencesNV");
1157 glDeleteFencesNV = (glDeleteFencesNVPROC) lglGetProcAddress("glDeleteFencesNV");
1158 glSetFenceNV = (glSetFenceNVPROC) lglGetProcAddress("glSetFenceNV");
1159 glTestFenceNV = (glTestFenceNVPROC) lglGetProcAddress("glTestFenceNV");
1160 glFinishFenceNV = (glFinishFenceNVPROC) lglGetProcAddress("glFinishFenceNV");
1161 glIsFenceNV = (glIsFenceNVPROC) lglGetProcAddress("glIsFenceNV");
1162 glGetFenceivNV = (glGetFenceivNVPROC) lglGetProcAddress("glGetFenceivNV");
1165 void InitNVVertexProgram()
1167 if (!SupportedExtensions.NV_vertex_program)
1169 glBindProgramNV = (glBindProgramNVPROC) lglGetProcAddress("glBindProgramNV");
1170 glDeleteProgramsNV = (glDeleteProgramsNVPROC) lglGetProcAddress("glDeleteProgramsNV");
1171 glExecuteProgramNV = (glExecuteProgramNVPROC) lglGetProcAddress("glExecuteProgramNV");
1172 glGenProgramsNV = (glGenProgramsNVPROC) lglGetProcAddress("glGenProgramsNV");
1173 glAreProgramsResidentNV = (glAreProgramsResidentNVPROC) lglGetProcAddress("glAreProgramsResidentNV");
1174 glRequestResidentProgramsNV = (glRequestResidentProgramsNVPROC) lglGetProcAddress("glRequestResidentProgramsNV");
1175 glGetProgramParameterfvNV = (glGetProgramParameterfvNVPROC) lglGetProcAddress("glGetProgramParameterfvNV");
1176 glGetProgramParameterdvNV = (glGetProgramParameterdvNVPROC) lglGetProcAddress("glGetProgramParameterdvNV");
1177 glGetProgramivNV = (glGetProgramivNVPROC) lglGetProcAddress("glGetProgramivNV");
1178 glGetProgramStringNV = (glGetProgramStringNVPROC) lglGetProcAddress("glGetProgramStringNV");
1179 glGetTrackMatrixivNV = (glGetTrackMatrixivNVPROC) lglGetProcAddress("glGetTrackMatrixivNV");
1180 glGetVertexAttribdvNV = (glGetVertexAttribdvNVPROC) lglGetProcAddress("glGetVertexAttribdvNV");
1181 glGetVertexAttribfvNV = (glGetVertexAttribfvNVPROC) lglGetProcAddress("glGetVertexAttribfvNV");
1182 glGetVertexAttribivNV = (glGetVertexAttribivNVPROC) lglGetProcAddress("glGetVertexAttribivNV");
1183 glGetVertexAttribPointervNV = (glGetVertexAttribPointervNVPROC) lglGetProcAddress("glGetVertexAttribPointervNV");
1184 glIsProgramNV = (glIsProgramNVPROC) lglGetProcAddress("glIsProgramNV");
1185 glLoadProgramNV = (glLoadProgramNVPROC) lglGetProcAddress("glLoadProgramNV");
1186 glProgramParameter4fNV = (glProgramParameter4fNVPROC) lglGetProcAddress("glProgramParameter4fNV");
1187 glProgramParameter4dNV = (glProgramParameter4dNVPROC) lglGetProcAddress("glProgramParameter4dNV");
1188 glProgramParameter4dvNV = (glProgramParameter4dvNVPROC) lglGetProcAddress("glProgramParameter4dvNV");
1189 glProgramParameter4fvNV = (glProgramParameter4fvNVPROC) lglGetProcAddress("glProgramParameter4fvNV");
1190 glProgramParameters4dvNV = (glProgramParameters4dvNVPROC) lglGetProcAddress("glProgramParameters4dvNV");
1191 glProgramParameters4fvNV = (glProgramParameters4fvNVPROC) lglGetProcAddress("glProgramParameters4fvNV");
1192 glTrackMatrixNV = (glTrackMatrixNVPROC) lglGetProcAddress("glTrackMatrixNV");
1193 glVertexAttribPointerNV = (glVertexAttribPointerNVPROC) lglGetProcAddress("glVertexAttribPointerNV");
1194 glVertexAttrib1sNV = (glVertexAttrib1sNVPROC) lglGetProcAddress("glVertexAttrib1sNV");
1195 glVertexAttrib1fNV = (glVertexAttrib1fNVPROC) lglGetProcAddress("glVertexAttrib1fNV");
1196 glVertexAttrib1dNV = (glVertexAttrib1dNVPROC) lglGetProcAddress("glVertexAttrib1dNV");
1197 glVertexAttrib2sNV = (glVertexAttrib2sNVPROC) lglGetProcAddress("glVertexAttrib2sNV");
1198 glVertexAttrib2fNV = (glVertexAttrib2fNVPROC) lglGetProcAddress("glVertexAttrib2fNV");
1199 glVertexAttrib2dNV = (glVertexAttrib2dNVPROC) lglGetProcAddress("glVertexAttrib2dNV");
1200 glVertexAttrib3sNV = (glVertexAttrib3sNVPROC) lglGetProcAddress("glVertexAttrib3sNV");
1201 glVertexAttrib3fNV = (glVertexAttrib3fNVPROC) lglGetProcAddress("glVertexAttrib3fNV");
1202 glVertexAttrib3dNV = (glVertexAttrib3dNVPROC) lglGetProcAddress("glVertexAttrib3dNV");
1203 glVertexAttrib4sNV = (glVertexAttrib4sNVPROC) lglGetProcAddress("glVertexAttrib4sNV");
1204 glVertexAttrib4fNV = (glVertexAttrib4fNVPROC) lglGetProcAddress("glVertexAttrib4fNV");
1205 glVertexAttrib4dNV = (glVertexAttrib4dNVPROC) lglGetProcAddress("glVertexAttrib4dNV");
1206 glVertexAttrib4ubNV = (glVertexAttrib4ubNVPROC) lglGetProcAddress("glVertexAttrib4ubNV");
1207 glVertexAttrib1svNV = (glVertexAttrib1svNVPROC) lglGetProcAddress("glVertexAttrib1svNV");
1208 glVertexAttrib1fvNV = (glVertexAttrib1fvNVPROC) lglGetProcAddress("glVertexAttrib1fvNV");
1209 glVertexAttrib1dvNV = (glVertexAttrib1dvNVPROC) lglGetProcAddress("glVertexAttrib1dvNV");
1210 glVertexAttrib2svNV = (glVertexAttrib2svNVPROC) lglGetProcAddress("glVertexAttrib2svNV");
1211 glVertexAttrib2fvNV = (glVertexAttrib2fvNVPROC) lglGetProcAddress("glVertexAttrib2fvNV");
1212 glVertexAttrib2dvNV = (glVertexAttrib2dvNVPROC) lglGetProcAddress("glVertexAttrib2dvNV");
1213 glVertexAttrib3svNV = (glVertexAttrib3svNVPROC) lglGetProcAddress("glVertexAttrib3svNV");
1214 glVertexAttrib3fvNV = (glVertexAttrib3fvNVPROC) lglGetProcAddress("glVertexAttrib3fvNV");
1215 glVertexAttrib3dvNV = (glVertexAttrib3dvNVPROC) lglGetProcAddress("glVertexAttrib3dvNV");
1216 glVertexAttrib4svNV = (glVertexAttrib4svNVPROC) lglGetProcAddress("glVertexAttrib4svNV");
1217 glVertexAttrib4fvNV = (glVertexAttrib4fvNVPROC) lglGetProcAddress("glVertexAttrib4fvNV");
1218 glVertexAttrib4dvNV = (glVertexAttrib4dvNVPROC) lglGetProcAddress("glVertexAttrib4dvNV");
1219 glVertexAttrib4ubvNV = (glVertexAttrib4ubvNVPROC) lglGetProcAddress("glVertexAttrib4ubvNV");
1220 glVertexAttribs1svNV = (glVertexAttribs1svNVPROC) lglGetProcAddress("glVertexAttribs1svNV");
1221 glVertexAttribs1fvNV = (glVertexAttribs1fvNVPROC) lglGetProcAddress("glVertexAttribs1fvNV");
1222 glVertexAttribs1dvNV = (glVertexAttribs1dvNVPROC) lglGetProcAddress("glVertexAttribs1dvNV");
1223 glVertexAttribs2svNV = (glVertexAttribs2svNVPROC) lglGetProcAddress("glVertexAttribs2svNV");
1224 glVertexAttribs2fvNV = (glVertexAttribs2fvNVPROC) lglGetProcAddress("glVertexAttribs2fvNV");
1225 glVertexAttribs2dvNV = (glVertexAttribs2dvNVPROC) lglGetProcAddress("glVertexAttribs2dvNV");
1226 glVertexAttribs3svNV = (glVertexAttribs3svNVPROC) lglGetProcAddress("glVertexAttribs3svNV");
1227 glVertexAttribs3fvNV = (glVertexAttribs3fvNVPROC) lglGetProcAddress("glVertexAttribs3fvNV");
1228 glVertexAttribs3dvNV = (glVertexAttribs3dvNVPROC) lglGetProcAddress("glVertexAttribs3dvNV");
1229 glVertexAttribs4svNV = (glVertexAttribs4svNVPROC) lglGetProcAddress("glVertexAttribs4svNV");
1230 glVertexAttribs4fvNV = (glVertexAttribs4fvNVPROC) lglGetProcAddress("glVertexAttribs4fvNV");
1231 glVertexAttribs4dvNV = (glVertexAttribs4dvNVPROC) lglGetProcAddress("glVertexAttribs4dvNV");
1232 glVertexAttribs4ubvNV = (glVertexAttribs4ubvNVPROC) lglGetProcAddress("glVertexAttribs4ubvNV");
1235 void InitEXTVertexWeighting()
1237 if (!SupportedExtensions.EXT_vertex_weighting)
1239 glVertexWeightfEXT = (glVertexWeightfEXTPROC) lglGetProcAddress("glVertexWeightfEXT");
1240 glVertexWeightfvEXT = (glVertexWeightfvEXTPROC) lglGetProcAddress("glVertexWeightfvEXT");
1241 glVertexWeightPointerEXT = (glVertexWeightPointerEXTPROC) lglGetProcAddress("glVertexWeightPointerEXT");
1244 void InitARBMultisample()
1246 if (!SupportedExtensions.ARB_multisample)
1248 glSampleCoverageARB = (glSampleCoveragePROC) lglGetProcAddress("glSampleCoverageARB");
1251 void InitNVRegisterCombiners()
1253 if (!SupportedExtensions.NV_register_combiners)
1255 glCombinerParameterfvNV = (glCombinerParameterfvNVPROC) lglGetProcAddress("glCombinerParameterfvNV");
1256 glCombinerParameterfNV = (glCombinerParameterfNVPROC) lglGetProcAddress("glCombinerParameterfNV");
1257 glCombinerParameterivNV = (glCombinerParameterivNVPROC) lglGetProcAddress("glCombinerParameterivNV");
1258 glCombinerParameteriNV = (glCombinerParameteriNVPROC) lglGetProcAddress("glCombinerParameteriNV");
1259 glCombinerInputNV = (glCombinerInputNVPROC) lglGetProcAddress("glCombinerInputNV");
1260 glCombinerOutputNV = (glCombinerOutputNVPROC) lglGetProcAddress("glCombinerOutputNV");
1261 glFinalCombinerInputNV = (glFinalCombinerInputNVPROC) lglGetProcAddress("glFinalCombinerInputNV");
1262 glGetCombinerInputParameterfvNV = (glGetCombinerInputParameterfvNVPROC) lglGetProcAddress("glGetCombinerInputParameterfvNV");
1263 glGetCombinerInputParameterivNV = (glGetCombinerInputParameterivNVPROC) lglGetProcAddress("glGetCombinerInputParameterivNV");
1264 glGetCombinerOutputParameterfvNV = (glGetCombinerOutputParameterfvNVPROC) lglGetProcAddress("glGetCombinerOutputParameterfvNV");
1265 glGetCombinerOutputParameterivNV = (glGetCombinerOutputParameterivNVPROC) lglGetProcAddress("glGetCombinerOutputParameterivNV");
1266 glGetFinalCombinerInputParameterfvNV = (glGetFinalCombinerInputParameterfvNVPROC) lglGetProcAddress("glGetFinalCombinerInputParameterfvNV");
1267 glGetFinalCombinerInputParameterivNV = (glGetFinalCombinerInputParameterivNVPROC) lglGetProcAddress("glGetFinalCombinerInputParameterivNV");
1270 void InitEXTPointParameters()
1272 if (!SupportedExtensions.EXT_point_parameters)
1274 glPointParameterfEXT = (glPointParameterfEXTPROC) lglGetProcAddress("glPointParameterfEXT");
1275 glPointParameterfvEXT = (glPointParameterfvEXTPROC) lglGetProcAddress("glPointParameterfvEXT");
1278 void InitNVVertexArrayRange()
1280 if (!SupportedExtensions.NV_vertex_array_range)
1282 glFlushVertexArrayRangeNV = (glFlushVertexArrayRangeNVPROC) lglGetProcAddress("glFlushVertexArrayRangeNV");
1283 glVertexArrayRangeNV = (glVertexArrayRangeNVPROC) lglGetProcAddress("glVertexArrayRangeNV");
1285 wglAllocateMemoryNV = (wglAllocateMemoryNVPROC) lglGetProcAddress("wglAllocateMemoryNV");
1286 wglFreeMemoryNV = (wglFreeMemoryNVPROC) lglGetProcAddress("wglFreeMemoryNV");
1290 void InitEXTFogCoord()
1292 if (!SupportedExtensions.EXT_fog_coord)
1294 glFogCoordfEXT = (glFogCoordfEXTPROC) lglGetProcAddress("glFogCoordfEXT");
1295 glFogCoordfvEXT = (glFogCoordfvEXTPROC) lglGetProcAddress("glFogCoordfvEXT");
1296 glFogCoorddEXT = (glFogCoorddEXTPROC) lglGetProcAddress("glFogCoorddEXT");
1297 glFogCoorddvEXT = (glFogCoorddvEXTPROC) lglGetProcAddress("glFogCoorddvEXT");
1298 glFogCoordPointerEXT = (glFogCoordPointerEXTPROC) lglGetProcAddress("glFogCoordPointerEXT");
1301 void InitEXTSecondaryColor()
1303 if (!SupportedExtensions.EXT_secondary_color)
1305 glSecondaryColor3bEXT = (glSecondaryColor3bEXTPROC) lglGetProcAddress("glSecondaryColor3bEXT");
1306 glSecondaryColor3bvEXT = (glSecondaryColor3bvEXTPROC) lglGetProcAddress("glSecondaryColor3bvEXT");
1307 glSecondaryColor3dEXT = (glSecondaryColor3dEXTPROC) lglGetProcAddress("glSecondaryColor3dEXT");
1308 glSecondaryColor3dvEXT = (glSecondaryColor3dvEXTPROC) lglGetProcAddress("glSecondaryColor3dvEXT");
1309 glSecondaryColor3fEXT = (glSecondaryColor3fEXTPROC) lglGetProcAddress("glSecondaryColor3fEXT");
1310 glSecondaryColor3fvEXT = (glSecondaryColor3fvEXTPROC) lglGetProcAddress("glSecondaryColor3fvEXT");
1311 glSecondaryColor3iEXT = (glSecondaryColor3iEXTPROC) lglGetProcAddress("glSecondaryColor3iEXT");
1312 glSecondaryColor3ivEXT = (glSecondaryColor3ivEXTPROC) lglGetProcAddress("glSecondaryColor3ivEXT");
1313 glSecondaryColor3sEXT = (glSecondaryColor3sEXTPROC) lglGetProcAddress("glSecondaryColor3sEXT");
1314 glSecondaryColor3svEXT = (glSecondaryColor3svEXTPROC) lglGetProcAddress("glSecondaryColor3svEXT");
1315 glSecondaryColor3ubEXT = (glSecondaryColor3ubEXTPROC) lglGetProcAddress("glSecondaryColor3ubEXT");
1316 glSecondaryColor3ubvEXT = (glSecondaryColor3ubvEXTPROC) lglGetProcAddress("glSecondaryColor3ubvEXT");
1317 glSecondaryColor3uiEXT = (glSecondaryColor3uiEXTPROC) lglGetProcAddress("glSecondaryColor3uiEXT");
1318 glSecondaryColor3uivEXT = (glSecondaryColor3uivEXTPROC) lglGetProcAddress("glSecondaryColor3uivEXT");
1319 glSecondaryColor3usEXT = (glSecondaryColor3usEXTPROC) lglGetProcAddress("glSecondaryColor3usEXT");
1320 glSecondaryColor3usvEXT = (glSecondaryColor3usvEXTPROC) lglGetProcAddress("glSecondaryColor3usvEXT");
1321 glSecondaryColorPointerEXT = (glSecondaryColorPointerEXTPROC) lglGetProcAddress("glSecondaryColorPointerEXT");
1324 void InitEXTCompiledVertexArray()
1326 if (!SupportedExtensions.EXT_compiled_vertex_array)
1328 glLockArraysEXT = (glLockArraysEXTPROC) lglGetProcAddress("glLockArraysEXT");
1329 glUnlockArraysEXT = (glUnlockArraysEXTPROC) lglGetProcAddress("glUnlockArraysEXT");
1332 void InitARBTransposeMatrix()
1334 if (!SupportedExtensions.ARB_transpose_matrix)
1336 glLoadTransposeMatrixfARB = (glLoadTransposeMatrixfPROC) lglGetProcAddress("glLoadTransposeMatrixfARB");
1337 glLoadTransposeMatrixdARB = (glLoadTransposeMatrixdPROC) lglGetProcAddress("glLoadTransposeMatrixdARB");
1338 glMultTransposeMatrixfARB = (glMultTransposeMatrixfPROC) lglGetProcAddress("glMultTransposeMatrixfARB");
1339 glMultTransposeMatrixdARB = (glMultTransposeMatrixdPROC) lglGetProcAddress("glMultTransposeMatrixdARB");
1342 void InitARBMultitexture()
1344 if (!SupportedExtensions.ARB_multitexture)
1347 glActiveTextureARB = (glActiveTexturePROC) lglGetProcAddress("glActiveTextureARB");
1348 glClientActiveTextureARB = (glClientActiveTexturePROC) lglGetProcAddress("glClientActiveTextureARB");
1350 glMultiTexCoord1dARB = (glMultiTexCoord1dPROC) lglGetProcAddress("glMultiTexCoord1dARB");
1351 glMultiTexCoord1dvARB = (glMultiTexCoord1dvPROC) lglGetProcAddress("glMultiTexCoord1dvARB");
1352 glMultiTexCoord1fARB = (glMultiTexCoord1fPROC) lglGetProcAddress("glMultiTexCoord1fARB");
1353 glMultiTexCoord1fvARB = (glMultiTexCoord1fvPROC) lglGetProcAddress("glMultiTexCoord1fvARB");
1354 glMultiTexCoord1iARB = (glMultiTexCoord1iPROC) lglGetProcAddress("glMultiTexCoord1iARB");
1355 glMultiTexCoord1ivARB = (glMultiTexCoord1ivPROC) lglGetProcAddress("glMultiTexCoord1ivARB");
1356 glMultiTexCoord1sARB = (glMultiTexCoord1sPROC) lglGetProcAddress("glMultiTexCoord1sARB");
1357 glMultiTexCoord1svARB = (glMultiTexCoord1svPROC) lglGetProcAddress("glMultiTexCoord1svARB");
1359 glMultiTexCoord2dARB = (glMultiTexCoord2dPROC) lglGetProcAddress("glMultiTexCoord2dARB");
1360 glMultiTexCoord2dvARB = (glMultiTexCoord2dvPROC) lglGetProcAddress("glMultiTexCoord2dvARB");
1361 glMultiTexCoord2fARB = (glMultiTexCoord2fPROC) lglGetProcAddress("glMultiTexCoord2fARB");
1362 glMultiTexCoord2fvARB = (glMultiTexCoord2fvPROC) lglGetProcAddress("glMultiTexCoord2fvARB");
1363 glMultiTexCoord2iARB = (glMultiTexCoord2iPROC) lglGetProcAddress("glMultiTexCoord2iARB");
1364 glMultiTexCoord2ivARB = (glMultiTexCoord2ivPROC) lglGetProcAddress("glMultiTexCoord2ivARB");
1365 glMultiTexCoord2sARB = (glMultiTexCoord2sPROC) lglGetProcAddress("glMultiTexCoord2sARB");
1366 glMultiTexCoord2svARB = (glMultiTexCoord2svPROC) lglGetProcAddress("glMultiTexCoord2svARB");
1368 glMultiTexCoord3dARB = (glMultiTexCoord3dPROC) lglGetProcAddress("glMultiTexCoord3dARB");
1369 glMultiTexCoord3dvARB = (glMultiTexCoord3dvPROC) lglGetProcAddress("glMultiTexCoord3dvARB");
1370 glMultiTexCoord3fARB = (glMultiTexCoord3fPROC) lglGetProcAddress("glMultiTexCoord3fARB");
1371 glMultiTexCoord3fvARB = (glMultiTexCoord3fvPROC) lglGetProcAddress("glMultiTexCoord3fvARB");
1372 glMultiTexCoord3iARB = (glMultiTexCoord3iPROC) lglGetProcAddress("glMultiTexCoord3iARB");
1373 glMultiTexCoord3ivARB = (glMultiTexCoord3ivPROC) lglGetProcAddress("glMultiTexCoord3ivARB");
1374 glMultiTexCoord3sARB = (glMultiTexCoord3sPROC) lglGetProcAddress("glMultiTexCoord3sARB");
1375 glMultiTexCoord3svARB = (glMultiTexCoord3svPROC) lglGetProcAddress("glMultiTexCoord3svARB");
1377 glMultiTexCoord4dARB = (glMultiTexCoord4dPROC) lglGetProcAddress("glMultiTexCoord4dARB");
1378 glMultiTexCoord4dvARB = (glMultiTexCoord4dvPROC) lglGetProcAddress("glMultiTexCoord4dvARB");
1379 glMultiTexCoord4fARB = (glMultiTexCoord4fPROC) lglGetProcAddress("glMultiTexCoord4fARB");
1380 glMultiTexCoord4fvARB = (glMultiTexCoord4fvPROC) lglGetProcAddress("glMultiTexCoord4fvARB");
1381 glMultiTexCoord4iARB = (glMultiTexCoord4iPROC) lglGetProcAddress("glMultiTexCoord4iARB");
1382 glMultiTexCoord4ivARB = (glMultiTexCoord4ivPROC) lglGetProcAddress("glMultiTexCoord4ivARB");
1383 glMultiTexCoord4sARB = (glMultiTexCoord4sPROC) lglGetProcAddress("glMultiTexCoord4sARB");
1384 glMultiTexCoord4svARB = (glMultiTexCoord4svPROC) lglGetProcAddress("glMultiTexCoord4svARB");
1388 void InitOpenGL1_2()
1390 char *s = (char*) glGetString(GL_VERSION);
1393 s = strstr(s, "1.");
1394 if (s == NULL) return;
1395 if (s[2] < '2') return;
1397 glTexImage3D = (glTexImage3DPROC) lglGetProcAddress("glTexImage3D");
1398 glTexSubImage3D = (glTexSubImage3DPROC) lglGetProcAddress("glTexSubImage3D");
1399 glCopyTexSubImage3D = (glCopyTexSubImage3DPROC) lglGetProcAddress("glCopyTexSubImage3D");
1400 glDrawRangeElements = (glDrawRangeElementsPROC) lglGetProcAddress("glDrawRangeElements");
1404 void InitARBImaging()
1406 if (!SupportedExtensions.ARB_imaging)
1408 glBlendColor = (glBlendColorPROC) lglGetProcAddress("glBlendColor");
1409 glBlendEquation = (glBlendEquationPROC) lglGetProcAddress("glBlendEquation");
1410 glColorTable = (glColorTablePROC) lglGetProcAddress("glColorTable");
1411 glColorTableParameterfv = (glColorTableParameterfvPROC) lglGetProcAddress("glColorTableParameterfv");
1412 glColorTableParameteriv = (glColorTableParameterivPROC) lglGetProcAddress("glColorTableParameteriv");
1413 glCopyColorTable = (glCopyColorTablePROC) lglGetProcAddress("glCopyColorTable");
1414 glGetColorTable = (glGetColorTablePROC) lglGetProcAddress("glGetColorTable");
1415 glGetColorTableParameterfv = (glGetColorTableParameterfvPROC) lglGetProcAddress("glGetColorTableParameterfv");
1416 glGetColorTableParameteriv = (glGetColorTableParameterivPROC) lglGetProcAddress("glGetColorTableParameteriv");
1417 glColorSubTable = (glColorSubTablePROC) lglGetProcAddress("glColorSubTable");
1418 glCopyColorSubTable = (glCopyColorSubTablePROC) lglGetProcAddress("glCopyColorSubTable");
1419 glConvolutionFilter1D = (glConvolutionFilter1DPROC) lglGetProcAddress("glConvolutionFilter1D");
1420 glConvolutionFilter2D = (glConvolutionFilter2DPROC) lglGetProcAddress("glConvolutionFilter2D");
1421 glConvolutionParameterf = (glConvolutionParameterfPROC) lglGetProcAddress("glConvolutionParameterf");
1422 glConvolutionParameterfv = (glConvolutionParameterfvPROC) lglGetProcAddress("glConvolutionParameterfv");
1423 glConvolutionParameteri = (glConvolutionParameteriPROC) lglGetProcAddress("glConvolutionParameteri");
1424 glConvolutionParameteriv = (glConvolutionParameterivPROC) lglGetProcAddress("glConvolutionParameteriv");
1425 glCopyConvolutionFilter1D = (glCopyConvolutionFilter1DPROC) lglGetProcAddress("glCopyConvolutionFilter1D");
1426 glCopyConvolutionFilter2D = (glCopyConvolutionFilter2DPROC) lglGetProcAddress("glCopyConvolutionFilter2D");
1427 glGetConvolutionFilter = (glGetConvolutionFilterPROC) lglGetProcAddress("glGetConvolutionFilter");
1428 glGetConvolutionParameterfv = (glGetConvolutionParameterfvPROC) lglGetProcAddress("glGetConvolutionParameterfv");
1429 glGetConvolutionParameteriv = (glGetConvolutionParameterivPROC) lglGetProcAddress("glGetConvolutionParameteriv");
1430 glGetSeparableFilter = (glGetSeparableFilterPROC) lglGetProcAddress("glGetSeparableFilter");
1431 glSeparableFilter2D = (glSeparableFilter2DPROC) lglGetProcAddress("glSeparableFilter2D");
1432 glGetHistogram = (glGetHistogramPROC) lglGetProcAddress("glGetHistogram");
1433 glGetHistogramParameterfv = (glGetHistogramParameterfvPROC) lglGetProcAddress("glGetHistogramParameterfv");
1434 glGetHistogramParameteriv = (glGetHistogramParameterivPROC) lglGetProcAddress("glGetHistogramParameteriv");
1435 glGetMinmax = (glGetMinmaxPROC) lglGetProcAddress("glGetMinmax");
1436 glGetMinmaxParameterfv = (glGetMinmaxParameterfvPROC) lglGetProcAddress("glGetMinmaxParameterfv");
1437 glGetMinmaxParameteriv = (glGetMinmaxParameterivPROC) lglGetProcAddress("glGetMinmaxParameteriv");
1438 glHistogram = (glHistogramPROC) lglGetProcAddress("glHistogram");
1439 glMinmax = (glMinmaxPROC) lglGetProcAddress("glMinmax");
1440 glResetHistogram = (glResetHistogramPROC) lglGetProcAddress("glResetHistogram");
1441 glResetMinmax = (glResetMinmaxPROC) lglGetProcAddress("glResetMinmax");
1444 void InitOpenGL1_3()
1446 char *s = (char*) glGetString(GL_VERSION);
1448 s = strstr(s, "1.");
1449 if (s == NULL) return;
1450 if (s[2] < '3') return;
1452 glActiveTexture = (glActiveTexturePROC) lglGetProcAddress("glActiveTexture");
1453 glClientActiveTexture = (glClientActiveTexturePROC) lglGetProcAddress("glClientActiveTexture");
1455 glMultiTexCoord1d = (glMultiTexCoord1dPROC) lglGetProcAddress("glMultiTexCoord1d");
1456 glMultiTexCoord1dv = (glMultiTexCoord1dvPROC) lglGetProcAddress("glMultiTexCoord1dv");
1457 glMultiTexCoord1f = (glMultiTexCoord1fPROC) lglGetProcAddress("glMultiTexCoord1f");
1458 glMultiTexCoord1fv = (glMultiTexCoord1fvPROC) lglGetProcAddress("glMultiTexCoord1fv");
1459 glMultiTexCoord1i = (glMultiTexCoord1iPROC) lglGetProcAddress("glMultiTexCoord1i");
1460 glMultiTexCoord1iv = (glMultiTexCoord1ivPROC) lglGetProcAddress("glMultiTexCoord1iv");
1461 glMultiTexCoord1s = (glMultiTexCoord1sPROC) lglGetProcAddress("glMultiTexCoord1s");
1462 glMultiTexCoord1sv = (glMultiTexCoord1svPROC) lglGetProcAddress("glMultiTexCoord1sv");
1464 glMultiTexCoord2d = (glMultiTexCoord2dPROC) lglGetProcAddress("glMultiTexCoord2d");
1465 glMultiTexCoord2dv = (glMultiTexCoord2dvPROC) lglGetProcAddress("glMultiTexCoord2dv");
1466 glMultiTexCoord2f = (glMultiTexCoord2fPROC) lglGetProcAddress("glMultiTexCoord2f");
1467 glMultiTexCoord2fv = (glMultiTexCoord2fvPROC) lglGetProcAddress("glMultiTexCoord2fv");
1468 glMultiTexCoord2i = (glMultiTexCoord2iPROC) lglGetProcAddress("glMultiTexCoord2i");
1469 glMultiTexCoord2iv = (glMultiTexCoord2ivPROC) lglGetProcAddress("glMultiTexCoord2iv");
1470 glMultiTexCoord2s = (glMultiTexCoord2sPROC) lglGetProcAddress("glMultiTexCoord2s");
1471 glMultiTexCoord2sv = (glMultiTexCoord2svPROC) lglGetProcAddress("glMultiTexCoord2sv");
1473 glMultiTexCoord3d = (glMultiTexCoord3dPROC) lglGetProcAddress("glMultiTexCoord3d");
1474 glMultiTexCoord3dv = (glMultiTexCoord3dvPROC) lglGetProcAddress("glMultiTexCoord3dv");
1475 glMultiTexCoord3f = (glMultiTexCoord3fPROC) lglGetProcAddress("glMultiTexCoord3f");
1476 glMultiTexCoord3fv = (glMultiTexCoord3fvPROC) lglGetProcAddress("glMultiTexCoord3fv");
1477 glMultiTexCoord3i = (glMultiTexCoord3iPROC) lglGetProcAddress("glMultiTexCoord3i");
1478 glMultiTexCoord3iv = (glMultiTexCoord3ivPROC) lglGetProcAddress("glMultiTexCoord3iv");
1479 glMultiTexCoord3s = (glMultiTexCoord3sPROC) lglGetProcAddress("glMultiTexCoord3s");
1480 glMultiTexCoord3sv = (glMultiTexCoord3svPROC) lglGetProcAddress("glMultiTexCoord3sv");
1482 glMultiTexCoord4d = (glMultiTexCoord4dPROC) lglGetProcAddress("glMultiTexCoord4d");
1483 glMultiTexCoord4dv = (glMultiTexCoord4dvPROC) lglGetProcAddress("glMultiTexCoord4dv");
1484 glMultiTexCoord4f = (glMultiTexCoord4fPROC) lglGetProcAddress("glMultiTexCoord4f");
1485 glMultiTexCoord4fv = (glMultiTexCoord4fvPROC) lglGetProcAddress("glMultiTexCoord4fv");
1486 glMultiTexCoord4i = (glMultiTexCoord4iPROC) lglGetProcAddress("glMultiTexCoord4i");
1487 glMultiTexCoord4iv = (glMultiTexCoord4ivPROC) lglGetProcAddress("glMultiTexCoord4iv");
1488 glMultiTexCoord4s = (glMultiTexCoord4sPROC) lglGetProcAddress("glMultiTexCoord4s");
1489 glMultiTexCoord4sv = (glMultiTexCoord4svPROC) lglGetProcAddress("glMultiTexCoord4sv");
1491 glLoadTransposeMatrixf = (glLoadTransposeMatrixfPROC) lglGetProcAddress("glLoadTransposeMatrixf");
1492 glLoadTransposeMatrixd = (glLoadTransposeMatrixdPROC) lglGetProcAddress("glLoadTransposeMatrixd");
1493 glMultTransposeMatrixf = (glMultTransposeMatrixfPROC) lglGetProcAddress("glMultTransposeMatrixf");
1494 glMultTransposeMatrixd = (glMultTransposeMatrixdPROC) lglGetProcAddress("glMultTransposeMatrixd");
1495 glCompressedTexImage3D = (glCompressedTexImage3DPROC) lglGetProcAddress("glCompressedTexImage3D");
1496 glCompressedTexImage2D = (glCompressedTexImage2DPROC) lglGetProcAddress("glCompressedTexImage2D");
1497 glCompressedTexImage1D = (glCompressedTexImage1DPROC) lglGetProcAddress("glCompressedTexImage1D");
1498 glCompressedTexSubImage3D = (glCompressedTexSubImage3DPROC) lglGetProcAddress("glCompressedTexSubImage3D");
1499 glCompressedTexSubImage2D = (glCompressedTexSubImage2DPROC) lglGetProcAddress("glCompressedTexSubImage2D");
1500 glCompressedTexSubImage1D = (glCompressedTexSubImage1DPROC) lglGetProcAddress("glCompressedTexSubImage1D");
1501 glGetCompressedTexImage = (glGetCompressedTexImagePROC) lglGetProcAddress("glGetCompressedTexImage");
1503 glSampleCoverage = (glSampleCoveragePROC) lglGetProcAddress("glSampleCoverage");
1507 #endif /* __PROTOTYPE__ */
1509 void InitSupportedExtensions()
1511 char *s = (char*) glGetString(GL_VERSION);
1514 s = strstr(s, "1.");
1517 SupportedExtensions.OpenGL12 = 0;
1518 SupportedExtensions.OpenGL13 = 0;
1522 SupportedExtensions.OpenGL12 = 0;
1523 SupportedExtensions.OpenGL13 = 0;
1527 SupportedExtensions.OpenGL12 = 1;
1528 SupportedExtensions.OpenGL13 = 0;
1532 SupportedExtensions.OpenGL12 = 1;
1533 SupportedExtensions.OpenGL13 = 1;
1535 SupportedExtensions.ARB_imaging = QueryExtension("GL_ARB_imaging");
1536 SupportedExtensions.ARB_matrix_palette = QueryExtension("GL_ARB_matrix_palette");
1537 SupportedExtensions.ARB_multisample = QueryExtension("GL_ARB_multisample");
1538 SupportedExtensions.ARB_multitexture = QueryExtension("GL_ARB_multitexture");
1539 SupportedExtensions.ARB_point_parameters = QueryExtension("GL_ARB_point_parameters");
1540 SupportedExtensions.ARB_texture_border_clamp = QueryExtension("GL_ARB_texture_border_clamp");
1541 SupportedExtensions.ARB_texture_compression = QueryExtension("GL_ARB_texture_compression");
1542 SupportedExtensions.ARB_texture_cube_map = QueryExtension("GL_ARB_texture_cube_map");
1543 SupportedExtensions.ARB_texture_env_add = QueryExtension("GL_ARB_texture_env_add");
1544 SupportedExtensions.ARB_texture_env_combine = QueryExtension("GL_ARB_texture_env_combine");
1545 SupportedExtensions.ARB_texture_env_crossbar = QueryExtension("GL_ARB_texture_env_crossbar");
1546 SupportedExtensions.ARB_texture_env_dot3 = QueryExtension("GL_ARB_texture_env_dot3");
1547 SupportedExtensions.ARB_transpose_matrix = QueryExtension("GL_ARB_transpose_matrix");
1548 SupportedExtensions.ARB_vertex_blend = QueryExtension("GL_ARB_vertex_blend");
1549 SupportedExtensions.ATI_element_array = QueryExtension("GL_ATI_element_array");
1550 SupportedExtensions.ATI_envmap_bumpmap = QueryExtension("GL_ATI_envmap_bumpmap");
1551 SupportedExtensions.ATI_fragment_shader = QueryExtension("GL_ATI_fragment_shader");
1552 SupportedExtensions.ATI_pn_triangles = QueryExtension("GL_ATI_pn_triangles");
1553 SupportedExtensions.ATI_texture_mirror_once = QueryExtension("GL_ATI_texture_mirror_once");
1554 SupportedExtensions.ATI_vertex_array_object = QueryExtension("GL_ATI_vertex_array_object");
1555 SupportedExtensions.ATI_vertex_streams = QueryExtension("GL_ATI_vertex_streams");
1556 SupportedExtensions.ATIX_point_sprites = QueryExtension("GL_ATIX_point_sprites");
1557 SupportedExtensions.ATIX_texture_env_route = QueryExtension("GL_ATIX_texture_env_route");
1558 SupportedExtensions.EXT_abgr = QueryExtension("GL_EXT_abgr");
1559 SupportedExtensions.EXT_compiled_vertex_array = QueryExtension("GL_EXT_compiled_vertex_array");
1560 SupportedExtensions.EXT_fog_coord = QueryExtension("GL_EXT_fog_coord");
1561 SupportedExtensions.EXT_multi_draw_arrays = QueryExtension("GL_EXT_multi_draw_arrays");
1562 SupportedExtensions.EXT_point_parameters = QueryExtension("GL_EXT_point_parameters");
1563 SupportedExtensions.EXT_secondary_color = QueryExtension("GL_EXT_secondary_color");
1564 SupportedExtensions.EXT_stencil_wrap = QueryExtension("GL_EXT_stencil_wrap");
1565 SupportedExtensions.EXT_texture_filter_anisotropic = QueryExtension("GL_EXT_texture_filter_anisotropic");
1566 SupportedExtensions.EXT_texture_lod_bias = QueryExtension("GL_EXT_texture_lod_bias");
1567 SupportedExtensions.EXT_vertex_shader = QueryExtension("GL_EXT_vertex_shader");
1568 SupportedExtensions.EXT_vertex_weighting = QueryExtension("GL_EXT_vertex_weighting");
1569 SupportedExtensions.HP_occlusion_test = QueryExtension("GL_HP_occlusion_test");
1570 SupportedExtensions.NV_blend_square = QueryExtension("GL_NV_blend_square");
1571 SupportedExtensions.NV_copy_depth_to_color = QueryExtension("GL_NV_copy_depth_to_color");
1572 SupportedExtensions.NV_depth_clamp = QueryExtension("GL_NV_depth_clamp");
1573 SupportedExtensions.NV_evaluators = QueryExtension("GL_NV_evaluators");
1574 SupportedExtensions.NV_fence = QueryExtension("GL_NV_fence");
1575 SupportedExtensions.NV_fog_distance = QueryExtension("GL_NV_fog_distance");
1576 SupportedExtensions.NV_light_max_exponent = QueryExtension("GL_NV_light_max_exponent");
1577 SupportedExtensions.NV_occlusion_query = QueryExtension("GL_NV_occlusion_query");
1578 SupportedExtensions.NV_packed_depth_stencil = QueryExtension("GL_NV_packed_depth_stencil");
1579 SupportedExtensions.NV_point_sprite = QueryExtension("GL_NV_point_sprite");
1580 SupportedExtensions.NV_register_combiners = QueryExtension("GL_NV_register_combiners");
1581 SupportedExtensions.NV_register_combiners2 = QueryExtension("GL_NV_register_combiners2");
1582 SupportedExtensions.NV_texgen_reflection = QueryExtension("GL_NV_texgen_reflection");
1583 SupportedExtensions.NV_texture_env_combine4 = QueryExtension("GL_NV_texture_env_combine4");
1584 SupportedExtensions.NV_texture_rectangle = QueryExtension("GL_NV_texture_rectangle");
1585 SupportedExtensions.NV_texture_shader = QueryExtension("GL_NV_texture_shader");
1586 SupportedExtensions.NV_texture_shader2 = QueryExtension("GL_NV_texture_shader2");
1587 SupportedExtensions.NV_texture_shader3 = QueryExtension("GL_NV_texture_shader3");
1588 SupportedExtensions.NV_vertex_array_range = QueryExtension("GL_NV_vertex_array_range");
1589 SupportedExtensions.NV_vertex_array_range2 = QueryExtension("GL_NV_vertex_array_range2");
1590 SupportedExtensions.NV_vertex_program = QueryExtension("GL_NV_vertex_program");
1591 SupportedExtensions.NV_vertex_program1_1 = QueryExtension("GL_NV_vertex_program1_1");
1592 SupportedExtensions.SGIS_generate_mipmap = QueryExtension("GL_SGIS_generate_mipmap");
1593 SupportedExtensions.SGIX_depth_texture = QueryExtension("GL_SGIX_depth_texture");
1594 SupportedExtensions.SGIX_shadow = QueryExtension("GL_SGIX_shadow");
1595 SupportedExtensions.ARB_texture_mirrored_repeat = QueryExtension("GL_ARB_texture_mirrored_repeat");
1596 SupportedExtensions.ARB_depth_texture = QueryExtension("GL_ARB_depth_texture");
1597 SupportedExtensions.ARB_shadow = QueryExtension("GL_ARB_shadow");
1598 SupportedExtensions.ARB_shadow_ambient = QueryExtension("GL_ARB_shadow_ambient");
1599 SupportedExtensions.ARB_window_pos = QueryExtension("GL_ARB_window_pos");
1600 SupportedExtensions.EXT_shadow_funcs = QueryExtension("GL_EXT_shadow_funcs");
1603 /* init the extensions and load all the functions */
1607 InitSupportedExtensions();
1609 /* first load the etensions */
1611 InitARBTransposeMatrix();
1612 InitARBMultisample();
1613 InitEXTCompiledVertexArray();
1614 InitEXTSecondaryColor();
1616 InitNVVertexArrayRange();
1617 InitEXTPointParameters();
1618 InitNVRegisterCombiners();
1619 InitEXTVertexWeighting();
1620 InitNVVertexProgram();
1622 InitNVRegisterCombiners2();
1623 InitATIPNTriangles();
1624 InitARBPointParameters();
1625 InitARBVertexBlend();
1626 InitEXTMultiDrawArrays();
1627 InitARBMatrixPalette();
1628 InitEXTVertexShader();
1629 InitATIEnvmapBumpmap();
1630 InitATIFragmentShader();
1631 InitATIElementArray();
1632 InitATIVertexStreams();
1633 InitATIVertexArrayObject();
1634 InitNVOcclusionQuery();
1635 InitNVPointSprite();
1639 InitARBMultitexture();
1640 /* now load core opengl */