Linux multi-monitor fullscreen support
[ryzomcore.git] / nel / src / 3d / driver / opengl / driver_opengl_extension.h
blob951fa99cbe64912f95e12a05b6591baa9f35cfdd
1 // NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
2 // Copyright (C) 2010 Winch Gate Property Limited
3 //
4 // This source file has been modified by the following contributors:
5 // Copyright (C) 2010 Robert TIMM (rti) <mail@rtti.de>
6 // Copyright (C) 2013-2014 Jan BOON (Kaetemi) <jan.boon@kaetemi.be>
7 //
8 // This program is free software: you can redistribute it and/or modify
9 // it under the terms of the GNU Affero General Public License as
10 // published by the Free Software Foundation, either version 3 of the
11 // License, or (at your option) any later version.
13 // This program is distributed in the hope that it will be useful,
14 // but WITHOUT ANY WARRANTY; without even the implied warranty of
15 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 // GNU Affero General Public License for more details.
18 // You should have received a copy of the GNU Affero General Public License
19 // along with this program. If not, see <http://www.gnu.org/licenses/>.
21 #ifndef NL_OPENGL_EXTENSION_H
22 #define NL_OPENGL_EXTENSION_H
25 #include "nel/misc/types_nl.h"
26 #include "nel/misc/string_common.h"
28 #include "driver_opengl_extension_def.h"
30 namespace NL3D {
32 #ifdef NL_STATIC
33 #ifdef USE_OPENGLES
34 namespace NLDRIVERGLES {
35 #else
36 namespace NLDRIVERGL {
37 #endif
38 #endif
40 // ***************************************************************************
41 /// The extensions used by NL3D.
42 struct CGlExtensions
44 // Is this driver a correct OpenGL 1.2 driver?
45 bool Version1_2;
47 // Required Extensions.
48 bool ARBMultiTexture;
49 uint NbTextureStages;
50 bool EXTTextureEnvCombine;
52 // Optional Extensions.
53 // NB: Fence extension is not here, because NVVertexArrayRange is false if GL_NV_fence is not here.
54 bool NVVertexArrayRange;
55 uint NVVertexArrayRangeMaxVertex;
56 bool EXTTextureCompressionS3TC;
57 bool EXTVertexWeighting;
58 bool EXTSeparateSpecularColor;
59 bool NVTextureEnvCombine4;
60 bool ARBTextureCubeMap;
61 bool NVVertexProgram;
62 bool EXTVertexShader;
63 bool NVTextureShader;
64 bool NVOcclusionQuery;
65 bool ARBOcclusionQuery;
66 bool NVTextureRectangle;
67 bool EXTTextureRectangle;
68 bool ARBTextureRectangle;
69 bool FrameBufferObject;
70 bool FrameBufferBlit;
71 bool FrameBufferMultisample;
72 bool PackedDepthStencil;
73 bool EXTTextureFilterAnisotropic;
74 float EXTTextureFilterAnisotropicMaximum;
76 // true if NVVertexProgram and if we know that VP is emulated
77 bool NVVertexProgramEmulated;
78 bool EXTSecondaryColor;
79 bool EXTBlendColor;
80 // NVVertexArrayRange2.
81 bool NVVertexArrayRange2;
82 // equal to GL_VERTEX_ARRAY_RANGE_WITHOUT_FLUSH_NV if possible, or GL_VERTEX_ARRAY_RANGE_NV
83 uint NVStateVARWithoutFlush;
85 // WGL ARB extensions, true if supported
86 bool WGLARBPBuffer;
87 bool WGLARBPixelFormat;
88 bool WGLEXTSwapControl;
90 // GLX extensions, true if supported
91 bool GLXEXTSwapControl;
92 bool GLXSGISwapControl;
93 bool GLXMESASwapControl;
94 bool GLXMESAQueryRenderer;
96 // ATI Extensions.
97 bool ATIVertexArrayObject;
98 bool ATIMapObjectBuffer;
99 bool ATITextureEnvCombine3;
100 bool ATIEnvMapBumpMap;
101 bool ATIFragmentShader;
102 bool ATIXTextureEnvRoute;
103 bool ATIVertexAttribArrayObject;
104 // ARB Extensions
105 bool ARBTextureCompression;
106 bool ARBFragmentProgram;
107 bool ARBVertexBufferObject;
108 bool ARBMapBufferRange;
109 bool ARBVertexProgram;
110 bool ARBTextureNonPowerOfTwo;
111 bool ARBMultisample;
112 bool ARBFragmentShader;
114 // NV Pixel Programs
115 bool NVFragmentProgram2;
117 bool OESDrawTexture;
118 bool OESMapBuffer;
120 // extensions to get memory info
122 // GL_NVX_gpu_memory_info
123 bool NVXGPUMemoryInfo;
125 // GL_ATI_meminfo
126 bool ATIMeminfo;
128 // WGL_AMD_gpu_association
129 bool WGLAMDGPUAssociation;
131 // WGL_NV_gpu_affinity
132 bool WGLNVGPUAffinity;
134 public:
136 /// \name Disable Hardware feature. False by default. setuped by IDriver
137 // @{
138 bool DisableHardwareVertexProgram;
139 bool DisableHardwarePixelProgram;
140 bool DisableHardwareVertexArrayAGP;
141 bool DisableHardwareTextureShader;
142 // @}
144 public:
145 CGlExtensions()
147 // Fill all false by default.
148 Version1_2= false;
149 ARBMultiTexture= false;
150 NbTextureStages= 1;
151 EXTTextureEnvCombine= false;
152 ARBTextureCompression= false;
153 NVVertexArrayRange= false;
154 NVVertexArrayRangeMaxVertex= 0;
155 EXTTextureCompressionS3TC= false;
156 EXTVertexWeighting= false;
157 EXTSeparateSpecularColor= false;
158 NVTextureEnvCombine4= false;
159 ATITextureEnvCombine3= false;
160 ATIXTextureEnvRoute= false;
161 ARBTextureCubeMap= false;
162 NVTextureShader= false;
163 NVVertexProgram= false;
164 NVVertexProgramEmulated= false;
165 EXTSecondaryColor= false;
166 WGLARBPBuffer= false;
167 WGLARBPixelFormat= false;
168 WGLEXTSwapControl= false;
169 GLXEXTSwapControl= false;
170 GLXSGISwapControl= false;
171 GLXMESASwapControl= false;
172 GLXMESAQueryRenderer= false;
173 EXTBlendColor= false;
174 ATIVertexArrayObject= false;
175 ATIEnvMapBumpMap = false;
176 ATIFragmentShader = false;
177 ATIMapObjectBuffer = false;
178 ATIVertexAttribArrayObject = false;
179 EXTVertexShader= false;
180 ARBFragmentProgram = false;
181 ARBVertexBufferObject = false;
182 ARBMapBufferRange = false;
183 ARBVertexProgram = false;
184 NVTextureRectangle = false;
185 EXTTextureRectangle = false;
186 EXTTextureFilterAnisotropic = false;
187 EXTTextureFilterAnisotropicMaximum = 0.f;
188 ARBTextureRectangle = false;
189 ARBTextureNonPowerOfTwo = false;
190 ARBMultisample = false;
191 ARBFragmentShader = false;
192 NVOcclusionQuery = false;
193 ARBOcclusionQuery = false;
194 FrameBufferObject = false;
195 FrameBufferBlit = false;
196 FrameBufferMultisample = false;
197 PackedDepthStencil = false;
198 NVVertexArrayRange2 = false;
199 NVStateVARWithoutFlush = 0;
201 OESDrawTexture = false;
202 OESMapBuffer = false;
204 NVXGPUMemoryInfo = false;
205 ATIMeminfo = false;
206 WGLAMDGPUAssociation = false;
208 /// \name Disable Hardware feature. False by default. setuped by IDriver
209 DisableHardwareVertexProgram= false;
210 DisableHardwarePixelProgram= false;
211 DisableHardwareVertexArrayAGP= false;
212 DisableHardwareTextureShader= false;
215 std::string toString()
217 std::string result = "OpenGL version ";
218 result += Version1_2 ? "1.2 or above(*)" : "1.1 or below";
219 result += "; Available extensions:";
221 result += "\n Texturing: ";
222 result += ARBMultiTexture ? "ARBMultiTexture " : "";
223 result += EXTTextureEnvCombine ? "EXTTextureEnvCombine(*) " : "";
224 result += ARBTextureCompression ? "ARBTextureCompression " : "";
225 result += EXTTextureCompressionS3TC ? "EXTTextureCompressionS3TC " : "";
226 result += NVTextureEnvCombine4 ? "NVTextureEnvCombine4 " : "";
227 result += ATITextureEnvCombine3 ? "ATITextureEnvCombine3 " : "";
228 result += ATIXTextureEnvRoute ? "ATITextureEnvRoute " : "";
229 result += ARBTextureCubeMap ? "ARBTextureCubeMap " : "";
230 result += ATIEnvMapBumpMap ? "ATIEnvMapBumpMap " : "";
231 result += NVTextureRectangle ? "NVTextureRectangle " : "";
232 result += EXTTextureRectangle ? "EXTTextureRectangle " : "";
233 result += ARBTextureRectangle ? "ARBTextureRectangle " : "";
234 result += EXTTextureFilterAnisotropic ? "EXTTextureFilterAnisotropic (Maximum = " + NLMISC::toString(EXTTextureFilterAnisotropicMaximum) + ") " : "";
235 result += ARBTextureNonPowerOfTwo ? "ARBTextureNonPowerOfTwo " : "";
236 result += "texture stages(*) = ";
237 result += NLMISC::toString(NbTextureStages);
239 result += "\n Programs: ";
240 result += NVTextureShader ? "NVTextureShader " : "";
241 result += ATIFragmentShader ? "ATIFragmentShader " : "";
242 result += ARBFragmentProgram ? "ARBFragmentProgram " : "";
243 result += NVFragmentProgram2 ? "NVFragmentProgram2 " : "";
244 result += ARBVertexProgram ? "ARBVertexProgram " : "";
245 result += NVVertexProgram ? "NVVertexProgram " : "";
246 result += EXTVertexShader ? "EXTVertexShader " : "";
247 result += NVVertexProgramEmulated ? "NVVertexProgramEmulated " : "";
249 result += "\n Misc: ";
250 result += EXTVertexWeighting ? "EXTVertexWeighting " : "";
251 result += EXTSeparateSpecularColor ? "EXTSeparateSpecularColor " : "";
252 result += EXTSecondaryColor ? "EXTSecondaryColor " : "";
253 result += EXTBlendColor ? "EXTBlendColor " : "";
254 result += NVOcclusionQuery ? "NVOcclusionQuery " : "";
255 result += ARBOcclusionQuery ? "ARBOcclusionQuery " : "";
256 result += NVStateVARWithoutFlush ? "NVStateVARWithoutFlush " : "";
257 result += ARBMultisample ? "ARBMultisample " : "";
258 result += NVXGPUMemoryInfo ? "NVXGPUMemoryInfo " : "";
259 result += ATIMeminfo ? "ATIMeminfo " : "";
261 #ifdef NL_OS_WINDOWS
262 result += "\n WindowsGL: ";
263 result += WGLARBPBuffer ? "WGLARBPBuffer " : "";
264 result += WGLARBPixelFormat ? "WGLARBPixelFormat " : "";
265 result += WGLEXTSwapControl ? "WGLEXTSwapControl " : "";
266 result += WGLAMDGPUAssociation ? "WGLAMDGPUAssociation " : "";
267 #elif defined(NL_OS_MAC)
268 #elif defined(NL_OS_UNIX)
269 result += "\n GLX: ";
270 result += GLXEXTSwapControl ? "GLXEXTSwapControl " : "";
271 result += GLXSGISwapControl ? "GLXSGISwapControl " : "";
272 result += GLXMESASwapControl ? "GLXMESASwapControl " : "";
273 result += GLXMESAQueryRenderer ? "GLXMESAQueryRenderer " : "";
274 #endif
276 result += "\n Array/VBO: ";
277 result += NVVertexArrayRange ? ("NVVertexArrayRange (MaxVertex = " + NLMISC::toString(NVVertexArrayRangeMaxVertex) + ") ") : "";
278 result += NVVertexArrayRange2 ? "NVVertexArrayRange2 " : "";
279 result += ATIVertexArrayObject ? "ATIVertexArrayObject " : "";
280 result += ATIVertexAttribArrayObject ? "ATIVertexAttribArrayObject " : "";
281 result += ARBVertexBufferObject ? "ARBVertexBufferObject " : "";
282 result += ARBMapBufferRange ? "ARBMapBufferRange " : "";
283 result += ATIMapObjectBuffer ? "ATIMapObjectBuffer " : "";
285 result += "\n FBO: ";
286 result += FrameBufferObject ? "FramebufferObject " : "";
287 result += FrameBufferBlit ? "FrameBufferBlit " : "";
288 result += FrameBufferMultisample ? "FrameBufferMultisample " : "";
289 result += PackedDepthStencil ? "PackedDepthStencil " : "";
291 return result;
296 // ***************************************************************************
298 #ifdef USE_OPENGLES
299 /// This function will test and register EGL functions before than the gl context is created
300 bool registerEGlExtensions(CGlExtensions &ext, EGLDisplay dpy);
301 #elif defined(NL_OS_WINDOWS)
302 /// This function will test and register WGL functions before than the gl context is created
303 bool registerWGlExtensions(CGlExtensions &ext, HDC hDC);
304 #elif defined(NL_OS_MAC)
305 #elif defined(NL_OS_UNIX)
306 /// This function will test and register GLX functions before than the gl context is created
307 bool registerGlXExtensions(CGlExtensions &ext, Display *dpy, sint screen);
308 #endif // NL_OS_WINDOWS
310 /// This function test and register the extensions for the current GL context.
311 void registerGlExtensions(CGlExtensions &ext);
313 #ifdef NL_STATIC
314 } // NLDRIVERGL/ES
315 #endif
317 } // NL3D
319 // ***************************************************************************
320 // The exported function names
321 /* NB: We named all like nglActiveTextureARB (n for NEL :)
322 to avoid compilation conflict with future version of gl.h
323 eg: gl.h Version 1.2 define glActiveTextureARB so we can't use it.
325 NB: we do it for all (EXT, NV, ARB extension) even it should be useful only for ARB ones.
328 #ifdef USE_OPENGLES
330 // OES_mapbuffer.
331 //===============
332 extern PFNGLMAPBUFFEROESPROC nglMapBufferOES;
333 extern PFNGLUNMAPBUFFEROESPROC nglUnmapBufferOES;
334 extern PFNGLGETBUFFERPOINTERVOESPROC nglGetBufferPointervOES;
336 extern PFNGLDRAWTEXFOESPROC nglDrawTexfOES;
338 // GL_OES_framebuffer_object
339 extern PFNGLISRENDERBUFFEROESPROC nglIsRenderbufferOES;
340 extern PFNGLBINDRENDERBUFFEROESPROC nglBindRenderbufferOES;
341 extern PFNGLDELETERENDERBUFFERSOESPROC nglDeleteRenderbuffersOES;
342 extern PFNGLGENRENDERBUFFERSOESPROC nglGenRenderbuffersOES;
343 extern PFNGLRENDERBUFFERSTORAGEOESPROC nglRenderbufferStorageOES;
344 extern PFNGLGETRENDERBUFFERPARAMETERIVOESPROC nglGetRenderbufferParameterivOES;
345 extern PFNGLISFRAMEBUFFEROESPROC nglIsFramebufferOES;
346 extern PFNGLBINDFRAMEBUFFEROESPROC nglBindFramebufferOES;
347 extern PFNGLDELETEFRAMEBUFFERSOESPROC nglDeleteFramebuffersOES;
348 extern PFNGLGENFRAMEBUFFERSOESPROC nglGenFramebuffersOES;
349 extern PFNGLCHECKFRAMEBUFFERSTATUSOESPROC nglCheckFramebufferStatusOES;
350 extern PFNGLFRAMEBUFFERRENDERBUFFEROESPROC nglFramebufferRenderbufferOES;
351 extern PFNGLFRAMEBUFFERTEXTURE2DOESPROC nglFramebufferTexture2DOES;
352 extern PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVOESPROC nglGetFramebufferAttachmentParameterivOES;
353 extern PFNGLGENERATEMIPMAPOESPROC nglGenerateMipmapOES;
355 // GL_OES_texture_cube_map
356 extern PFNGLTEXGENFOESPROC nglTexGenfOES;
357 extern PFNGLTEXGENFVOESPROC nglTexGenfvOES;
358 extern PFNGLTEXGENIOESPROC nglTexGeniOES;
359 extern PFNGLTEXGENIVOESPROC nglTexGenivOES;
360 extern PFNGLTEXGENXOESPROC nglTexGenxOES;
361 extern PFNGLTEXGENXVOESPROC nglTexGenxvOES;
362 extern PFNGLGETTEXGENFVOESPROC nglGetTexGenfvOES;
363 extern PFNGLGETTEXGENIVOESPROC nglGetTexGenivOES;
364 extern PFNGLGETTEXGENXVOESPROC nglGetTexGenxvOES;
366 #else
368 // ARB_multitexture
369 //=================
370 extern PFNGLACTIVETEXTUREARBPROC nglActiveTextureARB;
371 extern PFNGLCLIENTACTIVETEXTUREARBPROC nglClientActiveTextureARB;
373 extern PFNGLMULTITEXCOORD1SARBPROC nglMultiTexCoord1sARB;
374 extern PFNGLMULTITEXCOORD1IARBPROC nglMultiTexCoord1iARB;
375 extern PFNGLMULTITEXCOORD1FARBPROC nglMultiTexCoord1fARB;
376 extern PFNGLMULTITEXCOORD1FARBPROC nglMultiTexCoord1fARB;
377 extern PFNGLMULTITEXCOORD1DARBPROC nglMultiTexCoord1dARB;
378 extern PFNGLMULTITEXCOORD2SARBPROC nglMultiTexCoord2sARB;
379 extern PFNGLMULTITEXCOORD2IARBPROC nglMultiTexCoord2iARB;
380 extern PFNGLMULTITEXCOORD2FARBPROC nglMultiTexCoord2fARB;
381 extern PFNGLMULTITEXCOORD2DARBPROC nglMultiTexCoord2dARB;
382 extern PFNGLMULTITEXCOORD3SARBPROC nglMultiTexCoord3sARB;
383 extern PFNGLMULTITEXCOORD3IARBPROC nglMultiTexCoord3iARB;
384 extern PFNGLMULTITEXCOORD3FARBPROC nglMultiTexCoord3fARB;
385 extern PFNGLMULTITEXCOORD3DARBPROC nglMultiTexCoord3dARB;
386 extern PFNGLMULTITEXCOORD4SARBPROC nglMultiTexCoord4sARB;
387 extern PFNGLMULTITEXCOORD4IARBPROC nglMultiTexCoord4iARB;
388 extern PFNGLMULTITEXCOORD4FARBPROC nglMultiTexCoord4fARB;
389 extern PFNGLMULTITEXCOORD4DARBPROC nglMultiTexCoord4dARB;
391 extern PFNGLMULTITEXCOORD1SVARBPROC nglMultiTexCoord1svARB;
392 extern PFNGLMULTITEXCOORD1IVARBPROC nglMultiTexCoord1ivARB;
393 extern PFNGLMULTITEXCOORD1FVARBPROC nglMultiTexCoord1fvARB;
394 extern PFNGLMULTITEXCOORD1DVARBPROC nglMultiTexCoord1dvARB;
395 extern PFNGLMULTITEXCOORD2SVARBPROC nglMultiTexCoord2svARB;
396 extern PFNGLMULTITEXCOORD2IVARBPROC nglMultiTexCoord2ivARB;
397 extern PFNGLMULTITEXCOORD2FVARBPROC nglMultiTexCoord2fvARB;
398 extern PFNGLMULTITEXCOORD2DVARBPROC nglMultiTexCoord2dvARB;
399 extern PFNGLMULTITEXCOORD3SVARBPROC nglMultiTexCoord3svARB;
400 extern PFNGLMULTITEXCOORD3IVARBPROC nglMultiTexCoord3ivARB;
401 extern PFNGLMULTITEXCOORD3FVARBPROC nglMultiTexCoord3fvARB;
402 extern PFNGLMULTITEXCOORD3DVARBPROC nglMultiTexCoord3dvARB;
403 extern PFNGLMULTITEXCOORD4SVARBPROC nglMultiTexCoord4svARB;
404 extern PFNGLMULTITEXCOORD4IVARBPROC nglMultiTexCoord4ivARB;
405 extern PFNGLMULTITEXCOORD4FVARBPROC nglMultiTexCoord4fvARB;
406 extern PFNGLMULTITEXCOORD4DVARBPROC nglMultiTexCoord4dvARB;
409 // ARB_TextureCompression.
410 //========================
411 extern PFNGLCOMPRESSEDTEXIMAGE3DARBPROC nglCompressedTexImage3DARB;
412 extern PFNGLCOMPRESSEDTEXIMAGE2DARBPROC nglCompressedTexImage2DARB;
413 extern PFNGLCOMPRESSEDTEXIMAGE1DARBPROC nglCompressedTexImage1DARB;
414 extern PFNGLCOMPRESSEDTEXSUBIMAGE3DARBPROC nglCompressedTexSubImage3DARB;
415 extern PFNGLCOMPRESSEDTEXSUBIMAGE2DARBPROC nglCompressedTexSubImage2DARB;
416 extern PFNGLCOMPRESSEDTEXSUBIMAGE1DARBPROC nglCompressedTexSubImage1DARB;
417 extern PFNGLGETCOMPRESSEDTEXIMAGEARBPROC nglGetCompressedTexImageARB;
420 // VertexArrayRangeNV.
421 //====================
422 extern PFNGLFLUSHVERTEXARRAYRANGENVPROC nglFlushVertexArrayRangeNV;
423 extern PFNGLVERTEXARRAYRANGENVPROC nglVertexArrayRangeNV;
425 #ifdef NL_OS_WINDOWS
426 extern PFNWGLALLOCATEMEMORYNVPROC nwglAllocateMemoryNV;
427 extern PFNWGLFREEMEMORYNVPROC nwglFreeMemoryNV;
428 #elif defined(NL_OS_UNIX) && !defined(NL_OS_MAC)
429 extern PFNGLXALLOCATEMEMORYNVPROC nglXAllocateMemoryNV;
430 extern PFNGLXFREEMEMORYNVPROC nglXFreeMemoryNV;
431 #endif
434 // FenceNV.
435 //====================
436 extern PFNGLDELETEFENCESNVPROC nglDeleteFencesNV;
437 extern PFNGLGENFENCESNVPROC nglGenFencesNV;
438 extern PFNGLISFENCENVPROC nglIsFenceNV;
439 extern PFNGLTESTFENCENVPROC nglTestFenceNV;
440 extern PFNGLGETFENCEIVNVPROC nglGetFenceivNV;
441 extern PFNGLFINISHFENCENVPROC nglFinishFenceNV;
442 extern PFNGLSETFENCENVPROC nglSetFenceNV;
445 // VertexWeighting.
446 //==================
447 extern PFNGLVERTEXWEIGHTFEXTPROC nglVertexWeightfEXT;
448 extern PFNGLVERTEXWEIGHTFVEXTPROC nglVertexWeightfvEXT;
449 extern PFNGLVERTEXWEIGHTPOINTEREXTPROC nglVertexWeightPointerEXT;
452 // VertexProgramExtension.
453 //========================
454 extern PFNGLAREPROGRAMSRESIDENTNVPROC nglAreProgramsResidentNV;
455 extern PFNGLBINDPROGRAMNVPROC nglBindProgramNV;
456 extern PFNGLDELETEPROGRAMSNVPROC nglDeleteProgramsNV;
457 extern PFNGLEXECUTEPROGRAMNVPROC nglExecuteProgramNV;
458 extern PFNGLGENPROGRAMSNVPROC nglGenProgramsNV;
459 extern PFNGLGETPROGRAMPARAMETERDVNVPROC nglGetProgramParameterdvNV;
460 extern PFNGLGETPROGRAMPARAMETERFVNVPROC nglGetProgramParameterfvNV;
461 extern PFNGLGETPROGRAMIVNVPROC nglGetProgramivNV;
462 extern PFNGLGETPROGRAMSTRINGNVPROC nglGetProgramStringNV;
463 extern PFNGLGETTRACKMATRIXIVNVPROC nglGetTrackMatrixivNV;
464 extern PFNGLGETVERTEXATTRIBDVNVPROC nglGetVertexAttribdvNV;
465 extern PFNGLGETVERTEXATTRIBFVNVPROC nglGetVertexAttribfvNV;
466 extern PFNGLGETVERTEXATTRIBIVNVPROC nglGetVertexAttribivNV;
467 extern PFNGLGETVERTEXATTRIBPOINTERVNVPROC nglGetVertexAttribPointervNV;
468 extern PFNGLISPROGRAMNVPROC nglIsProgramNV;
469 extern PFNGLLOADPROGRAMNVPROC nglLoadProgramNV;
470 extern PFNGLPROGRAMPARAMETER4DNVPROC nglProgramParameter4dNV;
471 extern PFNGLPROGRAMPARAMETER4DVNVPROC nglProgramParameter4dvNV;
472 extern PFNGLPROGRAMPARAMETER4FNVPROC nglProgramParameter4fNV;
473 extern PFNGLPROGRAMPARAMETER4FVNVPROC nglProgramParameter4fvNV;
474 extern PFNGLPROGRAMPARAMETERS4DVNVPROC nglProgramParameters4dvNV;
475 extern PFNGLPROGRAMPARAMETERS4FVNVPROC nglProgramParameters4fvNV;
476 extern PFNGLREQUESTRESIDENTPROGRAMSNVPROC nglRequestResidentProgramsNV;
477 extern PFNGLTRACKMATRIXNVPROC nglTrackMatrixNV;
478 extern PFNGLVERTEXATTRIBPOINTERNVPROC nglVertexAttribPointerNV;
479 extern PFNGLVERTEXATTRIB1DNVPROC nglVertexAttrib1dNV;
480 extern PFNGLVERTEXATTRIB1DVNVPROC nglVertexAttrib1dvNV;
481 extern PFNGLVERTEXATTRIB1FNVPROC nglVertexAttrib1fNV;
482 extern PFNGLVERTEXATTRIB1FVNVPROC nglVertexAttrib1fvNV;
483 extern PFNGLVERTEXATTRIB1SNVPROC nglVertexAttrib1sNV;
484 extern PFNGLVERTEXATTRIB1SVNVPROC nglVertexAttrib1svNV;
485 extern PFNGLVERTEXATTRIB2DNVPROC nglVertexAttrib2dNV;
486 extern PFNGLVERTEXATTRIB2DVNVPROC nglVertexAttrib2dvNV;
487 extern PFNGLVERTEXATTRIB2FNVPROC nglVertexAttrib2fNV;
488 extern PFNGLVERTEXATTRIB2FVNVPROC nglVertexAttrib2fvNV;
489 extern PFNGLVERTEXATTRIB2SNVPROC nglVertexAttrib2sNV;
490 extern PFNGLVERTEXATTRIB2SVNVPROC nglVertexAttrib2svNV;
491 extern PFNGLVERTEXATTRIB3DNVPROC nglVertexAttrib3dNV;
492 extern PFNGLVERTEXATTRIB3DVNVPROC nglVertexAttrib3dvNV;
493 extern PFNGLVERTEXATTRIB3FNVPROC nglVertexAttrib3fNV;
494 extern PFNGLVERTEXATTRIB3FVNVPROC nglVertexAttrib3fvNV;
495 extern PFNGLVERTEXATTRIB3SNVPROC nglVertexAttrib3sNV;
496 extern PFNGLVERTEXATTRIB3SVNVPROC nglVertexAttrib3svNV;
497 extern PFNGLVERTEXATTRIB4DNVPROC nglVertexAttrib4dNV;
498 extern PFNGLVERTEXATTRIB4DVNVPROC nglVertexAttrib4dvNV;
499 extern PFNGLVERTEXATTRIB4FNVPROC nglVertexAttrib4fNV;
500 extern PFNGLVERTEXATTRIB4FVNVPROC nglVertexAttrib4fvNV;
501 extern PFNGLVERTEXATTRIB4SNVPROC nglVertexAttrib4sNV;
502 extern PFNGLVERTEXATTRIB4SVNVPROC nglVertexAttrib4svNV;
503 extern PFNGLVERTEXATTRIB4UBVNVPROC nglVertexAttrib4ubvNV;
504 extern PFNGLVERTEXATTRIBS1DVNVPROC nglVertexAttribs1dvNV;
505 extern PFNGLVERTEXATTRIBS1FVNVPROC nglVertexAttribs1fvNV;
506 extern PFNGLVERTEXATTRIBS1SVNVPROC nglVertexAttribs1svNV;
507 extern PFNGLVERTEXATTRIBS2DVNVPROC nglVertexAttribs2dvNV;
508 extern PFNGLVERTEXATTRIBS2FVNVPROC nglVertexAttribs2fvNV;
509 extern PFNGLVERTEXATTRIBS2SVNVPROC nglVertexAttribs2svNV;
510 extern PFNGLVERTEXATTRIBS3DVNVPROC nglVertexAttribs3dvNV;
511 extern PFNGLVERTEXATTRIBS3FVNVPROC nglVertexAttribs3fvNV;
512 extern PFNGLVERTEXATTRIBS3SVNVPROC nglVertexAttribs3svNV;
513 extern PFNGLVERTEXATTRIBS4DVNVPROC nglVertexAttribs4dvNV;
514 extern PFNGLVERTEXATTRIBS4FVNVPROC nglVertexAttribs4fvNV;
515 extern PFNGLVERTEXATTRIBS4SVNVPROC nglVertexAttribs4svNV;
516 extern PFNGLVERTEXATTRIBS4UBVNVPROC nglVertexAttribs4ubvNV;
518 // VertexShaderExtension.
519 //========================
520 extern PFNGLBEGINVERTEXSHADEREXTPROC nglBeginVertexShaderEXT;
521 extern PFNGLENDVERTEXSHADEREXTPROC nglEndVertexShaderEXT;
522 extern PFNGLBINDVERTEXSHADEREXTPROC nglBindVertexShaderEXT;
523 extern PFNGLGENVERTEXSHADERSEXTPROC nglGenVertexShadersEXT;
524 extern PFNGLDELETEVERTEXSHADEREXTPROC nglDeleteVertexShaderEXT;
525 extern PFNGLSHADEROP1EXTPROC nglShaderOp1EXT;
526 extern PFNGLSHADEROP2EXTPROC nglShaderOp2EXT;
527 extern PFNGLSHADEROP3EXTPROC nglShaderOp3EXT;
528 extern PFNGLSWIZZLEEXTPROC nglSwizzleEXT;
529 extern PFNGLWRITEMASKEXTPROC nglWriteMaskEXT;
530 extern PFNGLINSERTCOMPONENTEXTPROC nglInsertComponentEXT;
531 extern PFNGLEXTRACTCOMPONENTEXTPROC nglExtractComponentEXT;
532 extern PFNGLGENSYMBOLSEXTPROC nglGenSymbolsEXT;
533 extern PFNGLSETINVARIANTEXTPROC nglSetInvariantEXT;
534 extern PFNGLSETLOCALCONSTANTEXTPROC nglSetLocalConstantEXT;
535 extern PFNGLVARIANTPOINTEREXTPROC nglVariantPointerEXT;
536 extern PFNGLENABLEVARIANTCLIENTSTATEEXTPROC nglEnableVariantClientStateEXT;
537 extern PFNGLDISABLEVARIANTCLIENTSTATEEXTPROC nglDisableVariantClientStateEXT;
538 extern PFNGLBINDLIGHTPARAMETEREXTPROC nglBindLightParameterEXT;
539 extern PFNGLBINDMATERIALPARAMETEREXTPROC nglBindMaterialParameterEXT;
540 extern PFNGLBINDTEXGENPARAMETEREXTPROC nglBindTexGenParameterEXT;
541 extern PFNGLBINDTEXTUREUNITPARAMETEREXTPROC nglBindTextureUnitParameterEXT;
542 extern PFNGLBINDPARAMETEREXTPROC nglBindParameterEXT;
543 extern PFNGLISVARIANTENABLEDEXTPROC nglIsVariantEnabledEXT;
544 extern PFNGLGETVARIANTBOOLEANVEXTPROC nglGetVariantBooleanvEXT;
545 extern PFNGLGETVARIANTINTEGERVEXTPROC nglGetVariantIntegervEXT;
546 extern PFNGLGETVARIANTFLOATVEXTPROC nglGetVariantFloatvEXT;
547 extern PFNGLGETVARIANTPOINTERVEXTPROC nglGetVariantPointervEXT;
548 extern PFNGLGETINVARIANTBOOLEANVEXTPROC nglGetInvariantBooleanvEXT;
549 extern PFNGLGETINVARIANTINTEGERVEXTPROC nglGetInvariantIntegervEXT;
550 extern PFNGLGETINVARIANTFLOATVEXTPROC nglGetInvariantFloatvEXT;
551 extern PFNGLGETLOCALCONSTANTBOOLEANVEXTPROC nglGetLocalConstantBooleanvEXT;
552 extern PFNGLGETLOCALCONSTANTINTEGERVEXTPROC nglGetLocalConstantIntegervEXT;
553 extern PFNGLGETLOCALCONSTANTFLOATVEXTPROC nglGetLocalConstantFloatvEXT;
556 // ATI_envmap_bumpmap extension
558 extern PFNGLTEXBUMPPARAMETERIVATIPROC nglTexBumpParameterivATI;
559 extern PFNGLTEXBUMPPARAMETERFVATIPROC nglTexBumpParameterfvATI;
560 extern PFNGLGETTEXBUMPPARAMETERIVATIPROC nglGetTexBumpParameterivATI;
561 extern PFNGLGETTEXBUMPPARAMETERFVATIPROC nglGetTexBumpParameterfvATI;
564 // SecondaryColor extension
565 //========================
566 extern PFNGLSECONDARYCOLOR3BEXTPROC nglSecondaryColor3bEXT;
567 extern PFNGLSECONDARYCOLOR3BVEXTPROC nglSecondaryColor3bvEXT;
568 extern PFNGLSECONDARYCOLOR3DEXTPROC nglSecondaryColor3dEXT;
569 extern PFNGLSECONDARYCOLOR3DVEXTPROC nglSecondaryColor3dvEXT;
570 extern PFNGLSECONDARYCOLOR3FEXTPROC nglSecondaryColor3fEXT;
571 extern PFNGLSECONDARYCOLOR3FVEXTPROC nglSecondaryColor3fvEXT;
572 extern PFNGLSECONDARYCOLOR3IEXTPROC nglSecondaryColor3iEXT;
573 extern PFNGLSECONDARYCOLOR3IVEXTPROC nglSecondaryColor3ivEXT;
574 extern PFNGLSECONDARYCOLOR3SEXTPROC nglSecondaryColor3sEXT;
575 extern PFNGLSECONDARYCOLOR3SVEXTPROC nglSecondaryColor3svEXT;
576 extern PFNGLSECONDARYCOLOR3UBEXTPROC nglSecondaryColor3ubEXT;
577 extern PFNGLSECONDARYCOLOR3UBVEXTPROC nglSecondaryColor3ubvEXT;
578 extern PFNGLSECONDARYCOLOR3UIEXTPROC nglSecondaryColor3uiEXT;
579 extern PFNGLSECONDARYCOLOR3UIVEXTPROC nglSecondaryColor3uivEXT;
580 extern PFNGLSECONDARYCOLOR3USEXTPROC nglSecondaryColor3usEXT;
581 extern PFNGLSECONDARYCOLOR3USVEXTPROC nglSecondaryColor3usvEXT;
582 extern PFNGLSECONDARYCOLORPOINTEREXTPROC nglSecondaryColorPointerEXT;
585 // BlendColor extension
586 //========================
587 extern PFNGLBLENDCOLOREXTPROC nglBlendColorEXT;
590 // GL_ATI_vertex_array_object extension
591 //========================
592 extern PFNGLNEWOBJECTBUFFERATIPROC nglNewObjectBufferATI;
593 extern PFNGLISOBJECTBUFFERATIPROC nglIsObjectBufferATI;
594 extern PFNGLUPDATEOBJECTBUFFERATIPROC nglUpdateObjectBufferATI;
595 extern PFNGLGETOBJECTBUFFERFVATIPROC nglGetObjectBufferfvATI;
596 extern PFNGLGETOBJECTBUFFERIVATIPROC nglGetObjectBufferivATI;
597 extern PFNGLFREEOBJECTBUFFERATIPROC nglFreeObjectBufferATI;
598 extern PFNGLARRAYOBJECTATIPROC nglArrayObjectATI;
599 extern PFNGLGETARRAYOBJECTFVATIPROC nglGetArrayObjectfvATI;
600 extern PFNGLGETARRAYOBJECTIVATIPROC nglGetArrayObjectivATI;
601 extern PFNGLVARIANTARRAYOBJECTATIPROC nglVariantArrayObjectATI;
602 extern PFNGLGETVARIANTARRAYOBJECTFVATIPROC nglGetVariantArrayObjectfvATI;
603 extern PFNGLGETVARIANTARRAYOBJECTIVATIPROC nglGetVariantArrayObjectivATI;
605 // GL_ATI_map_object_buffer
606 //===================================
608 extern PFNGLMAPOBJECTBUFFERATIPROC nglMapObjectBufferATI;
609 extern PFNGLUNMAPOBJECTBUFFERATIPROC nglUnmapObjectBufferATI;
612 // GL_ATI_fragment_shader extension
613 //===================================
615 extern PFNGLGENFRAGMENTSHADERSATIPROC nglGenFragmentShadersATI;
616 extern PFNGLBINDFRAGMENTSHADERATIPROC nglBindFragmentShaderATI;
617 extern PFNGLDELETEFRAGMENTSHADERATIPROC nglDeleteFragmentShaderATI;
618 extern PFNGLBEGINFRAGMENTSHADERATIPROC nglBeginFragmentShaderATI;
619 extern PFNGLENDFRAGMENTSHADERATIPROC nglEndFragmentShaderATI;
620 extern PFNGLPASSTEXCOORDATIPROC nglPassTexCoordATI;
621 extern PFNGLSAMPLEMAPATIPROC nglSampleMapATI;
622 extern PFNGLCOLORFRAGMENTOP1ATIPROC nglColorFragmentOp1ATI;
623 extern PFNGLCOLORFRAGMENTOP2ATIPROC nglColorFragmentOp2ATI;
624 extern PFNGLCOLORFRAGMENTOP3ATIPROC nglColorFragmentOp3ATI;
625 extern PFNGLALPHAFRAGMENTOP1ATIPROC nglAlphaFragmentOp1ATI;
626 extern PFNGLALPHAFRAGMENTOP2ATIPROC nglAlphaFragmentOp2ATI;
627 extern PFNGLALPHAFRAGMENTOP3ATIPROC nglAlphaFragmentOp3ATI;
628 extern PFNGLSETFRAGMENTSHADERCONSTANTATIPROC nglSetFragmentShaderConstantATI;
630 // GL_ATI_vertex_attrib_array_object
631 //==================================
632 extern PFNGLVERTEXATTRIBARRAYOBJECTATIPROC nglVertexAttribArrayObjectATI;
633 extern PFNGLGETVERTEXATTRIBARRAYOBJECTFVATIPROC nglGetVertexAttribArrayObjectfvATI;
634 extern PFNGLGETVERTEXATTRIBARRAYOBJECTIVATIPROC nglGetVertexAttribArrayObjectivATI;
639 // GL_ARB_fragment_shader_extension
640 //==================================
641 extern PFNGLPROGRAMSTRINGARBPROC nglProgramStringARB;
642 extern PFNGLBINDPROGRAMARBPROC nglBindProgramARB;
643 extern PFNGLDELETEPROGRAMSARBPROC nglDeleteProgramsARB;
644 extern PFNGLGENPROGRAMSARBPROC nglGenProgramsARB;
645 extern PFNGLPROGRAMENVPARAMETER4DARBPROC nglProgramEnvParameter4dARB;
646 extern PFNGLPROGRAMENVPARAMETER4DVARBPROC nglProgramEnvParameter4dvARB;
647 extern PFNGLPROGRAMENVPARAMETER4FARBPROC nglProgramEnvParameter4fARB;
648 extern PFNGLPROGRAMENVPARAMETER4FVARBPROC nglProgramEnvParameter4fvARB;
649 extern PFNGLPROGRAMLOCALPARAMETER4DARBPROC nglGetProgramLocalParameter4dARB;
650 extern PFNGLPROGRAMLOCALPARAMETER4DVARBPROC nglGetProgramLocalParameter4dvARB;
651 extern PFNGLPROGRAMLOCALPARAMETER4FARBPROC nglGetProgramLocalParameter4fARB;
652 extern PFNGLPROGRAMLOCALPARAMETER4FVARBPROC nglGetProgramLocalParameter4fvARB;
653 extern PFNGLGETPROGRAMENVPARAMETERDVARBPROC nglGetProgramEnvParameterdvARB;
654 extern PFNGLGETPROGRAMENVPARAMETERFVARBPROC nglGetProgramEnvParameterfvARB;
655 extern PFNGLGETPROGRAMLOCALPARAMETERDVARBPROC nglGetProgramLocalParameterdvARB;
656 extern PFNGLGETPROGRAMLOCALPARAMETERFVARBPROC nglGetProgramLocalParameterfvARB;
657 extern PFNGLGETPROGRAMIVARBPROC nglGetProgramivARB;
658 extern PFNGLGETPROGRAMSTRINGARBPROC nglGetProgramStringARB;
659 extern PFNGLISPROGRAMARBPROC nglIsProgramARB;
661 // GL_ARB_vertex_buffer_object
662 //==================================
663 extern PFNGLBINDBUFFERARBPROC nglBindBufferARB;
664 extern PFNGLDELETEBUFFERSARBPROC nglDeleteBuffersARB;
665 extern PFNGLGENBUFFERSARBPROC nglGenBuffersARB;
666 extern PFNGLISBUFFERARBPROC nglIsBufferARB;
667 extern PFNGLBUFFERDATAARBPROC nglBufferDataARB;
668 extern PFNGLBUFFERSUBDATAARBPROC nglBufferSubDataARB;
669 extern PFNGLGETBUFFERSUBDATAARBPROC nglGetBufferSubDataARB;
670 extern PFNGLMAPBUFFERARBPROC nglMapBufferARB;
671 extern PFNGLUNMAPBUFFERARBPROC nglUnmapBufferARB;
672 extern PFNGLGETBUFFERPARAMETERIVARBPROC nglGetBufferParameterivARB;
673 extern PFNGLGETBUFFERPOINTERVARBPROC nglGetBufferPointervARB;
675 // GL_ARB_map_buffer_range
676 //==================================
677 extern PFNGLMAPBUFFERRANGEPROC nglMapBufferRange;
678 extern PFNGLFLUSHMAPPEDBUFFERRANGEPROC nglFlushMappedBufferRange;
680 // GL_ARB_vertex_program
681 //==================================
682 extern PFNGLVERTEXATTRIB1SARBPROC nglVertexAttrib1sARB;
683 extern PFNGLVERTEXATTRIB1FARBPROC nglVertexAttrib1fARB;
684 extern PFNGLVERTEXATTRIB1DARBPROC nglVertexAttrib1dARB;
685 extern PFNGLVERTEXATTRIB2SARBPROC nglVertexAttrib2sARB;
686 extern PFNGLVERTEXATTRIB2FARBPROC nglVertexAttrib2fARB;
687 extern PFNGLVERTEXATTRIB2DARBPROC nglVertexAttrib2dARB;
688 extern PFNGLVERTEXATTRIB3SARBPROC nglVertexAttrib3sARB;
689 extern PFNGLVERTEXATTRIB3FARBPROC nglVertexAttrib3fARB;
690 extern PFNGLVERTEXATTRIB3DARBPROC nglVertexAttrib3dARB;
691 extern PFNGLVERTEXATTRIB4SARBPROC nglVertexAttrib4sARB;
692 extern PFNGLVERTEXATTRIB4FARBPROC nglVertexAttrib4fARB;
693 extern PFNGLVERTEXATTRIB4DARBPROC nglVertexAttrib4dARB;
694 extern PFNGLVERTEXATTRIB4NUBARBPROC nglVertexAttrib4NubARB;
695 extern PFNGLVERTEXATTRIB1SVARBPROC nglVertexAttrib1svARB;
696 extern PFNGLVERTEXATTRIB1FVARBPROC nglVertexAttrib1fvARB;
697 extern PFNGLVERTEXATTRIB1DVARBPROC nglVertexAttrib1dvARB;
698 extern PFNGLVERTEXATTRIB2SVARBPROC nglVertexAttrib2svARB;
699 extern PFNGLVERTEXATTRIB2FVARBPROC nglVertexAttrib2fvARB;
700 extern PFNGLVERTEXATTRIB2DVARBPROC nglVertexAttrib2dvARB;
701 extern PFNGLVERTEXATTRIB3SVARBPROC nglVertexAttrib3svARB;
702 extern PFNGLVERTEXATTRIB3FVARBPROC nglVertexAttrib3fvARB;
703 extern PFNGLVERTEXATTRIB3DVARBPROC nglVertexAttrib3dvARB;
704 extern PFNGLVERTEXATTRIB4BVARBPROC nglVertexAttrib4bvARB;
705 extern PFNGLVERTEXATTRIB4SVARBPROC nglVertexAttrib4svARB;
706 extern PFNGLVERTEXATTRIB4IVARBPROC nglVertexAttrib4ivARB;
707 extern PFNGLVERTEXATTRIB4UBVARBPROC nglVertexAttrib4ubvARB;
708 extern PFNGLVERTEXATTRIB4USVARBPROC nglVertexAttrib4usvARB;
709 extern PFNGLVERTEXATTRIB4UIVARBPROC nglVertexAttrib4uivARB;
710 extern PFNGLVERTEXATTRIB4FVARBPROC nglVertexAttrib4fvARB;
711 extern PFNGLVERTEXATTRIB4DVARBPROC nglVertexAttrib4dvARB;
712 extern PFNGLVERTEXATTRIB4NBVARBPROC nglVertexAttrib4NbvARB;
713 extern PFNGLVERTEXATTRIB4NSVARBPROC nglVertexAttrib4NsvARB;
714 extern PFNGLVERTEXATTRIB4NIVARBPROC nglVertexAttrib4NivARB;
715 extern PFNGLVERTEXATTRIB4NUBVARBPROC nglVertexAttrib4NubvARB;
716 extern PFNGLVERTEXATTRIB4NUSVARBPROC nglVertexAttrib4NusvARB;
717 extern PFNGLVERTEXATTRIB4NUIVARBPROC nglVertexAttrib4NuivARB;
718 extern PFNGLVERTEXATTRIBPOINTERARBPROC nglVertexAttribPointerARB;
719 extern PFNGLENABLEVERTEXATTRIBARRAYARBPROC nglEnableVertexAttribArrayARB;
720 extern PFNGLDISABLEVERTEXATTRIBARRAYARBPROC nglDisableVertexAttribArrayARB;
721 extern PFNGLPROGRAMSTRINGARBPROC nglProgramStringARB;
722 extern PFNGLBINDPROGRAMARBPROC nglBindProgramARB;
723 extern PFNGLDELETEPROGRAMSARBPROC nglDeleteProgramsARB;
724 extern PFNGLGENPROGRAMSARBPROC nglGenProgramsARB;
725 extern PFNGLPROGRAMENVPARAMETER4FARBPROC nglProgramEnvParameter4fARB;
726 extern PFNGLPROGRAMENVPARAMETER4DARBPROC nglProgramEnvParameter4dARB;
727 extern PFNGLPROGRAMENVPARAMETER4FVARBPROC nglProgramEnvParameter4fvARB;
728 extern PFNGLPROGRAMENVPARAMETER4DVARBPROC nglProgramEnvParameter4dvARB;
729 extern PFNGLPROGRAMLOCALPARAMETER4FARBPROC nglProgramLocalParameter4fARB;
730 extern PFNGLPROGRAMLOCALPARAMETER4DARBPROC nglProgramLocalParameter4dARB;
731 extern PFNGLPROGRAMLOCALPARAMETER4FVARBPROC nglProgramLocalParameter4fvARB;
732 extern PFNGLPROGRAMLOCALPARAMETER4DVARBPROC nglProgramLocalParameter4dvARB;
733 extern PFNGLGETPROGRAMENVPARAMETERFVARBPROC nglGetProgramEnvParameterfvARB;
734 extern PFNGLGETPROGRAMENVPARAMETERDVARBPROC nglGetProgramEnvParameterdvARB;
735 extern PFNGLGETPROGRAMLOCALPARAMETERFVARBPROC nglGetProgramLocalParameterfvARB;
736 extern PFNGLGETPROGRAMLOCALPARAMETERDVARBPROC nglGetProgramLocalParameterdvARB;
737 extern PFNGLGETPROGRAMIVARBPROC nglGetProgramivARB;
738 extern PFNGLGETPROGRAMSTRINGARBPROC nglGetProgramStringARB;
739 extern PFNGLGETVERTEXATTRIBDVARBPROC nglGetVertexAttribdvARB;
740 extern PFNGLGETVERTEXATTRIBFVARBPROC nglGetVertexAttribfvARB;
741 extern PFNGLGETVERTEXATTRIBIVARBPROC nglGetVertexAttribivARB;
742 extern PFNGLGETVERTEXATTRIBPOINTERVARBPROC nglGetVertexAttribPointervARB;
743 extern PFNGLISPROGRAMARBPROC nglIsProgramARB;
745 // GL_NV_occlusion_query
746 //==================================
747 extern PFNGLGENOCCLUSIONQUERIESNVPROC nglGenOcclusionQueriesNV;
748 extern PFNGLDELETEOCCLUSIONQUERIESNVPROC nglDeleteOcclusionQueriesNV;
749 extern PFNGLISOCCLUSIONQUERYNVPROC nglIsOcclusionQueryNV;
750 extern PFNGLBEGINOCCLUSIONQUERYNVPROC nglBeginOcclusionQueryNV;
751 extern PFNGLENDOCCLUSIONQUERYNVPROC nglEndOcclusionQueryNV;
752 extern PFNGLGETOCCLUSIONQUERYIVNVPROC nglGetOcclusionQueryivNV;
753 extern PFNGLGETOCCLUSIONQUERYUIVNVPROC nglGetOcclusionQueryuivNV;
755 // ARB_occlusion_query
756 //==================================
757 extern PFNGLGENQUERIESARBPROC nglGenQueriesARB;
758 extern PFNGLDELETEQUERIESARBPROC nglDeleteQueriesARB;
759 extern PFNGLISQUERYARBPROC nglIsQueryARB;
760 extern PFNGLBEGINQUERYARBPROC nglBeginQueryARB;
761 extern PFNGLENDQUERYARBPROC nglEndQueryARB;
762 extern PFNGLGETQUERYIVARBPROC nglGetQueryivARB;
763 extern PFNGLGETQUERYOBJECTIVARBPROC nglGetQueryObjectivARB;
764 extern PFNGLGETQUERYOBJECTUIVARBPROC nglGetQueryObjectuivARB;
766 #ifdef NL_OS_WINDOWS
768 // Pbuffer extension
769 //==================
770 extern PFNWGLCREATEPBUFFERARBPROC nwglCreatePbufferARB;
771 extern PFNWGLGETPBUFFERDCARBPROC nwglGetPbufferDCARB;
772 extern PFNWGLRELEASEPBUFFERDCARBPROC nwglReleasePbufferDCARB;
773 extern PFNWGLDESTROYPBUFFERARBPROC nwglDestroyPbufferARB;
774 extern PFNWGLQUERYPBUFFERARBPROC nwglQueryPbufferARB;
777 // Get Pixel format extension
778 //===========================
779 extern PFNWGLGETPIXELFORMATATTRIBIVARBPROC nwglGetPixelFormatAttribivARB;
780 extern PFNWGLGETPIXELFORMATATTRIBFVARBPROC nwglGetPixelFormatAttribfvARB;
781 extern PFNWGLCHOOSEPIXELFORMATARBPROC nwglChoosePixelFormatARB;
784 // Swap control extension
785 //===========================
786 extern PFNWGLSWAPINTERVALEXTPROC nwglSwapIntervalEXT;
787 extern PFNWGLGETSWAPINTERVALEXTPROC nwglGetSwapIntervalEXT;
790 // WGL_ARB_extensions_string
791 extern PFNWGLGETEXTENSIONSSTRINGARBPROC nwglGetExtensionsStringARB;
794 // WGL_AMD_gpu_association
795 //========================
796 extern PFNWGLGETGPUIDSAMDPROC nwglGetGPUIDsAMD;
797 extern PFNWGLGETGPUINFOAMDPROC nwglGetGPUInfoAMD;
798 extern PFNWGLGETCONTEXTGPUIDAMDPROC nwglGetContextGPUIDAMD;
799 extern PFNWGLCREATEASSOCIATEDCONTEXTAMDPROC nwglCreateAssociatedContextAMD;
800 extern PFNWGLCREATEASSOCIATEDCONTEXTATTRIBSAMDPROC nwglCreateAssociatedContextAttribsAMD;
801 extern PFNWGLDELETEASSOCIATEDCONTEXTAMDPROC nwglDeleteAssociatedContextAMD;
802 extern PFNWGLMAKEASSOCIATEDCONTEXTCURRENTAMDPROC nwglMakeAssociatedContextCurrentAMD;
803 extern PFNWGLGETCURRENTASSOCIATEDCONTEXTAMDPROC nwglGetCurrentAssociatedContextAMD;
804 extern PFNWGLBLITCONTEXTFRAMEBUFFERAMDPROC nwglBlitContextFramebufferAMD;
806 // WGL_NV_gpu_affinity
807 //====================
808 extern PFNWGLENUMGPUSNVPROC nwglEnumGpusNV;
809 extern PFNWGLENUMGPUDEVICESNVPROC nwglEnumGpuDevicesNV;
810 extern PFNWGLCREATEAFFINITYDCNVPROC nwglCreateAffinityDCNV;
811 extern PFNWGLENUMGPUSFROMAFFINITYDCNVPROC nwglEnumGpusFromAffinityDCNV;
812 extern PFNWGLDELETEDCNVPROC nwglDeleteDCNV;
814 #elif defined(NL_OS_MAC)
815 #elif defined(NL_OS_UNIX)
817 // Swap control extensions
818 //===========================
819 extern PFNGLXSWAPINTERVALEXTPROC nglXSwapIntervalEXT;
821 extern PFNGLXSWAPINTERVALSGIPROC nglXSwapIntervalSGI;
823 extern PFNGLXSWAPINTERVALMESAPROC nglXSwapIntervalMESA;
824 extern PFNGLXGETSWAPINTERVALMESAPROC nglXGetSwapIntervalMESA;
826 // GLX_MESA_query_renderer
827 // =======================
828 extern PFNGLXQUERYCURRENTRENDERERINTEGERMESAPROC nglXQueryCurrentRendererIntegerMESA;
830 #endif
832 // GL_EXT_framebuffer_object
833 extern PFNGLISRENDERBUFFEREXTPROC nglIsRenderbufferEXT;
834 extern PFNGLISFRAMEBUFFEREXTPROC nglIsFramebufferEXT;
835 extern PFNGLCHECKFRAMEBUFFERSTATUSEXTPROC nglCheckFramebufferStatusEXT;
836 extern PFNGLGENFRAMEBUFFERSEXTPROC nglGenFramebuffersEXT;
837 extern PFNGLBINDFRAMEBUFFEREXTPROC nglBindFramebufferEXT;
838 extern PFNGLFRAMEBUFFERTEXTURE2DEXTPROC nglFramebufferTexture2DEXT;
839 extern PFNGLGENRENDERBUFFERSEXTPROC nglGenRenderbuffersEXT;
840 extern PFNGLBINDRENDERBUFFEREXTPROC nglBindRenderbufferEXT;
841 extern PFNGLRENDERBUFFERSTORAGEEXTPROC nglRenderbufferStorageEXT;
842 extern PFNGLFRAMEBUFFERRENDERBUFFEREXTPROC nglFramebufferRenderbufferEXT;
843 extern PFNGLDELETERENDERBUFFERSEXTPROC nglDeleteRenderbuffersEXT;
844 extern PFNGLDELETEFRAMEBUFFERSEXTPROC nglDeleteFramebuffersEXT;
845 extern PFNGLGETRENDERBUFFERPARAMETERIVEXTPROC nglGetRenderbufferParameterivEXT;
846 extern PFNGLGENERATEMIPMAPEXTPROC nglGenerateMipmapEXT;
848 // GL_EXT_framebuffer_blit
849 extern PFNGLBLITFRAMEBUFFEREXTPROC nglBlitFramebufferEXT;
851 // GL_EXT_framebuffer_multisample
852 extern PFNGLRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC nglRenderbufferStorageMultisampleEXT;
854 // GL_ARB_multisample
855 extern PFNGLSAMPLECOVERAGEARBPROC nglSampleCoverageARB;
857 #endif // USE_OPENGLES
859 #endif // NL_OPENGL_EXTENSION_H