1 | /* |
2 | * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved. |
3 | * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
4 | * |
5 | * This code is free software; you can redistribute it and/or modify it |
6 | * under the terms of the GNU General Public License version 2 only, as |
7 | * published by the Free Software Foundation. Oracle designates this |
8 | * particular file as subject to the "Classpath" exception as provided |
9 | * by Oracle in the LICENSE file that accompanied this code. |
10 | * |
11 | * This code is distributed in the hope that it will be useful, but WITHOUT |
12 | * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
13 | * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
14 | * version 2 for more details (a copy is included in the LICENSE file that |
15 | * accompanied this code). |
16 | * |
17 | * You should have received a copy of the GNU General Public License version |
18 | * 2 along with this work; if not, write to the Free Software Foundation, |
19 | * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
20 | * |
21 | * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
22 | * or visit www.oracle.com if you need additional information or have any |
23 | * questions. |
24 | */ |
25 | |
26 | #ifndef OGLFuncs_h_Included |
27 | #define OGLFuncs_h_Included |
28 | |
29 | #ifdef MACOSX |
30 | #include <dlfcn.h> |
31 | #endif |
32 | #include "jni.h" |
33 | #include "J2D_GL/gl.h" |
34 | #include "J2D_GL/glext.h" |
35 | #include "OGLFuncMacros.h" |
36 | #include "OGLFuncs_md.h" |
37 | #include "Trace.h" |
38 | |
39 | jboolean OGLFuncs_OpenLibrary(); |
40 | void OGLFuncs_CloseLibrary(); |
41 | jboolean OGLFuncs_InitPlatformFuncs(); |
42 | jboolean OGLFuncs_InitBaseFuncs(); |
43 | jboolean OGLFuncs_InitExtFuncs(); |
44 | |
45 | /** |
46 | * Core OpenGL 1.1 function typedefs |
47 | */ |
48 | typedef void (GLAPIENTRY *glAlphaFuncType)(GLenum func, GLclampf ref); |
49 | typedef GLboolean (GLAPIENTRY *glAreTexturesResidentType)(GLsizei n, const GLuint *textures, GLboolean *residences); |
50 | typedef void (GLAPIENTRY *glBeginType)(GLenum mode); |
51 | typedef void (GLAPIENTRY *glBindTextureType)(GLenum target, GLuint texture); |
52 | typedef void (GLAPIENTRY *glBitmapType)(GLsizei width, GLsizei height, GLfloat xorig, GLfloat yorig, GLfloat xmove, GLfloat ymove, const GLubyte *bitmap); |
53 | typedef void (GLAPIENTRY *glBlendFuncType)(GLenum sfactor, GLenum dfactor); |
54 | typedef void (GLAPIENTRY *glClearType)(GLbitfield mask); |
55 | typedef void (GLAPIENTRY *glClearColorType)(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha); |
56 | typedef void (GLAPIENTRY *glClearDepthType)(GLclampd depth); |
57 | typedef void (GLAPIENTRY *glColor3ubType)(GLubyte red, GLubyte green, GLubyte blue); |
58 | typedef void (GLAPIENTRY *glColor4fType)(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); |
59 | typedef void (GLAPIENTRY *glColor4ubType)(GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha); |
60 | typedef void (GLAPIENTRY *glColorMaskType)(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha); |
61 | typedef void (GLAPIENTRY *glColorPointerType)(GLint size, GLenum type, GLsizei stride, const GLvoid *ptr); |
62 | typedef void (GLAPIENTRY *glCopyPixelsType)(GLint x, GLint y, GLsizei width, GLsizei height, GLenum type); |
63 | typedef void (GLAPIENTRY *glCopyTexSubImage2DType)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); |
64 | typedef void (GLAPIENTRY *glDeleteTexturesType)(GLsizei n, const GLuint *textures); |
65 | typedef void (GLAPIENTRY *glDepthFuncType)(GLenum func); |
66 | typedef void (GLAPIENTRY *glDisableType)(GLenum cap); |
67 | typedef void (GLAPIENTRY *glDisableClientStateType)(GLenum array); |
68 | typedef void (GLAPIENTRY *glDrawArraysType)(GLenum mode, GLint first, GLsizei count); |
69 | typedef void (GLAPIENTRY *glDrawBufferType)(GLenum mode); |
70 | typedef void (GLAPIENTRY *glDrawPixelsType)(GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels); |
71 | typedef void (GLAPIENTRY *glEnableType)(GLenum cap); |
72 | typedef void (GLAPIENTRY *glEnableClientStateType)(GLenum array); |
73 | typedef void (GLAPIENTRY *glEndType)(void); |
74 | typedef void (GLAPIENTRY *glFinishType)(void); |
75 | typedef void (GLAPIENTRY *glFlushType)(void); |
76 | typedef void (GLAPIENTRY *glGenTexturesType)(GLsizei n, GLuint *textures); |
77 | typedef void (GLAPIENTRY *glGetBooleanvType)(GLenum pname, GLboolean *params); |
78 | typedef void (GLAPIENTRY *glGetDoublevType)(GLenum pname, GLdouble *params); |
79 | typedef GLenum (GLAPIENTRY *glGetErrorType)(void); |
80 | typedef void (GLAPIENTRY *glGetFloatvType)(GLenum pname, GLfloat *params); |
81 | typedef void (GLAPIENTRY *glGetIntegervType)(GLenum pname, GLint *params); |
82 | typedef const GLubyte * (GLAPIENTRY *glGetStringType)(GLenum name); |
83 | typedef void (GLAPIENTRY *glGetTexLevelParameterivType)(GLenum target, GLint level, GLenum pname, GLint *params); |
84 | typedef void (GLAPIENTRY *glHintType)(GLenum target, GLenum mode); |
85 | typedef void (GLAPIENTRY *glInterleavedArraysType)(GLenum format, GLsizei stride, const GLvoid *pointer); |
86 | typedef GLboolean (GLAPIENTRY *glIsEnabledType)(GLenum cap); |
87 | typedef GLboolean (GLAPIENTRY *glIsTextureType)(GLuint texture); |
88 | typedef void (GLAPIENTRY *glLoadIdentityType)(void); |
89 | typedef void (GLAPIENTRY *glLoadMatrixdType)(const GLdouble *m); |
90 | typedef void (GLAPIENTRY *glLogicOpType)(GLenum opcode); |
91 | typedef void (GLAPIENTRY *glMatrixModeType)(GLenum mode); |
92 | typedef void (GLAPIENTRY *glOrthoType)(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar); |
93 | typedef void (GLAPIENTRY *glPixelStoreiType)(GLenum pname, GLint param); |
94 | typedef void (GLAPIENTRY *glPixelTransferfType)(GLenum pname, GLfloat param); |
95 | typedef void (GLAPIENTRY *glPixelZoomType)(GLfloat xfactor, GLfloat yfactor); |
96 | typedef void (GLAPIENTRY *glPolygonOffsetType)(GLfloat factor, GLfloat units); |
97 | typedef void (GLAPIENTRY *glPopAttribType)(void); |
98 | typedef void (GLAPIENTRY *glPopClientAttribType)(void); |
99 | typedef void (GLAPIENTRY *glPopMatrixType)(void); |
100 | typedef void (GLAPIENTRY *glPrioritizeTexturesType)(GLsizei n, const GLuint *textures, const GLclampf *priorities); |
101 | typedef void (GLAPIENTRY *glPushAttribType)(GLbitfield); |
102 | typedef void (GLAPIENTRY *glPushClientAttribType)(GLbitfield); |
103 | typedef void (GLAPIENTRY *glPushMatrixType)(void); |
104 | typedef void (GLAPIENTRY *glRasterPos2iType)(GLint x, GLint y); |
105 | typedef void (GLAPIENTRY *glReadBufferType)(GLenum mode); |
106 | typedef void (GLAPIENTRY *glReadPixelsType)(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *pixels); |
107 | typedef void (GLAPIENTRY *glRectiType)(GLint x1, GLint y1, GLint x2, GLint y2); |
108 | typedef void (GLAPIENTRY *glScalefType)(GLfloat x, GLfloat y, GLfloat z); |
109 | typedef void (GLAPIENTRY *glScissorType)(GLint x, GLint y, GLsizei width, GLsizei height); |
110 | typedef void (GLAPIENTRY *glTexCoord2dType)(GLdouble s, GLdouble t); |
111 | typedef void (GLAPIENTRY *glTexCoord2fType)(GLfloat s, GLfloat t); |
112 | typedef void (GLAPIENTRY *glTexCoordPointerType)(GLint size, GLenum type, GLsizei stride, const GLvoid *ptr); |
113 | typedef void (GLAPIENTRY *glTexEnviType)(GLenum target, GLenum pname, GLint param); |
114 | typedef void (GLAPIENTRY *glTexGeniType)(GLenum coord, GLenum pname, GLint param); |
115 | typedef void (GLAPIENTRY *glTexGendvType)(GLenum coord, GLenum pname, const GLdouble *params); |
116 | typedef void (GLAPIENTRY *glTexImage1DType)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const GLvoid *pixels); |
117 | typedef void (GLAPIENTRY *glTexImage2DType)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels); |
118 | typedef void (GLAPIENTRY *glTexParameteriType)(GLenum target, GLenum pname, GLint param); |
119 | typedef void (GLAPIENTRY *glTexSubImage1DType)(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels); |
120 | typedef void (GLAPIENTRY *glTexSubImage2DType)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels); |
121 | typedef void (GLAPIENTRY *glTranslatefType)(GLfloat x, GLfloat y, GLfloat z); |
122 | typedef void (GLAPIENTRY *glVertex2dType)(GLdouble x, GLdouble y); |
123 | typedef void (GLAPIENTRY *glVertex2fType)(GLfloat x, GLfloat y); |
124 | typedef void (GLAPIENTRY *glVertex2iType)(GLint x, GLint y); |
125 | typedef void (GLAPIENTRY *glVertexPointerType)(GLint size, GLenum type, GLsizei stride, const GLvoid *ptr); |
126 | typedef void (GLAPIENTRY *glViewportType)(GLint x, GLint y, GLsizei width, GLsizei height); |
127 | |
128 | /** |
129 | * OpenGL 1.2 and extension function typedefs (functions that were added in |
130 | * the 1.2 spec and later need to be loaded on Windows as if they were |
131 | * extensions, which is why they are called out separately here) |
132 | */ |
133 | typedef void (GLAPIENTRY *glActiveTextureARBType)(GLenum texture); |
134 | typedef void (GLAPIENTRY *glMultiTexCoord2fARBType)(GLenum texture, GLfloat s, GLfloat t); |
135 | typedef void (GLAPIENTRY *glTexImage3DType)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *pixels); |
136 | |
137 | /** |
138 | * GL_EXT_framebuffer_object function typedefs |
139 | */ |
140 | typedef void (GLAPIENTRY *glBindRenderbufferEXTType)(GLenum, GLuint); |
141 | typedef void (GLAPIENTRY *glDeleteRenderbuffersEXTType)(GLsizei, const GLuint *); |
142 | typedef void (GLAPIENTRY *glGenRenderbuffersEXTType)(GLsizei, GLuint *); |
143 | typedef void (GLAPIENTRY *glRenderbufferStorageEXTType)(GLenum, GLenum, GLsizei, GLsizei); |
144 | typedef void (GLAPIENTRY *glBindFramebufferEXTType)(GLenum, GLuint); |
145 | typedef void (GLAPIENTRY *glDeleteFramebuffersEXTType)(GLsizei, const GLuint *); |
146 | typedef void (GLAPIENTRY *glGenFramebuffersEXTType)(GLsizei, GLuint *); |
147 | typedef GLenum (GLAPIENTRY *glCheckFramebufferStatusEXTType)(GLenum); |
148 | typedef void (GLAPIENTRY *glFramebufferTexture2DEXTType)(GLenum, GLenum, GLenum, GLuint, GLint); |
149 | typedef void (GLAPIENTRY *glFramebufferRenderbufferEXTType)(GLenum, GLenum, GLenum, GLuint); |
150 | |
151 | /** |
152 | * GL_ARB_fragment_shader extension function typedefs |
153 | */ |
154 | typedef GLhandleARB (GLAPIENTRY *glCreateShaderObjectARBType)(GLenum); |
155 | typedef void (GLAPIENTRY *glShaderSourceARBType)(GLhandleARB, GLsizei, const GLcharARB* *, const GLint *); |
156 | typedef void (GLAPIENTRY *glCompileShaderARBType)(GLhandleARB); |
157 | typedef void (GLAPIENTRY *glUseProgramObjectARBType)(GLhandleARB); |
158 | typedef void (GLAPIENTRY *glUniform1iARBType)(GLint, GLint); |
159 | typedef void (GLAPIENTRY *glUniform1fARBType)(GLint, GLfloat); |
160 | typedef void (GLAPIENTRY *glUniform1fvARBType)(GLint, GLsizei, const GLfloat *); |
161 | typedef void (GLAPIENTRY *glUniform2fARBType)(GLint, GLfloat, GLfloat); |
162 | typedef void (GLAPIENTRY *glUniform3fARBType)(GLint, GLfloat, GLfloat, GLfloat); |
163 | typedef void (GLAPIENTRY *glUniform3fvARBType)(GLint, GLsizei, const GLfloat *); |
164 | typedef void (GLAPIENTRY *glUniform4fARBType)(GLint, GLfloat, GLfloat, GLfloat, GLfloat); |
165 | typedef void (GLAPIENTRY *glUniform4fvARBType)(GLint, GLsizei, const GLfloat *); |
166 | typedef GLint (GLAPIENTRY *glGetUniformLocationARBType)(GLhandleARB, const GLcharARB *); |
167 | typedef void (GLAPIENTRY *glGetInfoLogARBType)(GLhandleARB, GLsizei, GLsizei *, GLcharARB *); |
168 | typedef void (GLAPIENTRY *glGetProgramivARBType)(GLenum, GLenum, GLint *); |
169 | typedef void (GLAPIENTRY *glGetObjectParameterivARBType)(GLhandleARB, GLenum, GLint *); |
170 | typedef GLhandleARB (GLAPIENTRY *glCreateProgramObjectARBType)(void); |
171 | typedef void (GLAPIENTRY *glAttachObjectARBType)(GLhandleARB, GLhandleARB); |
172 | typedef void (GLAPIENTRY *glLinkProgramARBType)(GLhandleARB); |
173 | typedef void (GLAPIENTRY *glDeleteObjectARBType)(GLhandleARB); |
174 | |
175 | /** |
176 | * GL_NV_texture_barrier extension function typedef's |
177 | */ |
178 | typedef void (GLAPIENTRY *glTextureBarrierNVType) (void); |
179 | |
180 | /** |
181 | * REMIND: this caused an internal error in the MS compiler!?!? |
182 | * |
183 | *#define OGL_CHECK_FUNC_ERR(f) \ |
184 | * J2dTrace1(J2D_TRACE_ERROR, "could not load function: %s", #f) |
185 | */ |
186 | |
187 | #define OGL_CHECK_FUNC_ERR(f) \ |
188 | J2dRlsTraceLn(J2D_TRACE_ERROR, #f) |
189 | |
190 | #define OGL_INIT_FUNC(f) \ |
191 | OGL_J2D_MANGLE(f) = (OGL_FUNC_TYPE(f)) OGL_GET_PROC_ADDRESS(f) |
192 | |
193 | #define OGL_INIT_AND_CHECK_FUNC(f) \ |
194 | OGL_INIT_FUNC(f); \ |
195 | if (OGL_J2D_MANGLE(f) == NULL) { \ |
196 | OGL_CHECK_FUNC_ERR(f); \ |
197 | return JNI_FALSE; \ |
198 | } |
199 | |
200 | #define OGL_INIT_EXT_FUNC(f) \ |
201 | OGL_J2D_MANGLE(f) = (OGL_FUNC_TYPE(f)) OGL_GET_EXT_PROC_ADDRESS(f) |
202 | |
203 | #define OGL_INIT_AND_CHECK_EXT_FUNC(f) \ |
204 | OGL_INIT_EXT_FUNC(f); \ |
205 | if (OGL_J2D_MANGLE(f) == NULL) { \ |
206 | OGL_CHECK_FUNC_ERR(f); \ |
207 | return JNI_FALSE; \ |
208 | } |
209 | |
210 | #define OGL_EXPRESS_BASE_FUNCS(action) \ |
211 | OGL_##action##_FUNC(glAlphaFunc); \ |
212 | OGL_##action##_FUNC(glAreTexturesResident); \ |
213 | OGL_##action##_FUNC(glBegin); \ |
214 | OGL_##action##_FUNC(glBindTexture); \ |
215 | OGL_##action##_FUNC(glBitmap); \ |
216 | OGL_##action##_FUNC(glBlendFunc); \ |
217 | OGL_##action##_FUNC(glClear); \ |
218 | OGL_##action##_FUNC(glClearColor); \ |
219 | OGL_##action##_FUNC(glClearDepth); \ |
220 | OGL_##action##_FUNC(glColor3ub); \ |
221 | OGL_##action##_FUNC(glColor4f); \ |
222 | OGL_##action##_FUNC(glColor4ub); \ |
223 | OGL_##action##_FUNC(glColorMask); \ |
224 | OGL_##action##_FUNC(glColorPointer); \ |
225 | OGL_##action##_FUNC(glCopyPixels); \ |
226 | OGL_##action##_FUNC(glCopyTexSubImage2D); \ |
227 | OGL_##action##_FUNC(glDeleteTextures); \ |
228 | OGL_##action##_FUNC(glDepthFunc); \ |
229 | OGL_##action##_FUNC(glDisable); \ |
230 | OGL_##action##_FUNC(glDisableClientState); \ |
231 | OGL_##action##_FUNC(glDrawArrays); \ |
232 | OGL_##action##_FUNC(glDrawBuffer); \ |
233 | OGL_##action##_FUNC(glDrawPixels); \ |
234 | OGL_##action##_FUNC(glEnable); \ |
235 | OGL_##action##_FUNC(glEnableClientState); \ |
236 | OGL_##action##_FUNC(glEnd); \ |
237 | OGL_##action##_FUNC(glFinish); \ |
238 | OGL_##action##_FUNC(glFlush); \ |
239 | OGL_##action##_FUNC(glGenTextures); \ |
240 | OGL_##action##_FUNC(glGetBooleanv); \ |
241 | OGL_##action##_FUNC(glGetDoublev); \ |
242 | OGL_##action##_FUNC(glGetError); \ |
243 | OGL_##action##_FUNC(glGetFloatv); \ |
244 | OGL_##action##_FUNC(glGetIntegerv); \ |
245 | OGL_##action##_FUNC(glGetString); \ |
246 | OGL_##action##_FUNC(glGetTexLevelParameteriv); \ |
247 | OGL_##action##_FUNC(glHint); \ |
248 | OGL_##action##_FUNC(glInterleavedArrays); \ |
249 | OGL_##action##_FUNC(glIsEnabled); \ |
250 | OGL_##action##_FUNC(glIsTexture); \ |
251 | OGL_##action##_FUNC(glLoadIdentity); \ |
252 | OGL_##action##_FUNC(glLoadMatrixd); \ |
253 | OGL_##action##_FUNC(glLogicOp); \ |
254 | OGL_##action##_FUNC(glMatrixMode); \ |
255 | OGL_##action##_FUNC(glOrtho); \ |
256 | OGL_##action##_FUNC(glPixelStorei); \ |
257 | OGL_##action##_FUNC(glPixelTransferf); \ |
258 | OGL_##action##_FUNC(glPixelZoom); \ |
259 | OGL_##action##_FUNC(glPolygonOffset); \ |
260 | OGL_##action##_FUNC(glPopAttrib); \ |
261 | OGL_##action##_FUNC(glPopClientAttrib); \ |
262 | OGL_##action##_FUNC(glPopMatrix); \ |
263 | OGL_##action##_FUNC(glPrioritizeTextures); \ |
264 | OGL_##action##_FUNC(glPushAttrib); \ |
265 | OGL_##action##_FUNC(glPushClientAttrib); \ |
266 | OGL_##action##_FUNC(glPushMatrix); \ |
267 | OGL_##action##_FUNC(glRasterPos2i); \ |
268 | OGL_##action##_FUNC(glReadBuffer); \ |
269 | OGL_##action##_FUNC(glReadPixels); \ |
270 | OGL_##action##_FUNC(glRecti); \ |
271 | OGL_##action##_FUNC(glScalef); \ |
272 | OGL_##action##_FUNC(glScissor); \ |
273 | OGL_##action##_FUNC(glTexCoord2d); \ |
274 | OGL_##action##_FUNC(glTexCoord2f); \ |
275 | OGL_##action##_FUNC(glTexCoordPointer); \ |
276 | OGL_##action##_FUNC(glTexEnvi); \ |
277 | OGL_##action##_FUNC(glTexGeni); \ |
278 | OGL_##action##_FUNC(glTexGendv); \ |
279 | OGL_##action##_FUNC(glTexImage1D); \ |
280 | OGL_##action##_FUNC(glTexImage2D); \ |
281 | OGL_##action##_FUNC(glTexParameteri); \ |
282 | OGL_##action##_FUNC(glTexSubImage1D); \ |
283 | OGL_##action##_FUNC(glTexSubImage2D); \ |
284 | OGL_##action##_FUNC(glTranslatef); \ |
285 | OGL_##action##_FUNC(glVertex2d); \ |
286 | OGL_##action##_FUNC(glVertex2f); \ |
287 | OGL_##action##_FUNC(glVertex2i); \ |
288 | OGL_##action##_FUNC(glVertexPointer); \ |
289 | OGL_##action##_FUNC(glViewport); |
290 | |
291 | #define OGL_EXPRESS_EXT_FUNCS(action) \ |
292 | OGL_##action##_EXT_FUNC(glActiveTextureARB); \ |
293 | OGL_##action##_EXT_FUNC(glMultiTexCoord2fARB); \ |
294 | OGL_##action##_EXT_FUNC(glTexImage3D); \ |
295 | OGL_##action##_EXT_FUNC(glBindRenderbufferEXT); \ |
296 | OGL_##action##_EXT_FUNC(glDeleteRenderbuffersEXT); \ |
297 | OGL_##action##_EXT_FUNC(glGenRenderbuffersEXT); \ |
298 | OGL_##action##_EXT_FUNC(glRenderbufferStorageEXT); \ |
299 | OGL_##action##_EXT_FUNC(glBindFramebufferEXT); \ |
300 | OGL_##action##_EXT_FUNC(glDeleteFramebuffersEXT); \ |
301 | OGL_##action##_EXT_FUNC(glGenFramebuffersEXT); \ |
302 | OGL_##action##_EXT_FUNC(glCheckFramebufferStatusEXT); \ |
303 | OGL_##action##_EXT_FUNC(glFramebufferTexture2DEXT); \ |
304 | OGL_##action##_EXT_FUNC(glFramebufferRenderbufferEXT); \ |
305 | OGL_##action##_EXT_FUNC(glCreateProgramObjectARB); \ |
306 | OGL_##action##_EXT_FUNC(glAttachObjectARB); \ |
307 | OGL_##action##_EXT_FUNC(glLinkProgramARB); \ |
308 | OGL_##action##_EXT_FUNC(glCreateShaderObjectARB); \ |
309 | OGL_##action##_EXT_FUNC(glShaderSourceARB); \ |
310 | OGL_##action##_EXT_FUNC(glCompileShaderARB); \ |
311 | OGL_##action##_EXT_FUNC(glUseProgramObjectARB); \ |
312 | OGL_##action##_EXT_FUNC(glUniform1iARB); \ |
313 | OGL_##action##_EXT_FUNC(glUniform1fARB); \ |
314 | OGL_##action##_EXT_FUNC(glUniform1fvARB); \ |
315 | OGL_##action##_EXT_FUNC(glUniform2fARB); \ |
316 | OGL_##action##_EXT_FUNC(glUniform3fARB); \ |
317 | OGL_##action##_EXT_FUNC(glUniform3fvARB); \ |
318 | OGL_##action##_EXT_FUNC(glUniform4fARB); \ |
319 | OGL_##action##_EXT_FUNC(glUniform4fvARB); \ |
320 | OGL_##action##_EXT_FUNC(glGetUniformLocationARB); \ |
321 | OGL_##action##_EXT_FUNC(glGetProgramivARB); \ |
322 | OGL_##action##_EXT_FUNC(glGetInfoLogARB); \ |
323 | OGL_##action##_EXT_FUNC(glGetObjectParameterivARB); \ |
324 | OGL_##action##_EXT_FUNC(glDeleteObjectARB); \ |
325 | OGL_##action##_EXT_FUNC(glTextureBarrierNV); |
326 | |
327 | #define OGL_EXPRESS_ALL_FUNCS(action) \ |
328 | OGL_EXPRESS_BASE_FUNCS(action) \ |
329 | OGL_EXPRESS_EXT_FUNCS(action) \ |
330 | OGL_EXPRESS_PLATFORM_FUNCS(action) \ |
331 | OGL_EXPRESS_PLATFORM_EXT_FUNCS(action) |
332 | |
333 | OGL_EXPRESS_ALL_FUNCS(EXTERN) |
334 | |
335 | #endif /* OGLFuncs_h_Included */ |
336 | |