| Line | Branch | Exec | Source |
|---|---|---|---|
| 1 | /* GATE PROJECT LICENSE: | ||
| 2 | +----------------------------------------------------------------------------+ | ||
| 3 | | Copyright(c) 2018-2025, Stefan Meislinger | | ||
| 4 | | All rights reserved. | | ||
| 5 | | | | ||
| 6 | | Redistribution and use in source and binary forms, with or without | | ||
| 7 | | modification, are permitted provided that the following conditions are met:| | ||
| 8 | | | | ||
| 9 | | 1. Redistributions of source code must retain the above copyright notice, | | ||
| 10 | | this list of conditions and the following disclaimer. | | ||
| 11 | | 2. Redistributions in binary form must reproduce the above copyright | | ||
| 12 | | notice, this list of conditions and the following disclaimer in the | | ||
| 13 | | documentation and/or other materials provided with the distribution. | | ||
| 14 | | | | ||
| 15 | | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"| | ||
| 16 | | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | | ||
| 17 | | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | | ||
| 18 | | ARE DISCLAIMED.IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE | | ||
| 19 | | LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR | | ||
| 20 | | CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF | | ||
| 21 | | SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS | | ||
| 22 | | INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN | | ||
| 23 | | CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) | | ||
| 24 | | ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF | | ||
| 25 | | THE POSSIBILITY OF SUCH DAMAGE. | | ||
| 26 | +----------------------------------------------------------------------------+ | ||
| 27 | */ | ||
| 28 | #ifndef GATE_GRAPHICS_PLATFORM_OPENGL_APIS_H_INCLUDED | ||
| 29 | #define GATE_GRAPHICS_PLATFORM_OPENGL_APIS_H_INCLUDED | ||
| 30 | |||
| 31 | #include "gate/gatetypes.h" | ||
| 32 | #include "gate/libraries.h" | ||
| 33 | #include "gate/results.h" | ||
| 34 | #include "gate/platforms.h" | ||
| 35 | |||
| 36 | #if defined(GATE_SYS_ANDROID) | ||
| 37 | # include <GLES/gl.h> | ||
| 38 | # define GATE_OPENGL_NO_DBL 1 | ||
| 39 | #elif defined(GATE_SYS_WINCE) | ||
| 40 | # include <GLES/gl.h> | ||
| 41 | # define GATE_OPENGL_NO_DBL 1 | ||
| 42 | #elif defined(GATE_SYS_DARWIN) | ||
| 43 | # include <OpenGL/gl.h> | ||
| 44 | #elif defined(GATE_SYS_WASM) | ||
| 45 | # include <GL/gl.h> | ||
| 46 | # if defined(GATE_GRAPHICS_OPENGL2_SUPPORT) | ||
| 47 | # include <GLES2/gl2.h> | ||
| 48 | # endif | ||
| 49 | # define GATE_OPENGL_APIS_DIRECT_BINDING 1 | ||
| 50 | //# define GATE_OPENGL_NO_DBL 1 | ||
| 51 | #else | ||
| 52 | # include <GL/gl.h> | ||
| 53 | # if defined(GATE_GRAPHICS_OPENGL2_SUPPORT) | ||
| 54 | # include <GLES2/gl2.h> | ||
| 55 | # endif | ||
| 56 | #endif | ||
| 57 | |||
| 58 | #if defined(GATE_SYS_WIN) | ||
| 59 | # define OGLAPI WINAPI | ||
| 60 | # define OPENGL_LIBNAME "opengl32.dll" | ||
| 61 | # define OPENGL_LIBNAME_ALT "opengl32.dll" | ||
| 62 | #elif defined(GATE_SYS_ANDROID) | ||
| 63 | # define OGLAPI | ||
| 64 | # define OPENGL_LIBNAME "libGLESv1_CM.so" | ||
| 65 | # define OPENGL_LIBNAME_ALT "libGL.so.1.2" | ||
| 66 | #elif defined(GATE_SYS_DARWIN) | ||
| 67 | # define OGLAPI | ||
| 68 | # define OPENGL_LIBNAME "/System/Library/Frameworks/OpenGL.framework/OpenGL" | ||
| 69 | # define OPENGL_LIBNAME_ALT "/System/Library/Frameworks/OpenGL.framework/OpenGL" | ||
| 70 | #else | ||
| 71 | # define OGLAPI | ||
| 72 | # define OPENGL_LIBNAME "libGL.so" | ||
| 73 | # define OPENGL_LIBNAME_ALT "libGL.so.1" | ||
| 74 | #endif | ||
| 75 | |||
| 76 | typedef struct gate_gl_api_functions_class | ||
| 77 | { | ||
| 78 | //void (OGLAPI *glAccum) (GLenum op, GLfloat value); | ||
| 79 | void (OGLAPI* glAlphaFunc) (GLenum func, GLclampf ref); | ||
| 80 | //GLboolean(OGLAPI *glAreTexturesResident)(GLsizei n, const GLuint *textures, GLboolean *residences); | ||
| 81 | //void (OGLAPI *glArrayElement) (GLint i); | ||
| 82 | //void (OGLAPI *glBegin) (GLenum mode); | ||
| 83 | void (OGLAPI* glBindTexture) (GLenum target, GLuint texture); | ||
| 84 | //void (OGLAPI *glBitmap) (GLsizei width, GLsizei height, GLfloat xorig, GLfloat yorig, GLfloat xmove, GLfloat ymove, const GLubyte *bitmap); | ||
| 85 | void (OGLAPI* glBlendFunc) (GLenum sfactor, GLenum dfactor); | ||
| 86 | //void (OGLAPI *glCallList) (GLuint list); | ||
| 87 | //void (OGLAPI *glCallLists) (GLsizei n, GLenum type, const GLvoid *lists); | ||
| 88 | void (OGLAPI* glClear) (GLbitfield mask); | ||
| 89 | //void (OGLAPI *glClearAccum) (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); | ||
| 90 | void (OGLAPI* glClearColor) (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha); | ||
| 91 | #if defined(GATE_OPENGL_NO_DBL) | ||
| 92 | void (OGLAPI* glClearDepth) (GLclampf depth); | ||
| 93 | #else | ||
| 94 | void (OGLAPI* glClearDepth) (GLclampd depth); | ||
| 95 | #endif | ||
| 96 | //void (OGLAPI *glClearIndex) (GLfloat c); | ||
| 97 | void (OGLAPI* glClearStencil) (GLint s); | ||
| 98 | #if defined(GATE_OPENGL_NO_DBL) | ||
| 99 | void (OGLAPI* glClipPlane) (GLenum plane, const GLfloat* equation); | ||
| 100 | #else | ||
| 101 | void (OGLAPI* glClipPlane) (GLenum plane, const GLdouble* equation); | ||
| 102 | #endif | ||
| 103 | //void (OGLAPI *glColor3b) (GLbyte red, GLbyte green, GLbyte blue); | ||
| 104 | //void (OGLAPI *glColor3bv) (const GLbyte *v); | ||
| 105 | //void (OGLAPI *glColor3d) (GLdouble red, GLdouble green, GLdouble blue); | ||
| 106 | //void (OGLAPI *glColor3dv) (const GLdouble *v); | ||
| 107 | //void (OGLAPI *glColor3f) (GLfloat red, GLfloat green, GLfloat blue); | ||
| 108 | //void (OGLAPI *glColor3fv) (const GLfloat *v); | ||
| 109 | //void (OGLAPI *glColor3i) (GLint red, GLint green, GLint blue); | ||
| 110 | //void (OGLAPI *glColor3iv) (const GLint *v); | ||
| 111 | //void (OGLAPI *glColor3s) (GLshort red, GLshort green, GLshort blue); | ||
| 112 | //void (OGLAPI *glColor3sv) (const GLshort *v); | ||
| 113 | //void (OGLAPI *glColor3ub) (GLubyte red, GLubyte green, GLubyte blue); | ||
| 114 | //void (OGLAPI *glColor3ubv) (const GLubyte *v); | ||
| 115 | //void (OGLAPI *glColor3ui) (GLuint red, GLuint green, GLuint blue); | ||
| 116 | //void (OGLAPI *glColor3uiv) (const GLuint *v); | ||
| 117 | //void (OGLAPI *glColor3us) (GLushort red, GLushort green, GLushort blue); | ||
| 118 | //void (OGLAPI *glColor3usv) (const GLushort *v); | ||
| 119 | //void (OGLAPI *glColor4b) (GLbyte red, GLbyte green, GLbyte blue, GLbyte alpha); | ||
| 120 | //void (OGLAPI *glColor4bv) (const GLbyte *v); | ||
| 121 | //void (OGLAPI *glColor4d) (GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha); | ||
| 122 | //void (OGLAPI *glColor4dv) (const GLdouble *v); | ||
| 123 | void (OGLAPI* glColor4f) (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); | ||
| 124 | //void (OGLAPI *glColor4fv) (const GLfloat *v); | ||
| 125 | //void (OGLAPI *glColor4i) (GLint red, GLint green, GLint blue, GLint alpha); | ||
| 126 | //void (OGLAPI *glColor4iv) (const GLint *v); | ||
| 127 | //void (OGLAPI *glColor4s) (GLshort red, GLshort green, GLshort blue, GLshort alpha); | ||
| 128 | //void (OGLAPI *glColor4sv) (const GLshort *v); | ||
| 129 | void (OGLAPI* glColor4ub) (GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha); | ||
| 130 | //void (OGLAPI *glColor4ubv) (const GLubyte *v); | ||
| 131 | //void (OGLAPI *glColor4ui) (GLuint red, GLuint green, GLuint blue, GLuint alpha); | ||
| 132 | //void (OGLAPI *glColor4uiv) (const GLuint *v); | ||
| 133 | //void (OGLAPI *glColor4us) (GLushort red, GLushort green, GLushort blue, GLushort alpha); | ||
| 134 | //void (OGLAPI *glColor4usv) (const GLushort *v); | ||
| 135 | void (OGLAPI* glColorMask) (GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha); | ||
| 136 | //void (OGLAPI *glColorMaterial)(GLenum face, GLenum mode); | ||
| 137 | void (OGLAPI* glColorPointer) (GLint size, GLenum type, GLsizei stride, const GLvoid* pointer); | ||
| 138 | //void (OGLAPI *glCopyPixels) (GLint x, GLint y, GLsizei width, GLsizei height, GLenum type); | ||
| 139 | //void (OGLAPI *glCopyTexImage1D) (GLenum target, GLint level, GLenum internalFormat, GLint x, GLint y, GLsizei width, GLint border); | ||
| 140 | void (OGLAPI* glCopyTexImage2D) (GLenum target, GLint level, GLenum internalFormat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); | ||
| 141 | //void (OGLAPI *glCopyTexSubImage1D) (GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width); | ||
| 142 | void (OGLAPI* glCopyTexSubImage2D) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); | ||
| 143 | void (OGLAPI* glCullFace) (GLenum mode); | ||
| 144 | //void (OGLAPI *glDeleteLists) (GLuint list, GLsizei range); | ||
| 145 | void (OGLAPI* glDeleteTextures) (GLsizei n, const GLuint* textures); | ||
| 146 | void (OGLAPI* glDepthFunc) (GLenum func); | ||
| 147 | void (OGLAPI* glDepthMask) (GLboolean flag); | ||
| 148 | #if defined(GATE_OPENGL_NO_DBL) | ||
| 149 | void (OGLAPI* glDepthRange) (GLclampf zNear, GLclampf zFar); | ||
| 150 | #else | ||
| 151 | void (OGLAPI* glDepthRange) (GLclampd zNear, GLclampd zFar); | ||
| 152 | #endif | ||
| 153 | void (OGLAPI* glDisable) (GLenum cap); | ||
| 154 | void (OGLAPI* glDisableClientState) (GLenum array); | ||
| 155 | void (OGLAPI* glDrawArrays) (GLenum mode, GLint first, GLsizei count); | ||
| 156 | //void (OGLAPI *glDrawBuffer) (GLenum mode); | ||
| 157 | void (OGLAPI* glDrawElements) (GLenum mode, GLsizei count, GLenum type, const GLvoid* indices); | ||
| 158 | //void (OGLAPI *glDrawPixels) (GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels); | ||
| 159 | //void (OGLAPI *glEdgeFlag) (GLboolean flag); | ||
| 160 | //void (OGLAPI *glEdgeFlagPointer)(GLsizei stride, const GLvoid *pointer); | ||
| 161 | //void (OGLAPI *glEdgeFlagv) (const GLboolean *flag); | ||
| 162 | void (OGLAPI* glEnable) (GLenum cap); | ||
| 163 | void (OGLAPI* glEnableClientState) (GLenum array); | ||
| 164 | //void (OGLAPI *glEnd) (void); | ||
| 165 | //void (OGLAPI *glEndList) (void); | ||
| 166 | //void (OGLAPI *glEvalCoord1d) (GLdouble u); | ||
| 167 | //void (OGLAPI *glEvalCoord1dv) (const GLdouble *u); | ||
| 168 | //void (OGLAPI *glEvalCoord1f) (GLfloat u); | ||
| 169 | //void (OGLAPI *glEvalCoord1fv) (const GLfloat *u); | ||
| 170 | //void (OGLAPI *glEvalCoord2d) (GLdouble u, GLdouble v); | ||
| 171 | //void (OGLAPI *glEvalCoord2dv) (const GLdouble *u); | ||
| 172 | //void (OGLAPI *glEvalCoord2f) (GLfloat u, GLfloat v); | ||
| 173 | //void (OGLAPI *glEvalCoord2fv) (const GLfloat *u); | ||
| 174 | //void (OGLAPI *glEvalMesh1) (GLenum mode, GLint i1, GLint i2); | ||
| 175 | //void (OGLAPI *glEvalMesh2) (GLenum mode, GLint i1, GLint i2, GLint j1, GLint j2); | ||
| 176 | //void (OGLAPI *glEvalPoint1) (GLint i); | ||
| 177 | //void (OGLAPI *glEvalPoint2) (GLint i, GLint j); | ||
| 178 | //void (OGLAPI *glFeedbackBuffer) (GLsizei size, GLenum type, GLfloat *buffer); | ||
| 179 | void (OGLAPI* glFinish) (void); | ||
| 180 | void (OGLAPI* glFlush) (void); | ||
| 181 | void (OGLAPI* glFogf) (GLenum pname, GLfloat param); | ||
| 182 | void (OGLAPI* glFogfv) (GLenum pname, const GLfloat* params); | ||
| 183 | //void (OGLAPI *glFogi) (GLenum pname, GLint param); | ||
| 184 | //void (OGLAPI *glFogiv) (GLenum pname, const GLint *params); | ||
| 185 | void (OGLAPI* glFrontFace) (GLenum mode); | ||
| 186 | #if defined(GATE_OPENGL_NO_DBL) | ||
| 187 | void (OGLAPI* glFrustum) (GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar); | ||
| 188 | #else | ||
| 189 | void (OGLAPI* glFrustum) (GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar); | ||
| 190 | #endif | ||
| 191 | //GLuint(OGLAPI *glGenLists) (GLsizei range); | ||
| 192 | void (OGLAPI* glGenTextures) (GLsizei n, GLuint* textures); | ||
| 193 | void (OGLAPI* glGetBooleanv) (GLenum pname, GLboolean* params); | ||
| 194 | #if defined(GATE_OPENGL_NO_DBL) | ||
| 195 | //void (OGLAPI* glGetClipPlane) (GLenum pname, GLfloat eqn[4]); | ||
| 196 | #else | ||
| 197 | //void (OGLAPI* glGetClipPlane) (GLenum plane, GLdouble* equation); | ||
| 198 | #endif | ||
| 199 | //void (OGLAPI *glGetDoublev) (GLenum pname, GLdouble *params); | ||
| 200 | GLenum(OGLAPI* glGetError) (void); | ||
| 201 | void (OGLAPI* glGetFloatv) (GLenum pname, GLfloat* params); | ||
| 202 | void (OGLAPI* glGetIntegerv) (GLenum pname, GLint* params); | ||
| 203 | void (OGLAPI* glGetLightfv) (GLenum light, GLenum pname, GLfloat* params); | ||
| 204 | //void (OGLAPI *glGetLightiv) (GLenum light, GLenum pname, GLint *params); | ||
| 205 | //void (OGLAPI *glGetMapdv) (GLenum target, GLenum query, GLdouble *v); | ||
| 206 | //void (OGLAPI *glGetMapfv) (GLenum target, GLenum query, GLfloat *v); | ||
| 207 | //void (OGLAPI *glGetMapiv) (GLenum target, GLenum query, GLint *v); | ||
| 208 | void (OGLAPI* glGetMaterialfv) (GLenum face, GLenum pname, GLfloat* params); | ||
| 209 | //void (OGLAPI *glGetMaterialiv)(GLenum face, GLenum pname, GLint *params); | ||
| 210 | //void (OGLAPI *glGetPixelMapfv)(GLenum map, GLfloat *values); | ||
| 211 | //void (OGLAPI *glGetPixelMapuiv)(GLenum map, GLuint *values); | ||
| 212 | //void (OGLAPI *glGetPixelMapusv)(GLenum map, GLushort *values); | ||
| 213 | void (OGLAPI* glGetPointerv) (GLenum pname, GLvoid** params); | ||
| 214 | //void (OGLAPI *glGetPolygonStipple) (GLubyte *mask); | ||
| 215 | GLubyte const* (OGLAPI* glGetString) (GLenum name); | ||
| 216 | void (OGLAPI* glGetTexEnvfv) (GLenum target, GLenum pname, GLfloat* params); | ||
| 217 | void (OGLAPI* glGetTexEnviv) (GLenum target, GLenum pname, GLint* params); | ||
| 218 | //void (OGLAPI *glGetTexGendv) (GLenum coord, GLenum pname, GLdouble *params); | ||
| 219 | //void (OGLAPI *glGetTexGenfv) (GLenum coord, GLenum pname, GLfloat *params); | ||
| 220 | //void (OGLAPI *glGetTexGeniv) (GLenum coord, GLenum pname, GLint *params); | ||
| 221 | //void (OGLAPI *glGetTexImage) (GLenum target, GLint level, GLenum format, GLenum type, GLvoid *pixels); | ||
| 222 | //void (OGLAPI *glGetTexLevelParameterfv) (GLenum target, GLint level, GLenum pname, GLfloat *params); | ||
| 223 | //void (OGLAPI *glGetTexLevelParameteriv) (GLenum target, GLint level, GLenum pname, GLint *params); | ||
| 224 | void (OGLAPI* glGetTexParameterfv) (GLenum target, GLenum pname, GLfloat* params); | ||
| 225 | void (OGLAPI* glGetTexParameteriv) (GLenum target, GLenum pname, GLint* params); | ||
| 226 | void (OGLAPI* glHint) (GLenum target, GLenum mode); | ||
| 227 | //void (OGLAPI *glIndexMask) (GLuint mask); | ||
| 228 | //void (OGLAPI *glIndexPointer) (GLenum type, GLsizei stride, const GLvoid *pointer); | ||
| 229 | //void (OGLAPI *glIndexd) (GLdouble c); | ||
| 230 | //void (OGLAPI *glIndexdv) (const GLdouble *c); | ||
| 231 | //void (OGLAPI *glIndexf) (GLfloat c); | ||
| 232 | //void (OGLAPI *glIndexfv) (const GLfloat *c); | ||
| 233 | //void (OGLAPI *glIndexi) (GLint c); | ||
| 234 | //void (OGLAPI *glIndexiv) (const GLint *c); | ||
| 235 | //void (OGLAPI *glIndexs) (GLshort c); | ||
| 236 | //void (OGLAPI *glIndexsv) (const GLshort *c); | ||
| 237 | //void (OGLAPI *glIndexub) (GLubyte c); | ||
| 238 | //void (OGLAPI *glIndexubv) (const GLubyte *c); | ||
| 239 | //void (OGLAPI *glInitNames) (void); | ||
| 240 | //void (OGLAPI *glInterleavedArrays) (GLenum format, GLsizei stride, const GLvoid *pointer); | ||
| 241 | GLboolean(OGLAPI* glIsEnabled) (GLenum cap); | ||
| 242 | //GLboolean(OGLAPI *glIsList) (GLuint list); | ||
| 243 | GLboolean(OGLAPI* glIsTexture) (GLuint texture); | ||
| 244 | void (OGLAPI* glLightModelf) (GLenum pname, GLfloat param); | ||
| 245 | void (OGLAPI* glLightModelfv) (GLenum pname, const GLfloat* params); | ||
| 246 | //void (OGLAPI *glLightModeli) (GLenum pname, GLint param); | ||
| 247 | //void (OGLAPI *glLightModeliv) (GLenum pname, const GLint *params); | ||
| 248 | void (OGLAPI* glLightf) (GLenum light, GLenum pname, GLfloat param); | ||
| 249 | void (OGLAPI* glLightfv) (GLenum light, GLenum pname, const GLfloat* params); | ||
| 250 | //void (OGLAPI *glLighti) (GLenum light, GLenum pname, GLint param); | ||
| 251 | //void (OGLAPI *glLightiv) (GLenum light, GLenum pname, const GLint *params); | ||
| 252 | //void (OGLAPI *glLineStipple) (GLint factor, GLushort pattern); | ||
| 253 | void (OGLAPI* glLineWidth) (GLfloat width); | ||
| 254 | //void (OGLAPI *glListBase) (GLuint base); | ||
| 255 | void (OGLAPI* glLoadIdentity) (void); | ||
| 256 | //void (OGLAPI *glLoadMatrixd) (const GLdouble *m); | ||
| 257 | void (OGLAPI* glLoadMatrixf) (const GLfloat* m); | ||
| 258 | //void (OGLAPI *glLoadName) (GLuint name); | ||
| 259 | //void (OGLAPI* glLogicOp) (GLenum opcode); | ||
| 260 | //void (OGLAPI *glMap1d) (GLenum target, GLdouble u1, GLdouble u2, GLint stride, GLint order, const GLdouble *points); | ||
| 261 | //void (OGLAPI *glMap1f) (GLenum target, GLfloat u1, GLfloat u2, GLint stride, GLint order, const GLfloat *points); | ||
| 262 | //void (OGLAPI *glMap2d) (GLenum target, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, const GLdouble *points); | ||
| 263 | //void (OGLAPI *glMap2f) (GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, const GLfloat *points); | ||
| 264 | //void (OGLAPI *glMapGrid1d) (GLint un, GLdouble u1, GLdouble u2); | ||
| 265 | //void (OGLAPI *glMapGrid1f) (GLint un, GLfloat u1, GLfloat u2); | ||
| 266 | //void (OGLAPI *glMapGrid2d) (GLint un, GLdouble u1, GLdouble u2, GLint vn, GLdouble v1, GLdouble v2); | ||
| 267 | //void (OGLAPI *glMapGrid2f) (GLint un, GLfloat u1, GLfloat u2, GLint vn, GLfloat v1, GLfloat v2); | ||
| 268 | void (OGLAPI* glMaterialf) (GLenum face, GLenum pname, GLfloat param); | ||
| 269 | void (OGLAPI* glMaterialfv) (GLenum face, GLenum pname, const GLfloat* params); | ||
| 270 | //void (OGLAPI *glMateriali) (GLenum face, GLenum pname, GLint param); | ||
| 271 | //void (OGLAPI *glMaterialiv) (GLenum face, GLenum pname, const GLint *params); | ||
| 272 | void (OGLAPI* glMatrixMode) (GLenum mode); | ||
| 273 | //void (OGLAPI *glMultMatrixd) (const GLdouble *m); | ||
| 274 | void (OGLAPI* glMultMatrixf) (const GLfloat* m); | ||
| 275 | //void (OGLAPI *glNewList) (GLuint list, GLenum mode); | ||
| 276 | //void (OGLAPI *glNormal3b) (GLbyte nx, GLbyte ny, GLbyte nz); | ||
| 277 | //void (OGLAPI *glNormal3bv) (const GLbyte *v); | ||
| 278 | //void (OGLAPI *glNormal3d) (GLdouble nx, GLdouble ny, GLdouble nz); | ||
| 279 | //void (OGLAPI *glNormal3dv) (const GLdouble *v); | ||
| 280 | void (OGLAPI* glNormal3f) (GLfloat nx, GLfloat ny, GLfloat nz); | ||
| 281 | //void (OGLAPI *glNormal3fv) (const GLfloat *v); | ||
| 282 | //void (OGLAPI *glNormal3i) (GLint nx, GLint ny, GLint nz); | ||
| 283 | //void (OGLAPI *glNormal3iv) (const GLint *v); | ||
| 284 | //void (OGLAPI *glNormal3s) (GLshort nx, GLshort ny, GLshort nz); | ||
| 285 | //void (OGLAPI *glNormal3sv) (const GLshort *v); | ||
| 286 | void (OGLAPI* glNormalPointer) (GLenum type, GLsizei stride, const GLvoid* pointer); | ||
| 287 | #if defined(GATE_OPENGL_NO_DBL) | ||
| 288 | void (OGLAPI* glOrtho) (GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar); | ||
| 289 | #else | ||
| 290 | void (OGLAPI* glOrtho) (GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar); | ||
| 291 | #endif | ||
| 292 | //void (OGLAPI *glPassThrough) (GLfloat token); | ||
| 293 | //void (OGLAPI *glPixelMapfv) (GLenum map, GLsizei mapsize, const GLfloat *values); | ||
| 294 | //void (OGLAPI *glPixelMapuiv) (GLenum map, GLsizei mapsize, const GLuint *values); | ||
| 295 | //void (OGLAPI *glPixelMapusv) (GLenum map, GLsizei mapsize, const GLushort *values); | ||
| 296 | //void (OGLAPI *glPixelStoref) (GLenum pname, GLfloat param); | ||
| 297 | void (OGLAPI* glPixelStorei) (GLenum pname, GLint param); | ||
| 298 | //void (OGLAPI *glPixelTransferf) (GLenum pname, GLfloat param); | ||
| 299 | //void (OGLAPI *glPixelTransferi) (GLenum pname, GLint param); | ||
| 300 | //void (OGLAPI *glPixelZoom) (GLfloat xfactor, GLfloat yfactor); | ||
| 301 | void (OGLAPI* glPointSize) (GLfloat size); | ||
| 302 | //void (OGLAPI *glPolygonMode) (GLenum face, GLenum mode); | ||
| 303 | void (OGLAPI* glPolygonOffset) (GLfloat factor, GLfloat units); | ||
| 304 | //void (OGLAPI *glPolygonStipple) (const GLubyte *mask); | ||
| 305 | //void (OGLAPI *glPopAttrib) (void); | ||
| 306 | //void (OGLAPI *glPopClientAttrib)(void); | ||
| 307 | void (OGLAPI* glPopMatrix) (void); | ||
| 308 | //void (OGLAPI *glPopName) (void); | ||
| 309 | //void (OGLAPI *glPrioritizeTextures) (GLsizei n, const GLuint *textures, const GLclampf *priorities); | ||
| 310 | //void (OGLAPI *glPushAttrib) (GLbitfield mask); | ||
| 311 | //void (OGLAPI *glPushClientAttrib)(GLbitfield mask); | ||
| 312 | void (OGLAPI* glPushMatrix) (void); | ||
| 313 | //void (OGLAPI *glPushName) (GLuint name); | ||
| 314 | //void (OGLAPI *glRasterPos2d) (GLdouble x, GLdouble y); | ||
| 315 | //void (OGLAPI *glRasterPos2dv) (const GLdouble *v); | ||
| 316 | //void (OGLAPI *glRasterPos2f) (GLfloat x, GLfloat y); | ||
| 317 | //void (OGLAPI *glRasterPos2fv) (const GLfloat *v); | ||
| 318 | //void (OGLAPI *glRasterPos2i) (GLint x, GLint y); | ||
| 319 | //void (OGLAPI *glRasterPos2iv) (const GLint *v); | ||
| 320 | //void (OGLAPI *glRasterPos2s) (GLshort x, GLshort y); | ||
| 321 | //void (OGLAPI *glRasterPos2sv) (const GLshort *v); | ||
| 322 | //void (OGLAPI *glRasterPos3d) (GLdouble x, GLdouble y, GLdouble z); | ||
| 323 | //void (OGLAPI *glRasterPos3dv) (const GLdouble *v); | ||
| 324 | //void (OGLAPI *glRasterPos3f) (GLfloat x, GLfloat y, GLfloat z); | ||
| 325 | //void (OGLAPI *glRasterPos3fv) (const GLfloat *v); | ||
| 326 | //void (OGLAPI *glRasterPos3i) (GLint x, GLint y, GLint z); | ||
| 327 | //void (OGLAPI *glRasterPos3iv) (const GLint *v); | ||
| 328 | //void (OGLAPI *glRasterPos3s) (GLshort x, GLshort y, GLshort z); | ||
| 329 | //void (OGLAPI *glRasterPos3sv) (const GLshort *v); | ||
| 330 | //void (OGLAPI *glRasterPos4d) (GLdouble x, GLdouble y, GLdouble z, GLdouble w); | ||
| 331 | //void (OGLAPI *glRasterPos4dv) (const GLdouble *v); | ||
| 332 | //void (OGLAPI *glRasterPos4f) (GLfloat x, GLfloat y, GLfloat z, GLfloat w); | ||
| 333 | //void (OGLAPI *glRasterPos4fv) (const GLfloat *v); | ||
| 334 | //void (OGLAPI *glRasterPos4i) (GLint x, GLint y, GLint z, GLint w); | ||
| 335 | //void (OGLAPI *glRasterPos4iv) (const GLint *v); | ||
| 336 | //void (OGLAPI *glRasterPos4s) (GLshort x, GLshort y, GLshort z, GLshort w); | ||
| 337 | //void (OGLAPI *glRasterPos4sv) (const GLshort *v); | ||
| 338 | //void (OGLAPI *glReadBuffer) (GLenum mode); | ||
| 339 | void (OGLAPI* glReadPixels) (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid* pixels); | ||
| 340 | //void (OGLAPI *glRectd) (GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2); | ||
| 341 | //void (OGLAPI *glRectdv) (const GLdouble *v1, const GLdouble *v2); | ||
| 342 | //void (OGLAPI *glRectf) (GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2); | ||
| 343 | //void (OGLAPI *glRectfv) (const GLfloat *v1, const GLfloat *v2); | ||
| 344 | //void (OGLAPI *glRecti) (GLint x1, GLint y1, GLint x2, GLint y2); | ||
| 345 | //void (OGLAPI *glRectiv) (const GLint *v1, const GLint *v2); | ||
| 346 | //void (OGLAPI *glRects) (GLshort x1, GLshort y1, GLshort x2, GLshort y2); | ||
| 347 | //void (OGLAPI *glRectsv) (const GLshort *v1, const GLshort *v2); | ||
| 348 | //GLint(OGLAPI *glRenderMode) (GLenum mode); | ||
| 349 | //void (OGLAPI *glRotated) (GLdouble angle, GLdouble x, GLdouble y, GLdouble z); | ||
| 350 | void (OGLAPI* glRotatef) (GLfloat angle, GLfloat x, GLfloat y, GLfloat z); | ||
| 351 | //void (OGLAPI *glScaled) (GLdouble x, GLdouble y, GLdouble z); | ||
| 352 | void (OGLAPI* glScalef) (GLfloat x, GLfloat y, GLfloat z); | ||
| 353 | void (OGLAPI* glScissor) (GLint x, GLint y, GLsizei width, GLsizei height); | ||
| 354 | //void (OGLAPI *glSelectBuffer) (GLsizei size, GLuint *buffer); | ||
| 355 | void (OGLAPI* glShadeModel) (GLenum mode); | ||
| 356 | void (OGLAPI* glStencilFunc) (GLenum func, GLint ref, GLuint mask); | ||
| 357 | void (OGLAPI* glStencilMask) (GLuint mask); | ||
| 358 | void (OGLAPI* glStencilOp) (GLenum fail, GLenum zfail, GLenum zpass); | ||
| 359 | //void (OGLAPI *glTexCoord1d) (GLdouble s); | ||
| 360 | //void (OGLAPI *glTexCoord1dv) (const GLdouble *v); | ||
| 361 | //void (OGLAPI *glTexCoord1f) (GLfloat s); | ||
| 362 | //void (OGLAPI *glTexCoord1fv) (const GLfloat *v); | ||
| 363 | //void (OGLAPI *glTexCoord1i) (GLint s); | ||
| 364 | //void (OGLAPI *glTexCoord1iv) (const GLint *v); | ||
| 365 | //void (OGLAPI *glTexCoord1s) (GLshort s); | ||
| 366 | //void (OGLAPI *glTexCoord1sv) (const GLshort *v); | ||
| 367 | //void (OGLAPI *glTexCoord2d) (GLdouble s, GLdouble t); | ||
| 368 | //void (OGLAPI *glTexCoord2dv) (const GLdouble *v); | ||
| 369 | //void (OGLAPI *glTexCoord2f) (GLfloat s, GLfloat t); | ||
| 370 | //void (OGLAPI *glTexCoord2fv) (const GLfloat *v); | ||
| 371 | //void (OGLAPI *glTexCoord2i) (GLint s, GLint t); | ||
| 372 | //void (OGLAPI *glTexCoord2iv) (const GLint *v); | ||
| 373 | //void (OGLAPI *glTexCoord2s) (GLshort s, GLshort t); | ||
| 374 | //void (OGLAPI *glTexCoord2sv) (const GLshort *v); | ||
| 375 | //void (OGLAPI *glTexCoord3d) (GLdouble s, GLdouble t, GLdouble r); | ||
| 376 | //void (OGLAPI *glTexCoord3dv) (const GLdouble *v); | ||
| 377 | //void (OGLAPI *glTexCoord3f) (GLfloat s, GLfloat t, GLfloat r); | ||
| 378 | //void (OGLAPI *glTexCoord3fv) (const GLfloat *v); | ||
| 379 | //void (OGLAPI *glTexCoord3i) (GLint s, GLint t, GLint r); | ||
| 380 | //void (OGLAPI *glTexCoord3iv) (const GLint *v); | ||
| 381 | //void (OGLAPI *glTexCoord3s) (GLshort s, GLshort t, GLshort r); | ||
| 382 | //void (OGLAPI *glTexCoord3sv) (const GLshort *v); | ||
| 383 | //void (OGLAPI *glTexCoord4d) (GLdouble s, GLdouble t, GLdouble r, GLdouble q); | ||
| 384 | //void (OGLAPI *glTexCoord4dv) (const GLdouble *v); | ||
| 385 | //void (OGLAPI *glTexCoord4f) (GLfloat s, GLfloat t, GLfloat r, GLfloat q); | ||
| 386 | //void (OGLAPI *glTexCoord4fv) (const GLfloat *v); | ||
| 387 | //void (OGLAPI *glTexCoord4i) (GLint s, GLint t, GLint r, GLint q); | ||
| 388 | //void (OGLAPI *glTexCoord4iv) (const GLint *v); | ||
| 389 | //void (OGLAPI *glTexCoord4s) (GLshort s, GLshort t, GLshort r, GLshort q); | ||
| 390 | //void (OGLAPI *glTexCoord4sv) (const GLshort *v); | ||
| 391 | void (OGLAPI* glTexCoordPointer)(GLint size, GLenum type, GLsizei stride, const GLvoid* pointer); | ||
| 392 | void (OGLAPI* glTexEnvf) (GLenum target, GLenum pname, GLfloat param); | ||
| 393 | void (OGLAPI* glTexEnvfv) (GLenum target, GLenum pname, const GLfloat* params); | ||
| 394 | void (OGLAPI* glTexEnvi) (GLenum target, GLenum pname, GLint param); | ||
| 395 | void (OGLAPI* glTexEnviv) (GLenum target, GLenum pname, const GLint* params); | ||
| 396 | //void (OGLAPI *glTexGend) (GLenum coord, GLenum pname, GLdouble param); | ||
| 397 | //void (OGLAPI *glTexGendv) (GLenum coord, GLenum pname, const GLdouble *params); | ||
| 398 | //void (OGLAPI *glTexGenf) (GLenum coord, GLenum pname, GLfloat param); | ||
| 399 | //void (OGLAPI *glTexGenfv) (GLenum coord, GLenum pname, const GLfloat *params); | ||
| 400 | //void (OGLAPI *glTexGeni) (GLenum coord, GLenum pname, GLint param); | ||
| 401 | //void (OGLAPI *glTexGeniv) (GLenum coord, GLenum pname, const GLint *params); | ||
| 402 | //void (OGLAPI *glTexImage1D) (GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const GLvoid *pixels); | ||
| 403 | void (OGLAPI* glTexImage2D) (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid* pixels); | ||
| 404 | void (OGLAPI* glTexParameterf) (GLenum target, GLenum pname, GLfloat param); | ||
| 405 | void (OGLAPI* glTexParameterfv) (GLenum target, GLenum pname, const GLfloat* params); | ||
| 406 | void (OGLAPI* glTexParameteri) (GLenum target, GLenum pname, GLint param); | ||
| 407 | void (OGLAPI* glTexParameteriv) (GLenum target, GLenum pname, const GLint* params); | ||
| 408 | //void (OGLAPI *glTexSubImage1D)(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels); | ||
| 409 | void (OGLAPI* glTexSubImage2D) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid* pixels); | ||
| 410 | //void (OGLAPI *glTranslated) (GLdouble x, GLdouble y, GLdouble z); | ||
| 411 | void (OGLAPI* glTranslatef) (GLfloat x, GLfloat y, GLfloat z); | ||
| 412 | //void (OGLAPI *glVertex2d) (GLdouble x, GLdouble y); | ||
| 413 | //void (OGLAPI *glVertex2dv) (const GLdouble *v); | ||
| 414 | //void (OGLAPI *glVertex2f) (GLfloat x, GLfloat y); | ||
| 415 | //void (OGLAPI *glVertex2fv) (const GLfloat *v); | ||
| 416 | //void (OGLAPI *glVertex2i) (GLint x, GLint y); | ||
| 417 | //void (OGLAPI *glVertex2iv) (const GLint *v); | ||
| 418 | //void (OGLAPI *glVertex2s) (GLshort x, GLshort y); | ||
| 419 | //void (OGLAPI *glVertex2sv) (const GLshort *v); | ||
| 420 | //void (OGLAPI *glVertex3d) (GLdouble x, GLdouble y, GLdouble z); | ||
| 421 | //void (OGLAPI *glVertex3dv) (const GLdouble *v); | ||
| 422 | //void (OGLAPI *glVertex3f) (GLfloat x, GLfloat y, GLfloat z); | ||
| 423 | //void (OGLAPI *glVertex3fv) (const GLfloat *v); | ||
| 424 | //void (OGLAPI *glVertex3i) (GLint x, GLint y, GLint z); | ||
| 425 | //void (OGLAPI *glVertex3iv) (const GLint *v); | ||
| 426 | //void (OGLAPI *glVertex3s) (GLshort x, GLshort y, GLshort z); | ||
| 427 | //void (OGLAPI *glVertex3sv) (const GLshort *v); | ||
| 428 | //void (OGLAPI *glVertex4d) (GLdouble x, GLdouble y, GLdouble z, GLdouble w); | ||
| 429 | //void (OGLAPI *glVertex4dv) (const GLdouble *v); | ||
| 430 | //void (OGLAPI *glVertex4f) (GLfloat x, GLfloat y, GLfloat z, GLfloat w); | ||
| 431 | //void (OGLAPI *glVertex4fv) (const GLfloat *v); | ||
| 432 | //void (OGLAPI *glVertex4i) (GLint x, GLint y, GLint z, GLint w); | ||
| 433 | //void (OGLAPI *glVertex4iv) (const GLint *v); | ||
| 434 | //void (OGLAPI *glVertex4s) (GLshort x, GLshort y, GLshort z, GLshort w); | ||
| 435 | //void (OGLAPI *glVertex4sv) (const GLshort *v); | ||
| 436 | void (OGLAPI* glVertexPointer) (GLint size, GLenum type, GLsizei stride, const GLvoid* pointer); | ||
| 437 | void (OGLAPI* glViewport) (GLint x, GLint y, GLsizei width, GLsizei height); | ||
| 438 | |||
| 439 | } gate_gl_api_functions_t; | ||
| 440 | |||
| 441 | |||
| 442 | static gate_gl_api_functions_t gate_gl_api = GATE_INIT_EMPTY; | ||
| 443 | |||
| 444 | #if defined(GATE_OPENGL_APIS_DIRECT_BINDING) | ||
| 445 | # define LOAD_NATIVE_GL_FUNCTION(func_name, func_ptr_address) *func_ptr_address = & func_name | ||
| 446 | #else | ||
| 447 | # define LOAD_NATIVE_GL_FUNCTION(func_name, func_ptr_address) gate_library_get_function_name(opengl_lib_handle, #func_name, func_ptr_address) | ||
| 448 | #endif | ||
| 449 | |||
| 450 | ✗ | static void load_native_gl_functions(gate_library_t opengl_lib_handle, gate_gl_api_functions_t* ptr_code) | |
| 451 | { | ||
| 452 | ✗ | gate_gl_api_functions_t code = GATE_INIT_EMPTY; | |
| 453 | |||
| 454 | //LOAD_NATIVE_GL_FUNCTION(glAccum, &code.glAccum); | ||
| 455 | ✗ | LOAD_NATIVE_GL_FUNCTION(glAlphaFunc, &code.glAlphaFunc); | |
| 456 | //LOAD_NATIVE_GL_FUNCTION(glAreTexturesResident, &code.glAreTexturesResident); | ||
| 457 | //LOAD_NATIVE_GL_FUNCTION(glArrayElement, &code.glArrayElement); | ||
| 458 | //LOAD_NATIVE_GL_FUNCTION(glBegin, &code.glBegin); | ||
| 459 | ✗ | LOAD_NATIVE_GL_FUNCTION(glBindTexture, &code.glBindTexture); | |
| 460 | //LOAD_NATIVE_GL_FUNCTION(glBitmap, &code.glBitmap); | ||
| 461 | ✗ | LOAD_NATIVE_GL_FUNCTION(glBlendFunc, &code.glBlendFunc); | |
| 462 | //LOAD_NATIVE_GL_FUNCTION(glCallList, &code.glCallList); | ||
| 463 | //LOAD_NATIVE_GL_FUNCTION(glCallLists, &code.glCallLists); | ||
| 464 | ✗ | LOAD_NATIVE_GL_FUNCTION(glClear, &code.glClear); | |
| 465 | //LOAD_NATIVE_GL_FUNCTION(glClearAccum, &code.glClearAccum); | ||
| 466 | ✗ | LOAD_NATIVE_GL_FUNCTION(glClearColor, &code.glClearColor); | |
| 467 | #if defined(GATE_OPENGL_NO_DBL) | ||
| 468 | LOAD_NATIVE_GL_FUNCTION(glClearDepthf, &code.glClearDepth); | ||
| 469 | #else | ||
| 470 | ✗ | LOAD_NATIVE_GL_FUNCTION(glClearDepth, &code.glClearDepth); | |
| 471 | #endif | ||
| 472 | //LOAD_NATIVE_GL_FUNCTION(glClearIndex, &code.glClearIndex); | ||
| 473 | ✗ | LOAD_NATIVE_GL_FUNCTION(glClearStencil, &code.glClearStencil); | |
| 474 | #if defined(GATE_OPENGL_NO_DBL) | ||
| 475 | LOAD_NATIVE_GL_FUNCTION(glClipPlanef, &code.glClipPlane); | ||
| 476 | #else | ||
| 477 | ✗ | LOAD_NATIVE_GL_FUNCTION(glClipPlane, &code.glClipPlane); | |
| 478 | #endif | ||
| 479 | //LOAD_NATIVE_GL_FUNCTION(glColor3b, &code.glColor3b); | ||
| 480 | //LOAD_NATIVE_GL_FUNCTION(glColor3bv, &code.glColor3bv); | ||
| 481 | //LOAD_NATIVE_GL_FUNCTION(glColor3d, &code.glColor3d); | ||
| 482 | //LOAD_NATIVE_GL_FUNCTION(glColor3dv, &code.glColor3dv); | ||
| 483 | //LOAD_NATIVE_GL_FUNCTION(glColor3f, &code.glColor3f); | ||
| 484 | //LOAD_NATIVE_GL_FUNCTION(glColor3fv, &code.glColor3fv); | ||
| 485 | //LOAD_NATIVE_GL_FUNCTION(glColor3i, &code.glColor3i); | ||
| 486 | //LOAD_NATIVE_GL_FUNCTION(glColor3iv, &code.glColor3iv); | ||
| 487 | //LOAD_NATIVE_GL_FUNCTION(glColor3s, &code.glColor3s); | ||
| 488 | //LOAD_NATIVE_GL_FUNCTION(glColor3sv, &code.glColor3sv); | ||
| 489 | //LOAD_NATIVE_GL_FUNCTION(glColor3ub, &code.glColor3ub); | ||
| 490 | //LOAD_NATIVE_GL_FUNCTION(glColor3ubv, &code.glColor3ubv); | ||
| 491 | //LOAD_NATIVE_GL_FUNCTION(glColor3ui, &code.glColor3ui); | ||
| 492 | //LOAD_NATIVE_GL_FUNCTION(glColor3uiv, &code.glColor3uiv); | ||
| 493 | //LOAD_NATIVE_GL_FUNCTION(glColor3us, &code.glColor3us); | ||
| 494 | //LOAD_NATIVE_GL_FUNCTION(glColor3usv, &code.glColor3usv); | ||
| 495 | //LOAD_NATIVE_GL_FUNCTION(glColor4b, &code.glColor4b); | ||
| 496 | //LOAD_NATIVE_GL_FUNCTION(glColor4bv, &code.glColor4bv); | ||
| 497 | //LOAD_NATIVE_GL_FUNCTION(glColor4d, &code.glColor4d); | ||
| 498 | //LOAD_NATIVE_GL_FUNCTION(glColor4dv, &code.glColor4dv); | ||
| 499 | ✗ | LOAD_NATIVE_GL_FUNCTION(glColor4f, &code.glColor4f); | |
| 500 | //LOAD_NATIVE_GL_FUNCTION(glColor4fv, &code.glColor4fv); | ||
| 501 | //LOAD_NATIVE_GL_FUNCTION(glColor4i, &code.glColor4i); | ||
| 502 | //LOAD_NATIVE_GL_FUNCTION(glColor4iv, &code.glColor4iv); | ||
| 503 | //LOAD_NATIVE_GL_FUNCTION(glColor4s, &code.glColor4s); | ||
| 504 | //LOAD_NATIVE_GL_FUNCTION(glColor4sv, &code.glColor4sv); | ||
| 505 | ✗ | LOAD_NATIVE_GL_FUNCTION(glColor4ub, &code.glColor4ub); | |
| 506 | //LOAD_NATIVE_GL_FUNCTION(glColor4ubv, &code.glColor4ubv); | ||
| 507 | //LOAD_NATIVE_GL_FUNCTION(glColor4ui, &code.glColor4ui); | ||
| 508 | //LOAD_NATIVE_GL_FUNCTION(glColor4uiv, &code.glColor4uiv); | ||
| 509 | //LOAD_NATIVE_GL_FUNCTION(glColor4us, &code.glColor4us); | ||
| 510 | //LOAD_NATIVE_GL_FUNCTION(glColor4usv, &code.glColor4usv); | ||
| 511 | ✗ | LOAD_NATIVE_GL_FUNCTION(glColorMask, &code.glColorMask); | |
| 512 | //LOAD_NATIVE_GL_FUNCTION(glColorMaterial, &code.glColorMaterial); | ||
| 513 | ✗ | LOAD_NATIVE_GL_FUNCTION(glColorPointer, &code.glColorPointer); | |
| 514 | //LOAD_NATIVE_GL_FUNCTION(glCopyPixels, &code.glCopyPixels); | ||
| 515 | //LOAD_NATIVE_GL_FUNCTION(glCopyTexImage1D, &code.glCopyTexImage1D); | ||
| 516 | ✗ | LOAD_NATIVE_GL_FUNCTION(glCopyTexImage2D, &code.glCopyTexImage2D); | |
| 517 | //LOAD_NATIVE_GL_FUNCTION(glCopyTexSubImage1D, &code.glCopyTexSubImage1D); | ||
| 518 | ✗ | LOAD_NATIVE_GL_FUNCTION(glCopyTexSubImage2D, &code.glCopyTexSubImage2D); | |
| 519 | ✗ | LOAD_NATIVE_GL_FUNCTION(glCullFace, &code.glCullFace); | |
| 520 | //LOAD_NATIVE_GL_FUNCTION(glDeleteLists, &code.glDeleteLists); | ||
| 521 | ✗ | LOAD_NATIVE_GL_FUNCTION(glDeleteTextures, &code.glDeleteTextures); | |
| 522 | ✗ | LOAD_NATIVE_GL_FUNCTION(glDepthFunc, &code.glDepthFunc); | |
| 523 | ✗ | LOAD_NATIVE_GL_FUNCTION(glDepthMask, &code.glDepthMask); | |
| 524 | #if defined(GATE_OPENGL_NO_DBL) | ||
| 525 | LOAD_NATIVE_GL_FUNCTION(glDepthRangef, &code.glDepthRange); | ||
| 526 | #else | ||
| 527 | ✗ | LOAD_NATIVE_GL_FUNCTION(glDepthRange, &code.glDepthRange); | |
| 528 | #endif | ||
| 529 | ✗ | LOAD_NATIVE_GL_FUNCTION(glDisable, &code.glDisable); | |
| 530 | ✗ | LOAD_NATIVE_GL_FUNCTION(glDisableClientState, &code.glDisableClientState); | |
| 531 | ✗ | LOAD_NATIVE_GL_FUNCTION(glDrawArrays, &code.glDrawArrays); | |
| 532 | //LOAD_NATIVE_GL_FUNCTION(glDrawBuffer, &code.glDrawBuffer); | ||
| 533 | ✗ | LOAD_NATIVE_GL_FUNCTION(glDrawElements, &code.glDrawElements); | |
| 534 | //LOAD_NATIVE_GL_FUNCTION(glDrawPixels, &code.glDrawPixels); | ||
| 535 | //LOAD_NATIVE_GL_FUNCTION(glEdgeFlag, &code.glEdgeFlag); | ||
| 536 | //LOAD_NATIVE_GL_FUNCTION(glEdgeFlagPointer, &code.glEdgeFlagPointer); | ||
| 537 | //LOAD_NATIVE_GL_FUNCTION(glEdgeFlagv, &code.glEdgeFlagv); | ||
| 538 | ✗ | LOAD_NATIVE_GL_FUNCTION(glEnable, &code.glEnable); | |
| 539 | ✗ | LOAD_NATIVE_GL_FUNCTION(glEnableClientState, &code.glEnableClientState); | |
| 540 | //LOAD_NATIVE_GL_FUNCTION(glEnd, &code.glEnd); | ||
| 541 | //LOAD_NATIVE_GL_FUNCTION(glEndList, &code.glEndList); | ||
| 542 | //LOAD_NATIVE_GL_FUNCTION(glEvalCoord1d, &code.glEvalCoord1d); | ||
| 543 | //LOAD_NATIVE_GL_FUNCTION(glEvalCoord1dv, &code.glEvalCoord1dv); | ||
| 544 | //LOAD_NATIVE_GL_FUNCTION(glEvalCoord1f, &code.glEvalCoord1f); | ||
| 545 | //LOAD_NATIVE_GL_FUNCTION(glEvalCoord1fv, &code.glEvalCoord1fv); | ||
| 546 | //LOAD_NATIVE_GL_FUNCTION(glEvalCoord2d, &code.glEvalCoord2d); | ||
| 547 | //LOAD_NATIVE_GL_FUNCTION(glEvalCoord2dv, &code.glEvalCoord2dv); | ||
| 548 | //LOAD_NATIVE_GL_FUNCTION(glEvalCoord2f, &code.glEvalCoord2f); | ||
| 549 | //LOAD_NATIVE_GL_FUNCTION(glEvalCoord2fv, &code.glEvalCoord2fv); | ||
| 550 | //LOAD_NATIVE_GL_FUNCTION(glEvalMesh1, &code.glEvalMesh1); | ||
| 551 | //LOAD_NATIVE_GL_FUNCTION(glEvalMesh2, &code.glEvalMesh2); | ||
| 552 | //LOAD_NATIVE_GL_FUNCTION(glEvalPoint1, &code.glEvalPoint1); | ||
| 553 | //LOAD_NATIVE_GL_FUNCTION(glEvalPoint2, &code.glEvalPoint2); | ||
| 554 | //LOAD_NATIVE_GL_FUNCTION(glFeedbackBuffer, &code.glFeedbackBuffer); | ||
| 555 | ✗ | LOAD_NATIVE_GL_FUNCTION(glFinish, &code.glFinish); | |
| 556 | ✗ | LOAD_NATIVE_GL_FUNCTION(glFlush, &code.glFlush); | |
| 557 | ✗ | LOAD_NATIVE_GL_FUNCTION(glFogf, &code.glFogf); | |
| 558 | ✗ | LOAD_NATIVE_GL_FUNCTION(glFogfv, &code.glFogfv); | |
| 559 | //LOAD_NATIVE_GL_FUNCTION(glFogi, &code.glFogi); | ||
| 560 | //LOAD_NATIVE_GL_FUNCTION(glFogiv, &code.glFogiv); | ||
| 561 | ✗ | LOAD_NATIVE_GL_FUNCTION(glFrontFace, &code.glFrontFace); | |
| 562 | #if defined(GATE_OPENGL_NO_DBL) | ||
| 563 | LOAD_NATIVE_GL_FUNCTION(glFrustumf, &code.glFrustum); | ||
| 564 | #else | ||
| 565 | ✗ | LOAD_NATIVE_GL_FUNCTION(glFrustum, &code.glFrustum); | |
| 566 | #endif | ||
| 567 | //LOAD_NATIVE_GL_FUNCTION(glGenLists, &code.glGenLists); | ||
| 568 | ✗ | LOAD_NATIVE_GL_FUNCTION(glGenTextures, &code.glGenTextures); | |
| 569 | ✗ | LOAD_NATIVE_GL_FUNCTION(glGetBooleanv, &code.glGetBooleanv); | |
| 570 | #if defined(GATE_OPENGL_NO_DBL) | ||
| 571 | //LOAD_NATIVE_GL_FUNCTION(glGetClipPlanef, &code.glGetClipPlane); | ||
| 572 | #else | ||
| 573 | //LOAD_NATIVE_GL_FUNCTION(glGetClipPlane, &code.glGetClipPlane); | ||
| 574 | #endif | ||
| 575 | //LOAD_NATIVE_GL_FUNCTION(glGetDoublev, &code.glGetDoublev); | ||
| 576 | ✗ | LOAD_NATIVE_GL_FUNCTION(glGetError, &code.glGetError); | |
| 577 | ✗ | LOAD_NATIVE_GL_FUNCTION(glGetFloatv, &code.glGetFloatv); | |
| 578 | ✗ | LOAD_NATIVE_GL_FUNCTION(glGetIntegerv, &code.glGetIntegerv); | |
| 579 | ✗ | LOAD_NATIVE_GL_FUNCTION(glGetLightfv, &code.glGetLightfv); | |
| 580 | //LOAD_NATIVE_GL_FUNCTION(glGetLightiv, &code.glGetLightiv); | ||
| 581 | //LOAD_NATIVE_GL_FUNCTION(glGetMapdv, &code.glGetMapdv); | ||
| 582 | //LOAD_NATIVE_GL_FUNCTION(glGetMapfv, &code.glGetMapfv); | ||
| 583 | //LOAD_NATIVE_GL_FUNCTION(glGetMapiv, &code.glGetMapiv); | ||
| 584 | ✗ | LOAD_NATIVE_GL_FUNCTION(glGetMaterialfv, &code.glGetMaterialfv); | |
| 585 | //LOAD_NATIVE_GL_FUNCTION(glGetMaterialiv, &code.glGetMaterialiv); | ||
| 586 | //LOAD_NATIVE_GL_FUNCTION(glGetPixelMapfv, &code.glGetPixelMapfv); | ||
| 587 | //LOAD_NATIVE_GL_FUNCTION(glGetPixelMapuiv, &code.glGetPixelMapuiv); | ||
| 588 | //LOAD_NATIVE_GL_FUNCTION(glGetPixelMapusv, &code.glGetPixelMapusv); | ||
| 589 | ✗ | LOAD_NATIVE_GL_FUNCTION(glGetPointerv, &code.glGetPointerv); | |
| 590 | //LOAD_NATIVE_GL_FUNCTION(glGetPolygonStipple, &code.glGetPolygonStipple); | ||
| 591 | ✗ | LOAD_NATIVE_GL_FUNCTION(glGetString, &code.glGetString); | |
| 592 | ✗ | LOAD_NATIVE_GL_FUNCTION(glGetTexEnvfv, &code.glGetTexEnvfv); | |
| 593 | ✗ | LOAD_NATIVE_GL_FUNCTION(glGetTexEnviv, &code.glGetTexEnviv); | |
| 594 | //LOAD_NATIVE_GL_FUNCTION(glGetTexGendv, &code.glGetTexGendv); | ||
| 595 | //LOAD_NATIVE_GL_FUNCTION(glGetTexGenfv, &code.glGetTexGenfv); | ||
| 596 | //LOAD_NATIVE_GL_FUNCTION(glGetTexGeniv, &code.glGetTexGeniv); | ||
| 597 | //LOAD_NATIVE_GL_FUNCTION(glGetTexImage, &code.glGetTexImage); | ||
| 598 | //LOAD_NATIVE_GL_FUNCTION(glGetTexLevelParameterfv, &code.glGetTexLevelParameterfv); | ||
| 599 | //LOAD_NATIVE_GL_FUNCTION(glGetTexLevelParameteriv, &code.glGetTexLevelParameteriv); | ||
| 600 | ✗ | LOAD_NATIVE_GL_FUNCTION(glGetTexParameterfv, &code.glGetTexParameterfv); | |
| 601 | ✗ | LOAD_NATIVE_GL_FUNCTION(glGetTexParameteriv, &code.glGetTexParameteriv); | |
| 602 | ✗ | LOAD_NATIVE_GL_FUNCTION(glHint, &code.glHint); | |
| 603 | //LOAD_NATIVE_GL_FUNCTION(glIndexMask, &code.glIndexMask); | ||
| 604 | //LOAD_NATIVE_GL_FUNCTION(glIndexPointer, &code.glIndexPointer); | ||
| 605 | //LOAD_NATIVE_GL_FUNCTION(glIndexd, &code.glIndexd); | ||
| 606 | //LOAD_NATIVE_GL_FUNCTION(glIndexdv, &code.glIndexdv); | ||
| 607 | //LOAD_NATIVE_GL_FUNCTION(glIndexf, &code.glIndexf); | ||
| 608 | //LOAD_NATIVE_GL_FUNCTION(glIndexfv, &code.glIndexfv); | ||
| 609 | //LOAD_NATIVE_GL_FUNCTION(glIndexi, &code.glIndexi); | ||
| 610 | //LOAD_NATIVE_GL_FUNCTION(glIndexiv, &code.glIndexiv); | ||
| 611 | //LOAD_NATIVE_GL_FUNCTION(glIndexs, &code.glIndexs); | ||
| 612 | //LOAD_NATIVE_GL_FUNCTION(glIndexsv, &code.glIndexsv); | ||
| 613 | //LOAD_NATIVE_GL_FUNCTION(glIndexub, &code.glIndexub); | ||
| 614 | //LOAD_NATIVE_GL_FUNCTION(glIndexubv, &code.glIndexubv); | ||
| 615 | //LOAD_NATIVE_GL_FUNCTION(glInitNames, &code.glInitNames); | ||
| 616 | //LOAD_NATIVE_GL_FUNCTION(glInterleavedArrays, &code.glInterleavedArrays); | ||
| 617 | ✗ | LOAD_NATIVE_GL_FUNCTION(glIsEnabled, &code.glIsEnabled); | |
| 618 | //LOAD_NATIVE_GL_FUNCTION(glIsList, &code.glIsList); | ||
| 619 | ✗ | LOAD_NATIVE_GL_FUNCTION(glIsTexture, &code.glIsTexture); | |
| 620 | ✗ | LOAD_NATIVE_GL_FUNCTION(glLightModelf, &code.glLightModelf); | |
| 621 | ✗ | LOAD_NATIVE_GL_FUNCTION(glLightModelfv, &code.glLightModelfv); | |
| 622 | //LOAD_NATIVE_GL_FUNCTION(glLightModeli, &code.glLightModeli); | ||
| 623 | //LOAD_NATIVE_GL_FUNCTION(glLightModeliv, &code.glLightModeliv); | ||
| 624 | ✗ | LOAD_NATIVE_GL_FUNCTION(glLightf, &code.glLightf); | |
| 625 | ✗ | LOAD_NATIVE_GL_FUNCTION(glLightfv, &code.glLightfv); | |
| 626 | //LOAD_NATIVE_GL_FUNCTION(glLighti, &code.glLighti); | ||
| 627 | //LOAD_NATIVE_GL_FUNCTION(glLightiv, &code.glLightiv); | ||
| 628 | //LOAD_NATIVE_GL_FUNCTION(glLineStipple, &code.glLineStipple); | ||
| 629 | ✗ | LOAD_NATIVE_GL_FUNCTION(glLineWidth, &code.glLineWidth); | |
| 630 | //LOAD_NATIVE_GL_FUNCTION(glListBase, &code.glListBase); | ||
| 631 | ✗ | LOAD_NATIVE_GL_FUNCTION(glLoadIdentity, &code.glLoadIdentity); | |
| 632 | //LOAD_NATIVE_GL_FUNCTION(glLoadMatrixd, &code.glLoadMatrixd); | ||
| 633 | ✗ | LOAD_NATIVE_GL_FUNCTION(glLoadMatrixf, &code.glLoadMatrixf); | |
| 634 | //LOAD_NATIVE_GL_FUNCTION(glLoadName, &code.glLoadName); | ||
| 635 | //LOAD_NATIVE_GL_FUNCTION(glLogicOp, &code.glLogicOp); | ||
| 636 | //LOAD_NATIVE_GL_FUNCTION(glMap1d, &code.glMap1d); | ||
| 637 | //LOAD_NATIVE_GL_FUNCTION(glMap1f, &code.glMap1f); | ||
| 638 | //LOAD_NATIVE_GL_FUNCTION(glMap2d, &code.glMap2d); | ||
| 639 | //LOAD_NATIVE_GL_FUNCTION(glMap2f, &code.glMap2f); | ||
| 640 | //LOAD_NATIVE_GL_FUNCTION(glMapGrid1d, &code.glMapGrid1d); | ||
| 641 | //LOAD_NATIVE_GL_FUNCTION(glMapGrid1f, &code.glMapGrid1f); | ||
| 642 | //LOAD_NATIVE_GL_FUNCTION(glMapGrid2d, &code.glMapGrid2d); | ||
| 643 | //LOAD_NATIVE_GL_FUNCTION(glMapGrid2f, &code.glMapGrid2f); | ||
| 644 | ✗ | LOAD_NATIVE_GL_FUNCTION(glMaterialf, &code.glMaterialf); | |
| 645 | ✗ | LOAD_NATIVE_GL_FUNCTION(glMaterialfv, &code.glMaterialfv); | |
| 646 | //LOAD_NATIVE_GL_FUNCTION(glMateriali, &code.glMateriali); | ||
| 647 | //LOAD_NATIVE_GL_FUNCTION(glMaterialiv, &code.glMaterialiv); | ||
| 648 | ✗ | LOAD_NATIVE_GL_FUNCTION(glMatrixMode, &code.glMatrixMode); | |
| 649 | //LOAD_NATIVE_GL_FUNCTION(glMultMatrixd, &code.glMultMatrixd); | ||
| 650 | ✗ | LOAD_NATIVE_GL_FUNCTION(glMultMatrixf, &code.glMultMatrixf); | |
| 651 | //LOAD_NATIVE_GL_FUNCTION(glNewList, &code.glNewList); | ||
| 652 | //LOAD_NATIVE_GL_FUNCTION(glNormal3b, &code.glNormal3b); | ||
| 653 | //LOAD_NATIVE_GL_FUNCTION(glNormal3bv, &code.glNormal3bv); | ||
| 654 | //LOAD_NATIVE_GL_FUNCTION(glNormal3d, &code.glNormal3d); | ||
| 655 | //LOAD_NATIVE_GL_FUNCTION(glNormal3dv, &code.glNormal3dv); | ||
| 656 | ✗ | LOAD_NATIVE_GL_FUNCTION(glNormal3f, &code.glNormal3f); | |
| 657 | //LOAD_NATIVE_GL_FUNCTION(glNormal3fv, &code.glNormal3fv); | ||
| 658 | //LOAD_NATIVE_GL_FUNCTION(glNormal3i, &code.glNormal3i); | ||
| 659 | //LOAD_NATIVE_GL_FUNCTION(glNormal3iv, &code.glNormal3iv); | ||
| 660 | //LOAD_NATIVE_GL_FUNCTION(glNormal3s, &code.glNormal3s); | ||
| 661 | //LOAD_NATIVE_GL_FUNCTION(glNormal3sv, &code.glNormal3sv); | ||
| 662 | ✗ | LOAD_NATIVE_GL_FUNCTION(glNormalPointer, &code.glNormalPointer); | |
| 663 | #if defined(GATE_OPENGL_NO_DBL) | ||
| 664 | LOAD_NATIVE_GL_FUNCTION(glOrthof, &code.glOrtho); | ||
| 665 | #else | ||
| 666 | ✗ | LOAD_NATIVE_GL_FUNCTION(glOrtho, &code.glOrtho); | |
| 667 | #endif | ||
| 668 | //LOAD_NATIVE_GL_FUNCTION(glPassThrough, &code.glPassThrough); | ||
| 669 | //LOAD_NATIVE_GL_FUNCTION(glPixelMapfv, &code.glPixelMapfv); | ||
| 670 | //LOAD_NATIVE_GL_FUNCTION(glPixelMapuiv, &code.glPixelMapuiv); | ||
| 671 | //LOAD_NATIVE_GL_FUNCTION(glPixelMapusv, &code.glPixelMapusv); | ||
| 672 | //LOAD_NATIVE_GL_FUNCTION(glPixelStoref, &code.glPixelStoref); | ||
| 673 | ✗ | LOAD_NATIVE_GL_FUNCTION(glPixelStorei, &code.glPixelStorei); | |
| 674 | //LOAD_NATIVE_GL_FUNCTION(glPixelTransferf, &code.glPixelTransferf); | ||
| 675 | //LOAD_NATIVE_GL_FUNCTION(glPixelTransferi, &code.glPixelTransferi); | ||
| 676 | //LOAD_NATIVE_GL_FUNCTION(glPixelZoom, &code.glPixelZoom); | ||
| 677 | ✗ | LOAD_NATIVE_GL_FUNCTION(glPointSize, &code.glPointSize); | |
| 678 | //LOAD_NATIVE_GL_FUNCTION(glPolygonMode, &code.glPolygonMode); | ||
| 679 | ✗ | LOAD_NATIVE_GL_FUNCTION(glPolygonOffset, &code.glPolygonOffset); | |
| 680 | //LOAD_NATIVE_GL_FUNCTION(glPolygonStipple, &code.glPolygonStipple); | ||
| 681 | //LOAD_NATIVE_GL_FUNCTION(glPopAttrib, &code.glPopAttrib); | ||
| 682 | //LOAD_NATIVE_GL_FUNCTION(glPopClientAttrib, &code.glPopClientAttrib); | ||
| 683 | ✗ | LOAD_NATIVE_GL_FUNCTION(glPopMatrix, &code.glPopMatrix); | |
| 684 | //LOAD_NATIVE_GL_FUNCTION(glPopName, &code.glPopName); | ||
| 685 | //LOAD_NATIVE_GL_FUNCTION(glPrioritizeTextures, &code.glPrioritizeTextures); | ||
| 686 | //LOAD_NATIVE_GL_FUNCTION(glPushAttrib, &code.glPushAttrib); | ||
| 687 | //LOAD_NATIVE_GL_FUNCTION(glPushClientAttrib, &code.glPushClientAttrib); | ||
| 688 | ✗ | LOAD_NATIVE_GL_FUNCTION(glPushMatrix, &code.glPushMatrix); | |
| 689 | //LOAD_NATIVE_GL_FUNCTION(glPushName, &code.glPushName); | ||
| 690 | //LOAD_NATIVE_GL_FUNCTION(glRasterPos2d, &code.glRasterPos2d); | ||
| 691 | //LOAD_NATIVE_GL_FUNCTION(glRasterPos2dv, &code.glRasterPos2dv); | ||
| 692 | //LOAD_NATIVE_GL_FUNCTION(glRasterPos2f, &code.glRasterPos2f); | ||
| 693 | //LOAD_NATIVE_GL_FUNCTION(glRasterPos2fv, &code.glRasterPos2fv); | ||
| 694 | //LOAD_NATIVE_GL_FUNCTION(glRasterPos2i, &code.glRasterPos2i); | ||
| 695 | //LOAD_NATIVE_GL_FUNCTION(glRasterPos2iv, &code.glRasterPos2iv); | ||
| 696 | //LOAD_NATIVE_GL_FUNCTION(glRasterPos2s, &code.glRasterPos2s); | ||
| 697 | //LOAD_NATIVE_GL_FUNCTION(glRasterPos2sv, &code.glRasterPos2sv); | ||
| 698 | //LOAD_NATIVE_GL_FUNCTION(glRasterPos3d, &code.glRasterPos3d); | ||
| 699 | //LOAD_NATIVE_GL_FUNCTION(glRasterPos3dv, &code.glRasterPos3dv); | ||
| 700 | //LOAD_NATIVE_GL_FUNCTION(glRasterPos3f, &code.glRasterPos3f); | ||
| 701 | //LOAD_NATIVE_GL_FUNCTION(glRasterPos3fv, &code.glRasterPos3fv); | ||
| 702 | //LOAD_NATIVE_GL_FUNCTION(glRasterPos3i, &code.glRasterPos3i); | ||
| 703 | //LOAD_NATIVE_GL_FUNCTION(glRasterPos3iv, &code.glRasterPos3iv); | ||
| 704 | //LOAD_NATIVE_GL_FUNCTION(glRasterPos3s, &code.glRasterPos3s); | ||
| 705 | //LOAD_NATIVE_GL_FUNCTION(glRasterPos3sv, &code.glRasterPos3sv); | ||
| 706 | //LOAD_NATIVE_GL_FUNCTION(glRasterPos4d, &code.glRasterPos4d); | ||
| 707 | //LOAD_NATIVE_GL_FUNCTION(glRasterPos4dv, &code.glRasterPos4dv); | ||
| 708 | //LOAD_NATIVE_GL_FUNCTION(glRasterPos4f, &code.glRasterPos4f); | ||
| 709 | //LOAD_NATIVE_GL_FUNCTION(glRasterPos4fv, &code.glRasterPos4fv); | ||
| 710 | //LOAD_NATIVE_GL_FUNCTION(glRasterPos4i, &code.glRasterPos4i); | ||
| 711 | //LOAD_NATIVE_GL_FUNCTION(glRasterPos4iv, &code.glRasterPos4iv); | ||
| 712 | //LOAD_NATIVE_GL_FUNCTION(glRasterPos4s, &code.glRasterPos4s); | ||
| 713 | //LOAD_NATIVE_GL_FUNCTION(glRasterPos4sv, &code.glRasterPos4sv); | ||
| 714 | //LOAD_NATIVE_GL_FUNCTION(glReadBuffer, &code.glReadBuffer); | ||
| 715 | ✗ | LOAD_NATIVE_GL_FUNCTION(glReadPixels, &code.glReadPixels); | |
| 716 | //LOAD_NATIVE_GL_FUNCTION(glRectd, &code.glRectd); | ||
| 717 | //LOAD_NATIVE_GL_FUNCTION(glRectdv, &code.glRectdv); | ||
| 718 | //LOAD_NATIVE_GL_FUNCTION(glRectf, &code.glRectf); | ||
| 719 | //LOAD_NATIVE_GL_FUNCTION(glRectfv, &code.glRectfv); | ||
| 720 | //LOAD_NATIVE_GL_FUNCTION(glRecti, &code.glRecti); | ||
| 721 | //LOAD_NATIVE_GL_FUNCTION(glRectiv, &code.glRectiv); | ||
| 722 | //LOAD_NATIVE_GL_FUNCTION(glRects, &code.glRects); | ||
| 723 | //LOAD_NATIVE_GL_FUNCTION(glRectsv, &code.glRectsv); | ||
| 724 | //LOAD_NATIVE_GL_FUNCTION(glRenderMode, &code.glRenderMode); | ||
| 725 | //LOAD_NATIVE_GL_FUNCTION(glRotated, &code.glRotated); | ||
| 726 | ✗ | LOAD_NATIVE_GL_FUNCTION(glRotatef, &code.glRotatef); | |
| 727 | //LOAD_NATIVE_GL_FUNCTION(glScaled, &code.glScaled); | ||
| 728 | ✗ | LOAD_NATIVE_GL_FUNCTION(glScalef, &code.glScalef); | |
| 729 | ✗ | LOAD_NATIVE_GL_FUNCTION(glScissor, &code.glScissor); | |
| 730 | //LOAD_NATIVE_GL_FUNCTION(glSelectBuffer, &code.glSelectBuffer); | ||
| 731 | ✗ | LOAD_NATIVE_GL_FUNCTION(glShadeModel, &code.glShadeModel); | |
| 732 | ✗ | LOAD_NATIVE_GL_FUNCTION(glStencilFunc, &code.glStencilFunc); | |
| 733 | ✗ | LOAD_NATIVE_GL_FUNCTION(glStencilMask, &code.glStencilMask); | |
| 734 | ✗ | LOAD_NATIVE_GL_FUNCTION(glStencilOp, &code.glStencilOp); | |
| 735 | //LOAD_NATIVE_GL_FUNCTION(glTexCoord1d, &code.glTexCoord1d); | ||
| 736 | //LOAD_NATIVE_GL_FUNCTION(glTexCoord1dv, &code.glTexCoord1dv); | ||
| 737 | //LOAD_NATIVE_GL_FUNCTION(glTexCoord1f, &code.glTexCoord1f); | ||
| 738 | //LOAD_NATIVE_GL_FUNCTION(glTexCoord1fv, &code.glTexCoord1fv); | ||
| 739 | //LOAD_NATIVE_GL_FUNCTION(glTexCoord1i, &code.glTexCoord1i); | ||
| 740 | //LOAD_NATIVE_GL_FUNCTION(glTexCoord1iv, &code.glTexCoord1iv); | ||
| 741 | //LOAD_NATIVE_GL_FUNCTION(glTexCoord1s, &code.glTexCoord1s); | ||
| 742 | //LOAD_NATIVE_GL_FUNCTION(glTexCoord1sv, &code.glTexCoord1sv); | ||
| 743 | //LOAD_NATIVE_GL_FUNCTION(glTexCoord2d, &code.glTexCoord2d); | ||
| 744 | //LOAD_NATIVE_GL_FUNCTION(glTexCoord2dv, &code.glTexCoord2dv); | ||
| 745 | //LOAD_NATIVE_GL_FUNCTION(glTexCoord2f, &code.glTexCoord2f); | ||
| 746 | //LOAD_NATIVE_GL_FUNCTION(glTexCoord2fv, &code.glTexCoord2fv); | ||
| 747 | //LOAD_NATIVE_GL_FUNCTION(glTexCoord2i, &code.glTexCoord2i); | ||
| 748 | //LOAD_NATIVE_GL_FUNCTION(glTexCoord2iv, &code.glTexCoord2iv); | ||
| 749 | //LOAD_NATIVE_GL_FUNCTION(glTexCoord2s, &code.glTexCoord2s); | ||
| 750 | //LOAD_NATIVE_GL_FUNCTION(glTexCoord2sv, &code.glTexCoord2sv); | ||
| 751 | //LOAD_NATIVE_GL_FUNCTION(glTexCoord3d, &code.glTexCoord3d); | ||
| 752 | //LOAD_NATIVE_GL_FUNCTION(glTexCoord3dv, &code.glTexCoord3dv); | ||
| 753 | //LOAD_NATIVE_GL_FUNCTION(glTexCoord3f, &code.glTexCoord3f); | ||
| 754 | //LOAD_NATIVE_GL_FUNCTION(glTexCoord3fv, &code.glTexCoord3fv); | ||
| 755 | //LOAD_NATIVE_GL_FUNCTION(glTexCoord3i, &code.glTexCoord3i); | ||
| 756 | //LOAD_NATIVE_GL_FUNCTION(glTexCoord3iv, &code.glTexCoord3iv); | ||
| 757 | //LOAD_NATIVE_GL_FUNCTION(glTexCoord3s, &code.glTexCoord3s); | ||
| 758 | //LOAD_NATIVE_GL_FUNCTION(glTexCoord3sv, &code.glTexCoord3sv); | ||
| 759 | //LOAD_NATIVE_GL_FUNCTION(glTexCoord4d, &code.glTexCoord4d); | ||
| 760 | //LOAD_NATIVE_GL_FUNCTION(glTexCoord4dv, &code.glTexCoord4dv); | ||
| 761 | //LOAD_NATIVE_GL_FUNCTION(glTexCoord4f, &code.glTexCoord4f); | ||
| 762 | //LOAD_NATIVE_GL_FUNCTION(glTexCoord4fv, &code.glTexCoord4fv); | ||
| 763 | //LOAD_NATIVE_GL_FUNCTION(glTexCoord4i, &code.glTexCoord4i); | ||
| 764 | //LOAD_NATIVE_GL_FUNCTION(glTexCoord4iv, &code.glTexCoord4iv); | ||
| 765 | //LOAD_NATIVE_GL_FUNCTION(glTexCoord4s, &code.glTexCoord4s); | ||
| 766 | //LOAD_NATIVE_GL_FUNCTION(glTexCoord4sv, &code.glTexCoord4sv); | ||
| 767 | ✗ | LOAD_NATIVE_GL_FUNCTION(glTexCoordPointer, &code.glTexCoordPointer); | |
| 768 | ✗ | LOAD_NATIVE_GL_FUNCTION(glTexEnvf, &code.glTexEnvf); | |
| 769 | ✗ | LOAD_NATIVE_GL_FUNCTION(glTexEnvfv, &code.glTexEnvfv); | |
| 770 | ✗ | LOAD_NATIVE_GL_FUNCTION(glTexEnvi, &code.glTexEnvi); | |
| 771 | ✗ | LOAD_NATIVE_GL_FUNCTION(glTexEnviv, &code.glTexEnviv); | |
| 772 | //LOAD_NATIVE_GL_FUNCTION(glTexGend, &code.glTexGend); | ||
| 773 | //LOAD_NATIVE_GL_FUNCTION(glTexGendv, &code.glTexGendv); | ||
| 774 | //LOAD_NATIVE_GL_FUNCTION(glTexGenf, &code.glTexGenf); | ||
| 775 | //LOAD_NATIVE_GL_FUNCTION(glTexGenfv, &code.glTexGenfv); | ||
| 776 | //LOAD_NATIVE_GL_FUNCTION(glTexGeni, &code.glTexGeni); | ||
| 777 | //LOAD_NATIVE_GL_FUNCTION(glTexGeniv, &code.glTexGeniv); | ||
| 778 | //LOAD_NATIVE_GL_FUNCTION(glTexImage1D, &code.glTexImage1D); | ||
| 779 | ✗ | LOAD_NATIVE_GL_FUNCTION(glTexImage2D, &code.glTexImage2D); | |
| 780 | ✗ | LOAD_NATIVE_GL_FUNCTION(glTexParameterf, &code.glTexParameterf); | |
| 781 | ✗ | LOAD_NATIVE_GL_FUNCTION(glTexParameterfv, &code.glTexParameterfv); | |
| 782 | ✗ | LOAD_NATIVE_GL_FUNCTION(glTexParameteri, &code.glTexParameteri); | |
| 783 | ✗ | LOAD_NATIVE_GL_FUNCTION(glTexParameteriv, &code.glTexParameteriv); | |
| 784 | //LOAD_NATIVE_GL_FUNCTION(glTexSubImage1D, &code.glTexSubImage1D); | ||
| 785 | ✗ | LOAD_NATIVE_GL_FUNCTION(glTexSubImage2D, &code.glTexSubImage2D); | |
| 786 | //LOAD_NATIVE_GL_FUNCTION(glTranslated, &code.glTranslated); | ||
| 787 | ✗ | LOAD_NATIVE_GL_FUNCTION(glTranslatef, &code.glTranslatef); | |
| 788 | //LOAD_NATIVE_GL_FUNCTION(glVertex2d, &code.glVertex2d); | ||
| 789 | //LOAD_NATIVE_GL_FUNCTION(glVertex2dv, &code.glVertex2dv); | ||
| 790 | //LOAD_NATIVE_GL_FUNCTION(glVertex2f, &code.glVertex2f); | ||
| 791 | //LOAD_NATIVE_GL_FUNCTION(glVertex2fv, &code.glVertex2fv); | ||
| 792 | //LOAD_NATIVE_GL_FUNCTION(glVertex2i, &code.glVertex2i); | ||
| 793 | //LOAD_NATIVE_GL_FUNCTION(glVertex2iv, &code.glVertex2iv); | ||
| 794 | //LOAD_NATIVE_GL_FUNCTION(glVertex2s, &code.glVertex2s); | ||
| 795 | //LOAD_NATIVE_GL_FUNCTION(glVertex2sv, &code.glVertex2sv); | ||
| 796 | //LOAD_NATIVE_GL_FUNCTION(glVertex3d, &code.glVertex3d); | ||
| 797 | //LOAD_NATIVE_GL_FUNCTION(glVertex3dv, &code.glVertex3dv); | ||
| 798 | //LOAD_NATIVE_GL_FUNCTION(glVertex3f, &code.glVertex3f); | ||
| 799 | //LOAD_NATIVE_GL_FUNCTION(glVertex3fv, &code.glVertex3fv); | ||
| 800 | //LOAD_NATIVE_GL_FUNCTION(glVertex3i, &code.glVertex3i); | ||
| 801 | //LOAD_NATIVE_GL_FUNCTION(glVertex3iv, &code.glVertex3iv); | ||
| 802 | //LOAD_NATIVE_GL_FUNCTION(glVertex3s, &code.glVertex3s); | ||
| 803 | //LOAD_NATIVE_GL_FUNCTION(glVertex3sv, &code.glVertex3sv); | ||
| 804 | //LOAD_NATIVE_GL_FUNCTION(glVertex4d, &code.glVertex4d); | ||
| 805 | //LOAD_NATIVE_GL_FUNCTION(glVertex4dv, &code.glVertex4dv); | ||
| 806 | //LOAD_NATIVE_GL_FUNCTION(glVertex4f, &code.glVertex4f); | ||
| 807 | //LOAD_NATIVE_GL_FUNCTION(glVertex4fv, &code.glVertex4fv); | ||
| 808 | //LOAD_NATIVE_GL_FUNCTION(glVertex4i, &code.glVertex4i); | ||
| 809 | //LOAD_NATIVE_GL_FUNCTION(glVertex4iv, &code.glVertex4iv); | ||
| 810 | //LOAD_NATIVE_GL_FUNCTION(glVertex4s, &code.glVertex4s); | ||
| 811 | //LOAD_NATIVE_GL_FUNCTION(glVertex4sv, &code.glVertex4sv); | ||
| 812 | ✗ | LOAD_NATIVE_GL_FUNCTION(glVertexPointer, &code.glVertexPointer); | |
| 813 | ✗ | LOAD_NATIVE_GL_FUNCTION(glViewport, &code.glViewport); | |
| 814 | |||
| 815 | ✗ | gate_mem_copy(ptr_code, &code, sizeof(gate_gl_api_functions_t)); | |
| 816 | ✗ | } | |
| 817 | |||
| 818 | ✗ | static gate_result_t gate_gl_api_load_functions(void) | |
| 819 | { | ||
| 820 | static volatile bool opengl_lib_loaded = false; | ||
| 821 | static gate_library_t opengl_lib_handle = NULL; | ||
| 822 | static gate_string_t const opengl_lib_name = GATE_STRING_INIT_STATIC(OPENGL_LIBNAME); | ||
| 823 | static gate_string_t const opengl_lib_name_alt = GATE_STRING_INIT_STATIC(OPENGL_LIBNAME_ALT); | ||
| 824 | ✗ | gate_result_t ret = GATE_RESULT_FAILED; | |
| 825 | |||
| 826 | ✗ | if (opengl_lib_loaded) | |
| 827 | { | ||
| 828 | ✗ | ret = GATE_RESULT_OK; | |
| 829 | } | ||
| 830 | else | ||
| 831 | { | ||
| 832 | do | ||
| 833 | { | ||
| 834 | #if !defined(GATE_OPENGL_APIS_DIRECT_BINDING) | ||
| 835 | ✗ | ret = gate_library_open(&opengl_lib_name, &opengl_lib_handle, GATE_LIBRARY_FLAG_DEFAULT); | |
| 836 | ✗ | if (GATE_FAILED(ret)) | |
| 837 | { | ||
| 838 | ✗ | ret = gate_library_open(&opengl_lib_name_alt, &opengl_lib_handle, GATE_LIBRARY_FLAG_DEFAULT); | |
| 839 | } | ||
| 840 | ✗ | GATE_BREAK_IF_FAILED(ret); | |
| 841 | #endif | ||
| 842 | |||
| 843 | ✗ | load_native_gl_functions(opengl_lib_handle, &gate_gl_api); | |
| 844 | |||
| 845 | ✗ | opengl_lib_loaded = true; | |
| 846 | ✗ | ret = GATE_RESULT_OK; | |
| 847 | } while (0); | ||
| 848 | } | ||
| 849 | ✗ | return ret; | |
| 850 | } | ||
| 851 | |||
| 852 | |||
| 853 | |||
| 854 | #if defined(GATE_GRAPHICS_OPENGL2_SUPPORT) | ||
| 855 | |||
| 856 | typedef struct gate_gl2_api_functions_class | ||
| 857 | { | ||
| 858 | GLuint (OGLAPI *glCreateShader) (GLenum type); | ||
| 859 | void (OGLAPI *glShaderSource) (GLuint shader, GLsizei count, const GLchar * const * string, const GLint * length); | ||
| 860 | void (OGLAPI *glCompileShader) (GLuint shader); | ||
| 861 | void (OGLAPI *glGetShaderiv) (GLuint shader, GLenum pname, GLint * params); | ||
| 862 | void (OGLAPI *glGetShaderInfoLog) (GLuint shader, GLsizei maxLength, GLsizei * length, GLchar * infoLog); | ||
| 863 | void (OGLAPI *glDeleteShader) (GLuint shader); | ||
| 864 | |||
| 865 | |||
| 866 | GLuint (OGLAPI *glCreateProgram) (void); | ||
| 867 | void (OGLAPI *glLinkProgram) (GLuint program); | ||
| 868 | void (OGLAPI *glGetProgramiv) (GLuint program, GLenum pname, GLint * params); | ||
| 869 | void (OGLAPI *glGetProgramInfoLog) (GLuint program, GLsizei bufSize, GLsizei * length, GLchar * infoLog); | ||
| 870 | void (OGLAPI *glUseProgram) (GLuint program); | ||
| 871 | void (OGLAPI *glAttachShader) (GLuint program, GLuint shader); | ||
| 872 | void (OGLAPI *glDeleteProgram) (GLuint program); | ||
| 873 | void (OGLAPI *glBindAttribLocation) (GLuint program, GLuint index, const GLchar * name); | ||
| 874 | GLint (OGLAPI *glGetAttribLocation) (GLuint program, const GLchar * name); | ||
| 875 | GLint (OGLAPI *glGetUniformLocation) (GLuint program, const GLchar * name); | ||
| 876 | |||
| 877 | void (OGLAPI *glGenBuffers) (GLsizei n, GLuint * buffers); | ||
| 878 | void (OGLAPI *glDeleteBuffers) (GLsizei n, const GLuint * buffers); | ||
| 879 | void (OGLAPI *glBindBuffer) (GLenum target, GLuint buffer); | ||
| 880 | void (OGLAPI *glBufferData) (GLenum target, GLsizeiptr size, const void * data, GLenum usage); | ||
| 881 | //void (OGLAPI *glNamedBufferData) (GLuint buffer, GLsizeiptr size, const void * data, GLenum usage); | ||
| 882 | void (OGLAPI *glVertexAttribPointer) (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void * pointer); | ||
| 883 | void (OGLAPI *glEnableVertexAttribArray) (GLuint index); | ||
| 884 | void (OGLAPI *glDisableVertexAttribArray)(GLuint index); | ||
| 885 | void (OGLAPI *glActiveTexture) (GLenum texture); | ||
| 886 | |||
| 887 | void (OGLAPI *glUniform1f)(GLint location, GLfloat v0); | ||
| 888 | void (OGLAPI *glUniform2f)(GLint location, GLfloat v0, GLfloat v1); | ||
| 889 | void (OGLAPI *glUniform3f)(GLint location, GLfloat v0, GLfloat v1, GLfloat v2); | ||
| 890 | void (OGLAPI *glUniform4f)(GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); | ||
| 891 | void (OGLAPI *glUniform1fv)(GLint location,GLsizei count,const GLfloat *value); | ||
| 892 | void (OGLAPI *glUniform2fv)(GLint location,GLsizei count,const GLfloat *value); | ||
| 893 | void (OGLAPI *glUniform3fv)(GLint location,GLsizei count,const GLfloat *value); | ||
| 894 | void (OGLAPI *glUniform4fv)(GLint location,GLsizei count,const GLfloat *value); | ||
| 895 | void (OGLAPI *glUniform1i)(GLint location, GLint v0); | ||
| 896 | void (OGLAPI *glUniform2i)(GLint location, GLint v0, GLint v1); | ||
| 897 | void (OGLAPI *glUniform3i)(GLint location, GLint v0, GLint v1, GLint v2); | ||
| 898 | void (OGLAPI *glUniform4i)(GLint location, GLint v0, GLint v1, GLint v2, GLint v3); | ||
| 899 | void (OGLAPI *glUniform1iv)(GLint location, GLsizei count, const GLint *value); | ||
| 900 | void (OGLAPI *glUniform2iv)(GLint location, GLsizei count, const GLint *value); | ||
| 901 | void (OGLAPI *glUniform3iv)(GLint location, GLsizei count, const GLint *value); | ||
| 902 | void (OGLAPI *glUniform4iv)(GLint location, GLsizei count, const GLint *value); | ||
| 903 | void (OGLAPI *glUniformMatrix2fv)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); | ||
| 904 | void (OGLAPI *glUniformMatrix3fv)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); | ||
| 905 | void (OGLAPI *glUniformMatrix4fv)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); | ||
| 906 | |||
| 907 | } gate_gl2_api_functions_t; | ||
| 908 | |||
| 909 | static gate_gl2_api_functions_t gate_gl2_api = GATE_INIT_EMPTY; | ||
| 910 | |||
| 911 | #if defined(GATE_OPENGL_APIS_DIRECT_BINDING) | ||
| 912 | # define LOAD_NATIVE_GL2_FUNCTION(func_name, func_ptr_address) *func_ptr_address = & func_name | ||
| 913 | #else | ||
| 914 | # define LOAD_NATIVE_GL2_FUNCTION(func_name, func_ptr_address) gate_library_get_function_name(opengl_lib_handle, #func_name, func_ptr_address) | ||
| 915 | #endif | ||
| 916 | |||
| 917 | static void load_native_gl2_functions(gate_library_t opengl_lib_handle, gate_gl2_api_functions_t* ptr_code) | ||
| 918 | { | ||
| 919 | gate_gl2_api_functions_t code = GATE_INIT_EMPTY; | ||
| 920 | |||
| 921 | //LOAD_NATIVE_GL_FUNCTION(glAccum, &code.glAccum); | ||
| 922 | LOAD_NATIVE_GL2_FUNCTION(glCreateShader, &code.glCreateShader); | ||
| 923 | LOAD_NATIVE_GL2_FUNCTION(glShaderSource, &code.glShaderSource); | ||
| 924 | LOAD_NATIVE_GL2_FUNCTION(glCompileShader, &code.glCompileShader); | ||
| 925 | LOAD_NATIVE_GL2_FUNCTION(glGetShaderiv, &code.glGetShaderiv); | ||
| 926 | LOAD_NATIVE_GL2_FUNCTION(glGetShaderInfoLog, &code.glGetShaderInfoLog); | ||
| 927 | LOAD_NATIVE_GL2_FUNCTION(glDeleteShader, &code.glDeleteShader); | ||
| 928 | |||
| 929 | LOAD_NATIVE_GL2_FUNCTION(glCreateProgram, &code.glCreateProgram); | ||
| 930 | LOAD_NATIVE_GL2_FUNCTION(glLinkProgram, &code.glLinkProgram); | ||
| 931 | LOAD_NATIVE_GL2_FUNCTION(glGetProgramiv, &code.glGetProgramiv); | ||
| 932 | LOAD_NATIVE_GL2_FUNCTION(glGetProgramInfoLog, &code.glGetProgramInfoLog); | ||
| 933 | LOAD_NATIVE_GL2_FUNCTION(glUseProgram, &code.glUseProgram); | ||
| 934 | LOAD_NATIVE_GL2_FUNCTION(glAttachShader, &code.glAttachShader); | ||
| 935 | LOAD_NATIVE_GL2_FUNCTION(glDeleteProgram, &code.glDeleteProgram); | ||
| 936 | LOAD_NATIVE_GL2_FUNCTION(glBindAttribLocation, &code.glBindAttribLocation); | ||
| 937 | LOAD_NATIVE_GL2_FUNCTION(glGetAttribLocation, &code.glGetAttribLocation); | ||
| 938 | LOAD_NATIVE_GL2_FUNCTION(glGetUniformLocation, &code.glGetUniformLocation); | ||
| 939 | |||
| 940 | |||
| 941 | LOAD_NATIVE_GL2_FUNCTION(glGenBuffers, &code.glGenBuffers); | ||
| 942 | LOAD_NATIVE_GL2_FUNCTION(glDeleteBuffers, &code.glDeleteBuffers); | ||
| 943 | LOAD_NATIVE_GL2_FUNCTION(glBindBuffer, &code.glBindBuffer); | ||
| 944 | LOAD_NATIVE_GL2_FUNCTION(glBufferData, &code.glBufferData); | ||
| 945 | //LOAD_NATIVE_GL2_FUNCTION(glNamedBufferData, &code.glNamedBufferData); | ||
| 946 | LOAD_NATIVE_GL2_FUNCTION(glVertexAttribPointer, &code.glVertexAttribPointer); | ||
| 947 | LOAD_NATIVE_GL2_FUNCTION(glEnableVertexAttribArray, &code.glEnableVertexAttribArray); | ||
| 948 | LOAD_NATIVE_GL2_FUNCTION(glDisableVertexAttribArray, &code.glDisableVertexAttribArray); | ||
| 949 | LOAD_NATIVE_GL2_FUNCTION(glActiveTexture, &code.glActiveTexture); | ||
| 950 | |||
| 951 | LOAD_NATIVE_GL2_FUNCTION(glUniform1f, &code.glUniform1f); | ||
| 952 | LOAD_NATIVE_GL2_FUNCTION(glUniform2f, &code.glUniform2f); | ||
| 953 | LOAD_NATIVE_GL2_FUNCTION(glUniform3f, &code.glUniform3f); | ||
| 954 | LOAD_NATIVE_GL2_FUNCTION(glUniform4f, &code.glUniform4f); | ||
| 955 | LOAD_NATIVE_GL2_FUNCTION(glUniform1fv, &code.glUniform1fv); | ||
| 956 | LOAD_NATIVE_GL2_FUNCTION(glUniform2fv, &code.glUniform2fv); | ||
| 957 | LOAD_NATIVE_GL2_FUNCTION(glUniform3fv, &code.glUniform3fv); | ||
| 958 | LOAD_NATIVE_GL2_FUNCTION(glUniform4fv, &code.glUniform4fv); | ||
| 959 | LOAD_NATIVE_GL2_FUNCTION(glUniform1i, &code.glUniform1i); | ||
| 960 | LOAD_NATIVE_GL2_FUNCTION(glUniform2i, &code.glUniform2i); | ||
| 961 | LOAD_NATIVE_GL2_FUNCTION(glUniform3i, &code.glUniform3i); | ||
| 962 | LOAD_NATIVE_GL2_FUNCTION(glUniform4i, &code.glUniform4i); | ||
| 963 | LOAD_NATIVE_GL2_FUNCTION(glUniform1iv, &code.glUniform1iv); | ||
| 964 | LOAD_NATIVE_GL2_FUNCTION(glUniform2iv, &code.glUniform2iv); | ||
| 965 | LOAD_NATIVE_GL2_FUNCTION(glUniform3iv, &code.glUniform3iv); | ||
| 966 | LOAD_NATIVE_GL2_FUNCTION(glUniform4iv, &code.glUniform4iv); | ||
| 967 | LOAD_NATIVE_GL2_FUNCTION(glUniformMatrix2fv, &code.glUniformMatrix2fv); | ||
| 968 | LOAD_NATIVE_GL2_FUNCTION(glUniformMatrix3fv, &code.glUniformMatrix3fv); | ||
| 969 | LOAD_NATIVE_GL2_FUNCTION(glUniformMatrix4fv, &code.glUniformMatrix4fv); | ||
| 970 | |||
| 971 | gate_mem_copy(ptr_code, &code, sizeof(gate_gl2_api_functions_t)); | ||
| 972 | } | ||
| 973 | |||
| 974 | |||
| 975 | static gate_result_t gate_gl2_api_load_functions(void) | ||
| 976 | { | ||
| 977 | static volatile bool opengl2_lib_loaded = false; | ||
| 978 | static gate_library_t opengl2_lib_handle = NULL; | ||
| 979 | static gate_string_t const opengl2_lib_name = GATE_STRING_INIT_STATIC(OPENGL_LIBNAME); | ||
| 980 | static gate_string_t const opengl2_lib_name_alt = GATE_STRING_INIT_STATIC(OPENGL_LIBNAME_ALT); | ||
| 981 | gate_result_t ret = GATE_RESULT_FAILED; | ||
| 982 | |||
| 983 | if (opengl2_lib_loaded) | ||
| 984 | { | ||
| 985 | ret = GATE_RESULT_OK; | ||
| 986 | } | ||
| 987 | else | ||
| 988 | { | ||
| 989 | do | ||
| 990 | { | ||
| 991 | #if !defined(GATE_OPENGL_APIS_DIRECT_BINDING) | ||
| 992 | ret = gate_library_open(&opengl2_lib_name, &opengl2_lib_handle, GATE_LIBRARY_FLAG_DEFAULT); | ||
| 993 | if (GATE_FAILED(ret)) | ||
| 994 | { | ||
| 995 | ret = gate_library_open(&opengl2_lib_name_alt, &opengl2_lib_handle, GATE_LIBRARY_FLAG_DEFAULT); | ||
| 996 | } | ||
| 997 | GATE_BREAK_IF_FAILED(ret); | ||
| 998 | #endif | ||
| 999 | |||
| 1000 | load_native_gl2_functions(opengl2_lib_handle, &gate_gl2_api); | ||
| 1001 | |||
| 1002 | opengl2_lib_loaded = true; | ||
| 1003 | ret = GATE_RESULT_OK; | ||
| 1004 | } while (0); | ||
| 1005 | } | ||
| 1006 | return ret; | ||
| 1007 | } | ||
| 1008 | |||
| 1009 | #endif /* GATE_GRAPHICS_OPENGL2_SUPPORT */ | ||
| 1010 | |||
| 1011 | |||
| 1012 | #endif /* GATE_GRAPHICS_PLATFORM_OPENGL_APIS_H_INCLUDED */ | ||
| 1013 |