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