GCC Code Coverage Report


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