source: trunk/src/lib/gl.cc @ 5

Last change on this file since 5 was 5, checked in by epyon, 12 years ago
  • nv/lib/*.hh - dynamic/static/shared headers for OpenGL, Lua, SDL and SDL_image
  • nv/lib/*.hh - implementation for dynamic versions
  • all libraries may be used in dynamic, static or shared mode, depending on defines
  • static mode is inclusion of the library into the executable
  • shared mode is the usual compile time linking to a shared library
  • dynamic mode is runtime linking at will
File size: 21.7 KB
Line 
1// Copyright (C) 2012-2013 ChaosForge / Kornel Kisielewicz
2// http://chaosforge.org/
3//
4// This file is part of NV Libraries.
5// For conditions of distribution and use, see copyright notice in nv.hh
6
7#include "nv/lib/gl.hh"
8
9#if defined( NV_GL_DYNAMIC )
10
11#include "nv/library.hh"
12
13#if defined( NV_SDL_GL )
14#       include "nv/lib/sdl12.hh"
15#endif
16
17/* OpenGL 1.1 non-deprecated functions */
18void (NV_GL_APIENTRY *glCullFace) ( GLenum ) = nullptr;
19void (NV_GL_APIENTRY *glFrontFace) ( GLenum ) = nullptr;
20void (NV_GL_APIENTRY *glHint) ( GLenum, GLenum ) = nullptr;
21void (NV_GL_APIENTRY *glLineWidth) ( GLfloat ) = nullptr;
22void (NV_GL_APIENTRY *glPointSize) ( GLfloat ) = nullptr;
23void (NV_GL_APIENTRY *glPolygonMode) ( GLenum, GLenum ) = nullptr;
24void (NV_GL_APIENTRY *glScissor) ( GLint , GLint , GLsizei , GLsizei ) = nullptr;
25void (NV_GL_APIENTRY *glTexParameterf) ( GLenum , GLenum , GLfloat ) = nullptr;
26void (NV_GL_APIENTRY *glTexParameterfv) ( GLenum , GLenum , const GLint *) = nullptr;
27void (NV_GL_APIENTRY *glTexParameteri) ( GLenum , GLenum , GLfloat ) = nullptr;
28void (NV_GL_APIENTRY *glTexParameteriv) ( GLenum , GLenum , const GLint *) = nullptr;
29void (NV_GL_APIENTRY *glTexImage1D) ( GLenum , GLint , GLint , GLsizei , GLint , GLenum , GLenum , const GLvoid *) = nullptr;
30void (NV_GL_APIENTRY *glTexImage2D) ( GLenum , GLint , GLint , GLsizei , GLsizei , GLint , GLenum , GLenum , const GLvoid *) = nullptr;
31void (NV_GL_APIENTRY *glDrawBuffer) ( GLenum ) = nullptr;
32void (NV_GL_APIENTRY *glClear) ( GLbitfield ) = nullptr;
33void (NV_GL_APIENTRY *glClearColor) ( GLfloat , GLfloat , GLfloat , GLfloat ) = nullptr;
34void (NV_GL_APIENTRY *glClearStencil) ( GLint ) = nullptr;
35void (NV_GL_APIENTRY *glClearDepth) ( GLdouble ) = nullptr;
36void (NV_GL_APIENTRY *glStencilMask) ( GLuint ) = nullptr;
37void (NV_GL_APIENTRY *glColorMask) ( GLboolean , GLboolean , GLboolean , GLboolean ) = nullptr;
38void (NV_GL_APIENTRY *glDepthMask) ( GLboolean ) = nullptr;
39void (NV_GL_APIENTRY *glDisable) ( GLenum ) = nullptr;
40void (NV_GL_APIENTRY *glEnable) ( GLenum ) = nullptr;
41void (NV_GL_APIENTRY *glFinish) ( void ) = nullptr;
42void (NV_GL_APIENTRY *glFlush) ( void ) = nullptr;
43void (NV_GL_APIENTRY *glBlendFunc) ( GLenum, GLenum ) = nullptr;
44void (NV_GL_APIENTRY *glLogicOp) ( GLenum ) = nullptr;
45void (NV_GL_APIENTRY *glStencilFunc) ( GLenum , GLint , GLuint ) = nullptr;
46void (NV_GL_APIENTRY *glStencilOp) ( GLenum , GLenum , GLenum ) = nullptr;
47void (NV_GL_APIENTRY *glDepthFunc) ( GLenum ) = nullptr;
48void (NV_GL_APIENTRY *glPixelStoref) ( GLenum , GLfloat ) = nullptr;
49void (NV_GL_APIENTRY *glPixelStorei) ( GLenum , GLint ) = nullptr;
50void (NV_GL_APIENTRY *glReadBuffer) ( GLenum ) = nullptr;
51void (NV_GL_APIENTRY *glReadPixels) ( GLint , GLint , GLsizei , GLsizei , GLenum , GLenum , GLvoid *) = nullptr;
52void (NV_GL_APIENTRY *glGetBooleanv) ( GLenum , GLboolean *) = nullptr;
53void (NV_GL_APIENTRY *glGetDoublev) ( GLenum , GLdouble *) = nullptr;
54GLenum (NV_GL_APIENTRY *glGetError) ( void ) = nullptr;
55void (NV_GL_APIENTRY *glGetFloatv) ( GLenum , GLfloat *) = nullptr;
56void (NV_GL_APIENTRY *glGetIntegerv) ( GLenum , GLint *) = nullptr;
57const GLubyte * (NV_GL_APIENTRY *glGetString) ( GLenum ) = nullptr;
58void (NV_GL_APIENTRY *glGetTexImage) ( GLenum , GLint , GLenum , GLenum , GLvoid *) = nullptr;
59void (NV_GL_APIENTRY *glGetTexParameterfv) ( GLenum , GLenum , GLfloat *) = nullptr;
60void (NV_GL_APIENTRY *glGetTexParameteriv) ( GLenum , GLenum , GLint *) = nullptr;
61void (NV_GL_APIENTRY *glGetTexLevelParameterfv) ( GLenum , GLint , GLenum , GLfloat *) = nullptr;
62void (NV_GL_APIENTRY *glGetTexLevelParameteriv) ( GLenum , GLint , GLenum , GLint *) = nullptr;
63GLboolean (NV_GL_APIENTRY *glIsEnabled) ( GLenum ) = nullptr;
64void (NV_GL_APIENTRY *glDepthRange) ( GLdouble , GLdouble ) = nullptr;
65void (NV_GL_APIENTRY *glViewport) ( GLint , GLint , GLsizei , GLsizei ) = nullptr;
66void (NV_GL_APIENTRY *glDrawArrays) ( GLenum , GLint , GLsizei ) = nullptr;
67void (NV_GL_APIENTRY *glDrawElements) ( GLenum , GLsizei , GLenum , const GLvoid *) = nullptr;
68void (NV_GL_APIENTRY *glGetPointerv) ( GLenum , GLvoid* *) = nullptr;
69void (NV_GL_APIENTRY *glPolygonOffset) ( GLfloat , GLfloat ) = nullptr;
70void (NV_GL_APIENTRY *glCopyTexImage1D) ( GLenum , GLint , GLenum , GLint , GLint , GLsizei , GLint ) = nullptr;
71void (NV_GL_APIENTRY *glCopyTexImage2D) ( GLenum , GLint , GLenum , GLint , GLint , GLsizei , GLsizei , GLint ) = nullptr;
72void (NV_GL_APIENTRY *glCopyTexSubImage1D) ( GLenum , GLint , GLint , GLint , GLint , GLsizei ) = nullptr;
73void (NV_GL_APIENTRY *glCopyTexSubImage2D) ( GLenum , GLint , GLint , GLint , GLint , GLint , GLsizei , GLsizei ) = nullptr;
74void (NV_GL_APIENTRY *glTexSubImage1D) ( GLenum , GLint , GLint , GLsizei , GLenum , GLenum , const GLvoid *) = nullptr;
75void (NV_GL_APIENTRY *glTexSubImage2D) ( GLenum , GLint , GLint , GLsizei , GLenum , GLenum , const GLvoid *) = nullptr;
76void (NV_GL_APIENTRY *glBindTexture) ( GLenum , GLint , GLint , GLsizei , GLenum , GLenum , const GLvoid *) = nullptr;
77void (NV_GL_APIENTRY *glDeleteTextures) ( GLsizei , const GLuint *) = nullptr;
78void (NV_GL_APIENTRY *glGenTextures) ( GLsizei , GLuint *) = nullptr;
79GLboolean (NV_GL_APIENTRY *glIsTexture) ( GLuint ) = nullptr;
80void (NV_GL_APIENTRY *glIndexub) ( GLubyte ) = nullptr;
81void (NV_GL_APIENTRY *glIndexubv) ( const GLubyte *) = nullptr;
82
83/* OpenGL 1.2 non-deprecated functions */
84void (NV_GL_APIENTRY *glBlendColor) ( GLfloat , GLfloat , GLfloat , GLfloat ) = nullptr;
85void (NV_GL_APIENTRY *glBlendEquation) ( GLenum ) = nullptr;
86void (NV_GL_APIENTRY *glDrawRangeElements) ( GLenum , GLuint , GLuint , GLsizei , GLenum , const GLvoid *) = nullptr;
87void (NV_GL_APIENTRY *glTexSubImage3D) ( GLenum , GLint , GLint , GLint , GLint , GLsizei , GLsizei , GLsizei , GLenum , GLenum , const GLvoid *) = nullptr;
88void (NV_GL_APIENTRY *glCopyTexSubImage3D) ( GLenum , GLint , GLint , GLint , GLint , GLint , GLint , GLsizei , GLsizei ) = nullptr;
89
90/* OpenGL 1.3 non-deprecated functions */
91void (NV_GL_APIENTRY *glActiveTexture) ( GLenum ) = nullptr;
92void (NV_GL_APIENTRY *glSampleCoverage) ( GLfloat , GLboolean ) = nullptr;
93void (NV_GL_APIENTRY *glCompressedTexImage3D) ( GLenum , GLint , GLenum , GLsizei , GLsizei , GLsizei , GLint , GLsizei , const GLvoid *) = nullptr;
94void (NV_GL_APIENTRY *glCompressedTexImage2D) ( GLenum , GLint , GLenum , GLsizei , GLsizei , GLint , GLsizei , const GLvoid *) = nullptr;
95void (NV_GL_APIENTRY *glCompressedTexImage1D) ( GLenum , GLint , GLenum , GLsizei , GLint , GLsizei , const GLvoid *) = nullptr;
96void (NV_GL_APIENTRY *glCompressedTexSubImage3D) ( GLenum , GLint , GLint , GLint , GLint , GLsizei , GLsizei , GLsizei , GLenum , GLsizei , const GLvoid *) = nullptr;
97void (NV_GL_APIENTRY *glCompressedTexSubImage2D) ( GLenum , GLint , GLint , GLint , GLsizei , GLsizei , GLenum , GLsizei , const GLvoid *) = nullptr;
98void (NV_GL_APIENTRY *glCompressedTexSubImage1D) ( GLenum , GLint , GLint , GLsizei , GLenum , GLsizei , const GLvoid *) = nullptr;
99void (NV_GL_APIENTRY *glGetCompressedTexImage) ( GLenum , GLint , GLvoid *) = nullptr;
100
101/* OpenGL 1.4 non-deprecated functions */
102void (NV_GL_APIENTRY *glBlendFuncSeparate) ( GLenum , GLenum , GLenum , GLenum ) = nullptr;
103void (NV_GL_APIENTRY *glMultiDrawArrays) ( GLenum , const GLint *, const GLsizei *, GLsizei ) = nullptr;
104void (NV_GL_APIENTRY *glMultiDrawElements) ( GLenum , const GLsizei *, GLenum , const GLvoid* const *, GLsizei ) = nullptr;
105void (NV_GL_APIENTRY *glPointParameterf) ( GLenum , GLfloat ) = nullptr;
106void (NV_GL_APIENTRY *glPointParameterfv) ( GLenum , const GLfloat *) = nullptr;
107void (NV_GL_APIENTRY *glPointParameteri) ( GLenum , GLint ) = nullptr;
108void (NV_GL_APIENTRY *glPointParameteriv) ( GLenum , const GLint *) = nullptr;
109
110/* OpenGL 1.5 non-deprecated functions */
111void (NV_GL_APIENTRY *glGenQueries) ( GLsizei , GLuint *) = nullptr;
112void (NV_GL_APIENTRY *glDeleteQueries) ( GLsizei , const GLuint *) = nullptr;
113GLboolean (NV_GL_APIENTRY *glIsQuery) ( GLuint ) = nullptr;
114void (NV_GL_APIENTRY *glBeginQuery) ( GLenum , GLuint ) = nullptr;
115void (NV_GL_APIENTRY *glEndQuery) ( GLenum ) = nullptr;
116void (NV_GL_APIENTRY *glGetQueryiv) ( GLenum , GLenum , GLint *) = nullptr;
117void (NV_GL_APIENTRY *glGetQueryObjectiv) ( GLuint , GLenum , GLint *) = nullptr;
118void (NV_GL_APIENTRY *glGetQueryObjectuiv) ( GLuint , GLenum , GLuint *) = nullptr;
119void (NV_GL_APIENTRY *glBindBuffer) ( GLenum , GLuint ) = nullptr;
120void (NV_GL_APIENTRY *glDeleteBuffers) ( GLsizei , const GLuint *) = nullptr;
121void (NV_GL_APIENTRY *glGenBuffers) ( GLsizei , GLuint *) = nullptr;
122GLboolean (NV_GL_APIENTRY *glIsBuffer) ( GLuint ) = nullptr;
123void (NV_GL_APIENTRY *glBufferData) ( GLenum , GLsizeiptr , const GLvoid *, GLenum ) = nullptr;
124void (NV_GL_APIENTRY *glBufferSubData) ( GLenum , GLintptr , GLsizeiptr , const GLvoid *) = nullptr;
125void (NV_GL_APIENTRY *glGetBufferSubData) ( GLenum , GLintptr , GLsizeiptr , GLvoid *) = nullptr;
126GLvoid* (NV_GL_APIENTRY *glMapBuffer) ( GLenum , GLenum ) = nullptr;
127GLboolean (NV_GL_APIENTRY *glUnmapBuffer) ( GLenum ) = nullptr;
128void (NV_GL_APIENTRY *glGetBufferParameteriv) ( GLenum , GLenum , GLint *) = nullptr;
129void (NV_GL_APIENTRY *glGetBufferPointerv) ( GLenum , GLenum , GLvoid* *) = nullptr;
130
131/* OpenGL 2.0 non-deprecated functions */
132void (NV_GL_APIENTRY *glBlendEquationSeparate) ( GLenum , GLenum ) = nullptr;
133void (NV_GL_APIENTRY *glDrawBuffers) ( GLsizei , const GLenum *) = nullptr;
134void (NV_GL_APIENTRY *glStencilOpSeparate) ( GLenum , GLenum , GLenum , GLenum ) = nullptr;
135void (NV_GL_APIENTRY *glStencilFuncSeparate) ( GLenum , GLenum , GLint , GLuint ) = nullptr;
136void (NV_GL_APIENTRY *glStencilMaskSeparate) ( GLenum , GLuint ) = nullptr;
137void (NV_GL_APIENTRY *glAttachShader) ( GLuint , GLuint ) = nullptr;
138void (NV_GL_APIENTRY *glBindAttribLocation) ( GLuint , GLuint , const GLchar *) = nullptr;
139void (NV_GL_APIENTRY *glCompileShader) ( GLuint ) = nullptr;
140GLuint (NV_GL_APIENTRY *glCreateProgram) ( void ) = nullptr;
141GLuint (NV_GL_APIENTRY *glCreateShader) ( GLenum ) = nullptr;
142void (NV_GL_APIENTRY *glDeleteProgram) ( GLuint ) = nullptr;
143void (NV_GL_APIENTRY *glDeleteShader) ( GLuint ) = nullptr;
144void (NV_GL_APIENTRY *glDetachShader) ( GLuint, GLuint ) = nullptr;
145void (NV_GL_APIENTRY *glDisableVertexAttribArray) ( GLuint ) = nullptr;
146void (NV_GL_APIENTRY *glEnableVertexAttribArray) ( GLuint ) = nullptr;
147void (NV_GL_APIENTRY *glGetActiveAttrib) ( GLuint , GLuint , GLsizei , GLsizei *, GLint *, GLenum *, GLchar *) = nullptr;
148void (NV_GL_APIENTRY *glGetActiveUniform) ( GLuint , GLuint , GLsizei , GLsizei *, GLint *, GLenum *, GLchar *) = nullptr;
149void (NV_GL_APIENTRY *glGetAttachedShaders) ( GLuint , GLsizei , GLsizei *, GLuint *) = nullptr;
150GLint (NV_GL_APIENTRY *glGetAttribLocation) ( GLuint , const GLchar *) = nullptr;
151void (NV_GL_APIENTRY *glGetProgramiv) ( GLuint , GLenum , GLint *) = nullptr;
152void (NV_GL_APIENTRY *glGetProgramInfoLog) ( GLuint , GLsizei , GLsizei *, GLchar *) = nullptr;
153void (NV_GL_APIENTRY *glGetShaderiv) ( GLuint , GLenum , GLint *) = nullptr;
154void (NV_GL_APIENTRY *glGetShaderInfoLog) ( GLuint , GLsizei , GLsizei *, GLchar *) = nullptr;
155void (NV_GL_APIENTRY *glGetShaderSource) ( GLuint , GLsizei , GLsizei *, GLchar *) = nullptr;
156GLint (NV_GL_APIENTRY *glGetUniformLocation) ( GLuint , const GLchar *) = nullptr;
157void (NV_GL_APIENTRY *glGetUniformfv) ( GLuint , GLint , GLfloat *) = nullptr;
158void (NV_GL_APIENTRY *glGetUniformiv) ( GLuint , GLint , GLint *) = nullptr;
159void (NV_GL_APIENTRY *glGetVertexAttribdv) ( GLuint , GLenum , GLdouble *) = nullptr;
160void (NV_GL_APIENTRY *glGetVertexAttribfv) ( GLuint , GLenum , GLfloat *) = nullptr;
161void (NV_GL_APIENTRY *glGetVertexAttribiv) ( GLuint , GLenum , GLint *) = nullptr;
162void (NV_GL_APIENTRY *glGetVertexAttribPointerv) ( GLuint , GLenum , GLvoid* *) = nullptr;
163GLboolean (NV_GL_APIENTRY *glIsProgram) ( GLuint ) = nullptr;
164GLboolean (NV_GL_APIENTRY *glIsShader) ( GLuint ) = nullptr;
165void (NV_GL_APIENTRY *glLinkProgram) ( GLuint ) = nullptr;
166void (NV_GL_APIENTRY *glShaderSource) ( GLuint , GLsizei , const GLchar* const *, const GLint *) = nullptr;
167void (NV_GL_APIENTRY *glUseProgram) ( GLuint ) = nullptr;
168void (NV_GL_APIENTRY *glUniform1f) ( GLint , GLfloat ) = nullptr;
169void (NV_GL_APIENTRY *glUniform2f) ( GLint , GLfloat , GLfloat ) = nullptr;
170void (NV_GL_APIENTRY *glUniform3f) ( GLint , GLfloat , GLfloat , GLfloat ) = nullptr;
171void (NV_GL_APIENTRY *glUniform4f) ( GLint , GLfloat , GLfloat , GLfloat , GLfloat ) = nullptr;
172void (NV_GL_APIENTRY *glUniform1i) ( GLint , GLint ) = nullptr;
173void (NV_GL_APIENTRY *glUniform2i) ( GLint , GLint , GLint ) = nullptr;
174void (NV_GL_APIENTRY *glUniform3i) ( GLint , GLint , GLint , GLint ) = nullptr;
175void (NV_GL_APIENTRY *glUniform4i) ( GLint , GLint , GLint , GLint , GLint ) = nullptr;
176void (NV_GL_APIENTRY *glUniform1fv) ( GLint , GLsizei , const GLfloat *) = nullptr;
177void (NV_GL_APIENTRY *glUniform2fv) ( GLint , GLsizei , const GLfloat *) = nullptr;
178void (NV_GL_APIENTRY *glUniform3fv) ( GLint , GLsizei , const GLfloat *) = nullptr;
179void (NV_GL_APIENTRY *glUniform4fv) ( GLint , GLsizei , const GLfloat *) = nullptr;
180void (NV_GL_APIENTRY *glUniform1iv) ( GLint , GLsizei , const GLint *) = nullptr;
181void (NV_GL_APIENTRY *glUniform2iv) ( GLint , GLsizei , const GLint *) = nullptr;
182void (NV_GL_APIENTRY *glUniform3iv) ( GLint , GLsizei , const GLint *) = nullptr;
183void (NV_GL_APIENTRY *glUniform4iv) ( GLint , GLsizei , const GLint *) = nullptr;
184void (NV_GL_APIENTRY *glUniformMatrix2fv) ( GLint , GLsizei , GLboolean , const GLfloat *) = nullptr;
185void (NV_GL_APIENTRY *glUniformMatrix3fv) ( GLint , GLsizei , GLboolean , const GLfloat *) = nullptr;
186void (NV_GL_APIENTRY *glUniformMatrix4fv) ( GLint , GLsizei , GLboolean , const GLfloat *) = nullptr;
187void (NV_GL_APIENTRY *glValidateProgram) ( GLuint ) = nullptr;
188void (NV_GL_APIENTRY *glVertexAttribPointer) ( GLuint , GLint , GLenum , GLboolean , GLsizei , const GLvoid *) = nullptr;
189
190/* OpenGL 2.1 non-deprecated functions */
191void (NV_GL_APIENTRY *glUniformMatrix2x3fv) ( GLint , GLsizei , GLboolean , const GLfloat *) = nullptr;
192void (NV_GL_APIENTRY *glUniformMatrix3x2fv) ( GLint , GLsizei , GLboolean , const GLfloat *) = nullptr;
193void (NV_GL_APIENTRY *glUniformMatrix2x4fv) ( GLint , GLsizei , GLboolean , const GLfloat *) = nullptr;
194void (NV_GL_APIENTRY *glUniformMatrix4x2fv) ( GLint , GLsizei , GLboolean , const GLfloat *) = nullptr;
195void (NV_GL_APIENTRY *glUniformMatrix3x4fv) ( GLint , GLsizei , GLboolean , const GLfloat *) = nullptr;
196void (NV_GL_APIENTRY *glUniformMatrix4x3fv) ( GLint , GLsizei , GLboolean , const GLfloat *) = nullptr;
197
198bool nv::load_gl_library( const char* path )
199{
200#if defined( NV_SDL_GL )
201#               define NV_GL_LOAD( symbol ) *(void **) (&symbol) = SDL_GL_GetProcAddress(#symbol);
202#               define NV_GL_LOAD_EXT( symbol ) *(void **) (&symbol) = SDL_GL_GetProcAddress(#symbol);
203#else
204        static nv::library gl_library( path );
205        void * (NV_GL_APIENTRY *ext_loader) (const char* proc) = nullptr;
206#       if NV_PLATFORM == NV_WINDOWS
207#               define NV_GL_LOAD( symbol ) *(void **) (&symbol) = gl_library.get(#symbol);
208                *(void **) (&ext_loader) = gl_library.get("wglGetProcAddress");
209#               define NV_GL_LOAD_EXT( symbol ) *(void **) (&symbol) = ext_loader(#symbol);
210#       elif NV_PLATFORM == NV_LINUX
211#               define NV_GL_LOAD( symbol ) *(void **) (&symbol) = gl_library.get(#symbol);
212                *(void **) (&ext_loader) = gl_library.get("glXGetProcAddress");
213#               define NV_GL_LOAD_EXT( symbol ) *(void **) (&symbol) = ext_loader(#symbol);
214#       else
215#               define NV_GL_LOAD( symbol ) *(void **) (&symbol) = gl_library.get(#symbol);
216#               define NV_GL_LOAD_EXT( symbol ) *(void **) (&symbol) = gl_library.get(#symbol);
217#       endif
218#endif
219
220/* OpenGL 1.1 non-deprecated functions */
221        NV_GL_LOAD( glCullFace );
222        NV_GL_LOAD( glFrontFace );
223        NV_GL_LOAD( glHint );
224        NV_GL_LOAD( glLineWidth );
225        NV_GL_LOAD( glPointSize );
226        NV_GL_LOAD( glPolygonMode );
227        NV_GL_LOAD( glScissor );
228        NV_GL_LOAD( glTexParameterf );
229        NV_GL_LOAD( glTexParameterfv );
230        NV_GL_LOAD( glTexParameteri );
231        NV_GL_LOAD( glTexParameteriv );
232        NV_GL_LOAD( glTexImage1D );
233        NV_GL_LOAD( glTexImage2D );
234        NV_GL_LOAD( glDrawBuffer );
235        NV_GL_LOAD( glClear );
236        NV_GL_LOAD( glClearColor );
237        NV_GL_LOAD( glClearStencil );
238        NV_GL_LOAD( glClearDepth );
239        NV_GL_LOAD( glStencilMask );
240        NV_GL_LOAD( glColorMask );
241        NV_GL_LOAD( glDepthMask );
242        NV_GL_LOAD( glDisable );
243        NV_GL_LOAD( glEnable );
244        NV_GL_LOAD( glFinish );
245        NV_GL_LOAD( glFlush );
246        NV_GL_LOAD( glBlendFunc );
247        NV_GL_LOAD( glLogicOp );
248        NV_GL_LOAD( glStencilFunc );
249        NV_GL_LOAD( glStencilOp );
250        NV_GL_LOAD( glDepthFunc );
251        NV_GL_LOAD( glPixelStoref );
252        NV_GL_LOAD( glPixelStorei );
253        NV_GL_LOAD( glReadBuffer );
254        NV_GL_LOAD( glReadPixels );
255        NV_GL_LOAD( glGetBooleanv );
256        NV_GL_LOAD( glGetDoublev );
257        NV_GL_LOAD( glGetError );
258        NV_GL_LOAD( glGetFloatv );
259        NV_GL_LOAD( glGetIntegerv );
260        NV_GL_LOAD( glGetString );
261        NV_GL_LOAD( glGetTexImage );
262        NV_GL_LOAD( glGetTexParameterfv );
263        NV_GL_LOAD( glGetTexParameteriv );
264        NV_GL_LOAD( glGetTexLevelParameterfv );
265        NV_GL_LOAD( glGetTexLevelParameteriv );
266        NV_GL_LOAD( glIsEnabled );
267        NV_GL_LOAD( glDepthRange );
268        NV_GL_LOAD( glViewport );
269        NV_GL_LOAD( glDrawArrays );
270        NV_GL_LOAD( glDrawElements );
271        NV_GL_LOAD( glGetPointerv );
272        NV_GL_LOAD( glPolygonOffset );
273        NV_GL_LOAD( glCopyTexImage1D );
274        NV_GL_LOAD( glCopyTexImage2D );
275        NV_GL_LOAD( glCopyTexSubImage1D );
276        NV_GL_LOAD( glCopyTexSubImage2D );
277        NV_GL_LOAD( glTexSubImage1D );
278        NV_GL_LOAD( glTexSubImage2D );
279        NV_GL_LOAD( glBindTexture );
280        NV_GL_LOAD( glDeleteTextures );
281        NV_GL_LOAD( glGenTextures );
282        NV_GL_LOAD( glIsTexture );
283        NV_GL_LOAD( glIndexub );
284        NV_GL_LOAD( glIndexubv );
285
286/* OpenGL 1.2 non-deprecated functions */
287        NV_GL_LOAD_EXT( glBlendColor );
288        NV_GL_LOAD_EXT( glBlendEquation );
289        NV_GL_LOAD_EXT( glDrawRangeElements );
290        NV_GL_LOAD_EXT( glTexSubImage3D );
291        NV_GL_LOAD_EXT( glCopyTexSubImage3D );
292
293/* OpenGL 1.3 non-deprecated functions */
294        NV_GL_LOAD_EXT( glActiveTexture );
295        NV_GL_LOAD_EXT( glSampleCoverage );
296        NV_GL_LOAD_EXT( glCompressedTexImage3D );
297        NV_GL_LOAD_EXT( glCompressedTexImage2D );
298        NV_GL_LOAD_EXT( glCompressedTexImage1D );
299        NV_GL_LOAD_EXT( glCompressedTexSubImage3D );
300        NV_GL_LOAD_EXT( glCompressedTexSubImage2D );
301        NV_GL_LOAD_EXT( glCompressedTexSubImage1D );
302        NV_GL_LOAD_EXT( glGetCompressedTexImage );
303
304/* OpenGL 1.4 non-deprecated functions */
305        NV_GL_LOAD_EXT( glBlendFuncSeparate );
306        NV_GL_LOAD_EXT( glMultiDrawArrays );
307        NV_GL_LOAD_EXT( glMultiDrawElements );
308        NV_GL_LOAD_EXT( glPointParameterf );
309        NV_GL_LOAD_EXT( glPointParameterfv );
310        NV_GL_LOAD_EXT( glPointParameteri );
311        NV_GL_LOAD_EXT( glPointParameteriv );
312
313/* OpenGL 1.5 non-deprecated functions */
314        NV_GL_LOAD_EXT( glGenQueries );
315        NV_GL_LOAD_EXT( glDeleteQueries );
316        NV_GL_LOAD_EXT( glIsQuery );
317        NV_GL_LOAD_EXT( glBeginQuery );
318        NV_GL_LOAD_EXT( glEndQuery );
319        NV_GL_LOAD_EXT( glGetQueryiv );
320        NV_GL_LOAD_EXT( glGetQueryObjectiv );
321        NV_GL_LOAD_EXT( glGetQueryObjectuiv );
322        NV_GL_LOAD_EXT( glBindBuffer );
323        NV_GL_LOAD_EXT( glDeleteBuffers );
324        NV_GL_LOAD_EXT( glGenBuffers );
325        NV_GL_LOAD_EXT( glIsBuffer );
326        NV_GL_LOAD_EXT( glBufferData );
327        NV_GL_LOAD_EXT( glBufferSubData );
328        NV_GL_LOAD_EXT( glGetBufferSubData );
329        NV_GL_LOAD_EXT( glMapBuffer );
330        NV_GL_LOAD_EXT( glUnmapBuffer );
331        NV_GL_LOAD_EXT( glGetBufferParameteriv );
332        NV_GL_LOAD_EXT( glGetBufferPointerv );
333
334/* OpenGL 2.0 non-deprecated functions */
335        NV_GL_LOAD_EXT( glBlendEquationSeparate );
336        NV_GL_LOAD_EXT( glDrawBuffers );
337        NV_GL_LOAD_EXT( glStencilOpSeparate );
338        NV_GL_LOAD_EXT( glStencilFuncSeparate );
339        NV_GL_LOAD_EXT( glStencilMaskSeparate );
340        NV_GL_LOAD_EXT( glAttachShader );
341        NV_GL_LOAD_EXT( glBindAttribLocation );
342        NV_GL_LOAD_EXT( glCompileShader );
343        NV_GL_LOAD_EXT( glCreateProgram );
344        NV_GL_LOAD_EXT( glCreateShader );
345        NV_GL_LOAD_EXT( glDeleteProgram );
346        NV_GL_LOAD_EXT( glDeleteShader );
347        NV_GL_LOAD_EXT( glDetachShader );
348        NV_GL_LOAD_EXT( glDisableVertexAttribArray );
349        NV_GL_LOAD_EXT( glEnableVertexAttribArray );
350        NV_GL_LOAD_EXT( glGetActiveAttrib );
351        NV_GL_LOAD_EXT( glGetActiveUniform );
352        NV_GL_LOAD_EXT( glGetAttachedShaders );
353        NV_GL_LOAD_EXT( glGetAttribLocation );
354        NV_GL_LOAD_EXT( glGetProgramiv );
355        NV_GL_LOAD_EXT( glGetProgramInfoLog );
356        NV_GL_LOAD_EXT( glGetShaderiv );
357        NV_GL_LOAD_EXT( glGetShaderInfoLog );
358        NV_GL_LOAD_EXT( glGetShaderSource );
359        NV_GL_LOAD_EXT( glGetUniformLocation );
360        NV_GL_LOAD_EXT( glGetUniformfv );
361        NV_GL_LOAD_EXT( glGetUniformiv );
362        NV_GL_LOAD_EXT( glGetVertexAttribdv );
363        NV_GL_LOAD_EXT( glGetVertexAttribfv );
364        NV_GL_LOAD_EXT( glGetVertexAttribiv );
365        NV_GL_LOAD_EXT( glGetVertexAttribPointerv );
366        NV_GL_LOAD_EXT( glIsProgram );
367        NV_GL_LOAD_EXT( glIsShader );
368        NV_GL_LOAD_EXT( glLinkProgram );
369        NV_GL_LOAD_EXT( glShaderSource );
370        NV_GL_LOAD_EXT( glUseProgram );
371        NV_GL_LOAD_EXT( glUniform1f );
372        NV_GL_LOAD_EXT( glUniform2f );
373        NV_GL_LOAD_EXT( glUniform3f );
374        NV_GL_LOAD_EXT( glUniform4f );
375        NV_GL_LOAD_EXT( glUniform1i );
376        NV_GL_LOAD_EXT( glUniform2i );
377        NV_GL_LOAD_EXT( glUniform3i );
378        NV_GL_LOAD_EXT( glUniform4i );
379        NV_GL_LOAD_EXT( glUniform1fv );
380        NV_GL_LOAD_EXT( glUniform2fv );
381        NV_GL_LOAD_EXT( glUniform3fv );
382        NV_GL_LOAD_EXT( glUniform4fv );
383        NV_GL_LOAD_EXT( glUniform1iv );
384        NV_GL_LOAD_EXT( glUniform2iv );
385        NV_GL_LOAD_EXT( glUniform3iv );
386        NV_GL_LOAD_EXT( glUniform4iv );
387        NV_GL_LOAD_EXT( glUniformMatrix2fv );
388        NV_GL_LOAD_EXT( glUniformMatrix3fv );
389        NV_GL_LOAD_EXT( glUniformMatrix4fv );
390        NV_GL_LOAD_EXT( glValidateProgram );
391        NV_GL_LOAD_EXT( glVertexAttribPointer );
392
393/* OpenGL 2.1 non-deprecated functions */
394        NV_GL_LOAD_EXT( glUniformMatrix2x3fv );
395        NV_GL_LOAD_EXT( glUniformMatrix3x2fv );
396        NV_GL_LOAD_EXT( glUniformMatrix2x4fv );
397        NV_GL_LOAD_EXT( glUniformMatrix4x2fv );
398        NV_GL_LOAD_EXT( glUniformMatrix3x4fv );
399        NV_GL_LOAD_EXT( glUniformMatrix4x3fv );
400
401#       undef NV_GL_LOAD
402#       undef NV_GL_LOAD_EXT
403        return true;
404}
405
406#endif
Note: See TracBrowser for help on using the repository browser.