GCC Code Coverage Report


Directory: src/gate/
File: src/gate/graphics/platform/opengl_apis.h
Date: 2025-12-12 23:40:09
Exec Total Coverage
Lines: 0 104 0.0%
Functions: 0 2 0.0%
Branches: 0 6 0.0%

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