FS2_Open
Open source remastering of the Freespace 2 engine
gropenglextension.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) Volition, Inc. 1999. All rights reserved.
3  *
4  * All source code herein is the property of Volition, Inc. You may not sell
5  * or otherwise commercially exploit the source or things you created based on the
6  * source.
7  *
8 */
9 
10 
11 
12 #ifndef _GROPENGLEXT_H
13 #define _GROPENGLEXT_H
14 
15 #include "globalincs/pstypes.h"
16 #include "graphics/gropengl.h"
17 
18 //EXTENSIONS!!!!
19 //be sure to check for this at startup and handle not finding it gracefully
20 
21 //to add extensions/functions:
22 //define an index after the last one, either an extension or a function
23 //increment NUM_OGL_EXTENSIONS if an extension or NUM_OGL_FUNCTIONS if function
24 //add function macro for Win32
25 //add function info to GL_Functions struct
26 //the structure of extensions/functions are located in gropenglextension.cpp
27 
28 typedef struct ogl_extension {
30  bool enabled;
32  const char *extension_name[3];
34  const char *function_names[20];
36 
37 typedef struct ogl_function {
38  const char *function_name;
40 } ogl_function;
41 
42 extern ogl_function GL_Functions[];
45 
46 
47 // Extensions
48 #define OGL_EXT_FOG_COORD 0
49 #define OGL_ARB_MULTITEXTURE 1
50 #define OGL_ARB_TEXTURE_ENV_ADD 2
51 #define OGL_ARB_TEXTURE_COMPRESSION 3
52 #define OGL_EXT_TEXTURE_COMPRESSION_S3TC 4
53 #define OGL_EXT_TEXTURE_FILTER_ANISOTROPIC 5
54 //#define OGL_NV_FOG_DISTANCE 6
55 //#define OGL_EXT_SECONDARY_COLOR 7
56 #define OGL_ARB_TEXTURE_ENV_COMBINE 6
57 #define OGL_EXT_COMPILED_VERTEX_ARRAY 7
58 //#define OGL_ARB_TRANSPOSE_MATRIX 10
59 #define OGL_EXT_DRAW_RANGE_ELEMENTS 8
60 #define OGL_ARB_TEXTURE_MIRRORED_REPEAT 9
61 #define OGL_ARB_TEXTURE_NON_POWER_OF_TWO 10
62 #define OGL_ARB_VERTEX_BUFFER_OBJECT 11
63 #define OGL_ARB_PIXEL_BUFFER_OBJECT 12
64 #define OGL_SGIS_GENERATE_MIPMAP 13
65 #define OGL_EXT_FRAMEBUFFER_OBJECT 14
66 #define OGL_ARB_TEXTURE_RECTANGLE 15
67 #define OGL_EXT_BGRA 16
68 #define OGL_ARB_TEXTURE_CUBE_MAP 17
69 #define OGL_EXT_TEXTURE_LOD_BIAS 18
70 #define OGL_ARB_POINT_SPRITE 19
71 #define OGL_ARB_SHADING_LANGUAGE_100 20
72 #define OGL_ARB_SHADER_OBJECTS 21
73 #define OGL_ARB_VERTEX_SHADER 22
74 #define OGL_ARB_FRAGMENT_SHADER 23
75 #define OGL_SM30 24
76 #define OGL_ARB_FLOATING_POINT_TEXTURES 25
77 #define OGL_ARB_DRAW_ELEMENTS_BASE_VERTEX 26
78 #define OGL_EXT_FRAMEBUFFER_BLIT 27
79 #define OGL_EXT_GEOMETRY_SHADER4 28
80 #define OGL_EXT_TEXTURE_ARRAY 29
81 #define OGL_ARB_UNIFORM_BUFFER_OBJECT 30
82 #define OGL_EXT_TRANSFORM_FEEDBACK 31
83 #define OGL_ARB_DRAW_INSTANCED 32
84 #define OGL_ARB_TEXTURE_BUFFER 33
85 
86 #define NUM_OGL_EXTENSIONS 34
87 
88 
89 // Functions
90 #define OGL_FOG_COORDF 0 // for better looking fog
91 #define OGL_FOG_COORD_POINTER 1 // used with vertex arrays
92 #define OGL_MULTI_TEX_COORD_2F 2 // multitex coordinates
93 #define OGL_ACTIVE_TEXTURE 3 // currenly active multitexture
94 #define OGL_CLIENT_ACTIVE_TEXTURE 4
95 #define OGL_COMPRESSED_TEX_IMAGE_2D 5 // 2d compressed texture
96 #define OGL_COMPRESSED_TEX_SUB_IMAGE_2D 6 // 2d compressed sub texture
97 #define OGL_GET_COMPRESSED_TEX_IMAGE 7
98 //#define OGL_SECONDARY_COLOR_3FV 8 // for better looking fog
99 //#define OGL_SECONDARY_COLOR_3UBV 9 // specular
100 #define OGL_LOCK_ARRAYS 8 // HTL
101 #define OGL_UNLOCK_ARRAYS 9 // HTL
102 //#define OGL_LOAD_TRANSPOSE_MATRIX_F 12
103 //#define OGL_MULT_TRANSPOSE_MATRIX_F 13
104 #define OGL_DRAW_RANGE_ELEMENTS 10
105 #define OGL_BIND_BUFFER 11
106 #define OGL_DELETE_BUFFERS 12
107 #define OGL_GEN_BUFFERS 13
108 #define OGL_BUFFER_DATA 14
109 #define OGL_BUFFER_SUB_DATA 15
110 #define OGL_MAP_BUFFER 16
111 #define OGL_UNMAP_BUFFER 17
112 #define OGL_IS_RENDERBUFFER 18
113 #define OGL_BIND_RENDERBUFFER 19
114 #define OGL_DELETE_RENDERBUFFERS 20
115 #define OGL_GEN_RENDERBUFFERS 21
116 #define OGL_RENDERBUFFER_STORAGE 22
117 #define OGL_GET_RENDERBUFFER_PARAMETER_IV 23
118 #define OGL_IS_FRAMEBUFFER 24
119 #define OGL_BIND_FRAMEBUFFER 25
120 #define OGL_DELETE_FRAMEBUFFERS 26
121 #define OGL_GEN_FRAMEBUFFERS 27
122 #define OGL_CHECK_FRAMEBUFFER_STATUS 28
123 #define OGL_FRAMEBUFFER_TEXTURE_2D 29
124 #define OGL_FRAMEBUFFER_RENDERBUFFER 30
125 #define OGL_GET_FRAMEBUFFER_ATTACHMENT_PARAMETER_IV 31
126 #define OGL_GENERATE_MIPMAP 32
127 #define OGL_DELETE_OBJECT 33
128 #define OGL_CREATE_SHADER_OBJECT 34
129 #define OGL_SHADER_SOURCE 35
130 #define OGL_COMPILE_SHADER 36
131 #define OGL_GET_OBJECT_PARAMETERIV 37
132 #define OGL_GET_INFO_LOG 38
133 #define OGL_CREATE_PROGRAM_OBJECT 39
134 #define OGL_ATTACH_OBJECT 40
135 #define OGL_LINK_PROGRAM 41
136 #define OGL_USE_PROGRAM_OBJECT 42
137 #define OGL_VALIDATE_PROGRAM 43
138 #define OGL_ENABLE_VERTEX_ATTRIB_ARRAY 44
139 #define OGL_DISABLE_VERTEX_ATTRIB_ARRAY 45
140 #define OGL_GET_ATTRIB_LOCATION 46
141 #define OGL_VERTEX_ATTRIB_POINTER 47
142 #define OGL_GET_UNIFORM_LOCATION 48
143 #define OGL_GET_UNIFORMIV 49
144 #define OGL_UNIFORM1F 50
145 #define OGL_UNIFORM2F 51
146 #define OGL_UNIFORM3F 52
147 #define OGL_UNIFORM4F 53
148 #define OGL_UNIFORM3FV 54
149 #define OGL_UNIFORM4FV 55
150 #define OGL_UNIFORM1I 56
151 #define OGL_UNIFORM_MATRIX4FV 57
152 #define OGL_DRAWBUFFERS 58
153 #define OGL_DRAW_ELEMENTS_BASE_VERTEX 59
154 #define OGL_DRAW_RANGE_ELEMENTS_BASE_VERTEX 60
155 #define OGL_DRAW_ELEMENTS_INSTANCED_BASE_VERTEX 61
156 #define OGL_MULTI_DRAW_ELEMENTS_BASE_VERTEX 62
157 #define OGL_BLITFRAMEBUFFER 63
158 #define OGL_PROGRAM_PARAMETERI 64
159 #define OGL_TEXIMAGE3D 65
160 #define OGL_FRAMEBUFFER_TEXTURE 66
161 #define OGL_GET_UNIFORM_INDICES 67
162 #define OGL_GET_ACTIVE_UNIFORMS_IV 68
163 #define OGL_GET_ACTIVE_UNIFORM_NAME 69
164 #define OGL_GET_UNIFORM_BLOCK_INDEX 70
165 #define OGL_GET_ACTIVE_UNIFORM_BLOCK_IV 71
166 #define OGL_GET_ACTIVE_UNIFORM_BLOCK_NAME 72
167 #define OGL_UNIFORM_BLOCK_BINDING 73
168 #define OGL_BEGIN_TRANSFORM_FEEDBACK 74
169 #define OGL_END_TRANSFORM_FEEDBACK 75
170 #define OGL_BIND_BUFFER_RANGE 76
171 #define OGL_BIND_BUFFER_OFFSET 77
172 #define OGL_BIND_BUFFER_BASE 78
173 #define OGL_TRANSFORM_FEEDBACK_VARYINGS 79
174 #define OGL_GET_TRANSFORM_FEEDBACK_VARYING 80
175 #define OGL_ARB_DRAW_ARRAYS_INSTANCED 81
176 #define OGL_ARB_DRAW_ELEMENTS_INSTANCED 82
177 #define OGL_ARB_TEX_BUFFER 83
178 
179 #define NUM_OGL_FUNCTIONS 84
180 
181 // special extensions/functions (OS specific, non-GL stuff)
182 #define OGL_SPC_WGL_SWAP_INTERVAL 0
183 #define OGL_SPC_GLX_SWAP_INTERVAL 1
184 
185 #define NUM_OGL_EXT_SPECIAL 2
186 
187 
188 #define Is_Extension_Enabled(x) GL_Extensions[x].enabled
189 
191 
192 
193 #define GLEXT_CALL(i, x) if (GL_Functions[i].function_ptr) \
194  ((x)GL_Functions[i].function_ptr)
195 
196 // the same as GLEXT_CALL() except that it can be used with a cast or in an if statement
197 // this doesn't do NULL ptr checking so you have to be careful with it!
198 #define GLEXT_CALL2(i, x) ((x)GL_Functions[i].function_ptr)
199 
200 #define GLEXT_SPC_CALL(i, x) if (GL_EXT_Special[i].function_ptr) \
201  ((x)GL_EXT_Special[i].function_ptr)
202 
203 
204 #ifdef __APPLE__
205 // !-----REMOVE WHEN WE MIGRATE TO THE OPENGL CORE PROFILE-----!
206 typedef void (* glDrawRangeElementsProcPtr) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices);
207 typedef void (* glTexBufferARBProcPtr) (GLenum target, GLenum internalformat, GLuint buffer);
208 typedef GLuint (* glGetUniformBlockIndexARBProcPtr) (GLuint program, const GLchar *uniformBlockName);
209 
210 #define GL_TEXTURE_BUFFER_ARB 0x8C2A
211 #define GL_UNIFORM_BUFFER 0x8A11
212 // !-----REMOVE WHEN WE MIGRATE TO THE OPENGL CORE PROFILE-----!
213 
214 // OS X doesn't have the PFN* names so we have to use the real OSX function ptrs
215 #define PFNGLFOGCOORDFEXTPROC glFogCoordfEXTProcPtr
216 #define PFNGLFOGCOORDPOINTEREXTPROC glFogCoordPointerEXTProcPtr
217 #define PFNGLMULTITEXCOORD2FARBPROC glMultiTexCoord2fARBProcPtr
218 #define PFNGLACTIVETEXTUREARBPROC glActiveTextureARBProcPtr
219 #define PFNGLCLIENTACTIVETEXTUREARBPROC glClientActiveTextureARBProcPtr
220 #define PFNGLCOMPRESSEDTEXIMAGE2DPROC glCompressedTexImage2DARBProcPtr
221 #define PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC glCompressedTexSubImage2DARBProcPtr
222 #define PFNGLGETCOMPRESSEDTEXIMAGEARBPROC glGetCompressedTexImageARBProcPtr
223 //#define PFNGLSECONDARYCOLOR3FVEXTPROC glSecondaryColor3fvEXTProcPtr
224 //#define PFNGLSECONDARYCOLOR3UBVEXTPROC glSecondaryColor3ubvEXTProcPtr
225 #define PFNGLLOCKARRAYSEXTPROC glLockArraysEXTProcPtr
226 #define PFNGLUNLOCKARRAYSEXTPROC glUnlockArraysEXTProcPtr
227 //#define PFNGLLOADTRANSPOSEMATRIXFARBPROC glLoadTransposeMatrixfARBProcPtr
228 //#define PFNGLMULTTRANSPOSEMATRIXFARBPROC glMultTransposeMatrixfARBProcPtr
229 #define PFNGLDRAWRANGEELEMENTSPROC glDrawRangeElementsProcPtr
230 #define PFNGLBINDBUFFERARBPROC glBindBufferARBProcPtr
231 #define PFNGLDELETEBUFFERSARBPROC glDeleteBuffersARBProcPtr
232 #define PFNGLGENBUFFERSARBPROC glGenBuffersARBProcPtr
233 #define PFNGLBUFFERDATAARBPROC glBufferDataARBProcPtr
234 #define PFNGLBUFFERSUBDATAARBPROC glBufferSubDataARBProcPtr
235 #define PFNGLMAPBUFFERARBPROC glMapBufferARBProcPtr
236 #define PFNGLUNMAPBUFFERARBPROC glUnmapBufferARBProcPtr
237 #define PFNGLISRENDERBUFFEREXTPROC glIsRenderbufferEXTProcPtr
238 #define PFNGLBINDRENDERBUFFEREXTPROC glBindRenderbufferEXTProcPtr
239 #define PFNGLDELETERENDERBUFFERSEXTPROC glDeleteRenderbuffersEXTProcPtr
240 #define PFNGLGENRENDERBUFFERSEXTPROC glGenRenderbuffersEXTProcPtr
241 #define PFNGLRENDERBUFFERSTORAGEEXTPROC glRenderbufferStorageEXTProcPtr
242 #define PFNGLGETRENDERBUFFERPARAMETERIVEXTPROC glGetRenderbufferParameterivEXTProcPtr
243 #define PFNGLISFRAMEBUFFEREXTPROC glIsFramebufferEXTProcPtr
244 #define PFNGLBINDFRAMEBUFFEREXTPROC glBindFramebufferEXTProcPtr
245 #define PFNGLDELETEFRAMEBUFFERSEXTPROC glDeleteFramebuffersEXTProcPtr
246 #define PFNGLGENFRAMEBUFFERSEXTPROC glGenFramebuffersEXTProcPtr
247 #define PFNGLCHECKFRAMEBUFFERSTATUSEXTPROC glCheckFramebufferStatusEXTProcPtr
248 #define PFNGLFRAMEBUFFERTEXTURE2DEXTPROC glFramebufferTexture2DEXTProcPtr
249 #define PFNGLFRAMEBUFFERRENDERBUFFEREXTPROC glFramebufferRenderbufferEXTProcPtr
250 #define PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC glGetFramebufferAttachmentParameterivEXTProcPtr
251 #define PFNGLGENERATEMIPMAPEXTPROC glGenerateMipmapEXTProcPtr
252 #define PFNGLDELETEOBJECTARBPROC glDeleteObjectARBProcPtr
253 #define PFNGLCREATESHADEROBJECTARBPROC glCreateShaderObjectARBProcPtr
254 #define PFNGLSHADERSOURCEARBPROC glShaderSourceARBProcPtr
255 #define PFNGLCOMPILESHADERARBPROC glCompileShaderARBProcPtr
256 #define PFNGLGETOBJECTPARAMETERIVARBPROC glGetObjectParameterivARBProcPtr
257 #define PFNGLGETINFOLOGARBPROC glGetInfoLogARBProcPtr
258 #define PFNGLCREATEPROGRAMOBJECTARBPROC glCreateProgramObjectARBProcPtr
259 #define PFNGLATTACHOBJECTARBPROC glAttachObjectARBProcPtr
260 #define PFNGLLINKPROGRAMARBPROC glLinkProgramARBProcPtr
261 #define PFNGLUSEPROGRAMOBJECTARBPROC glUseProgramObjectARBProcPtr
262 #define PFNGLVALIDATEPROGRAMARBPROC glValidateProgramARBProcPtr
263 #define PFNGLENABLEVERTEXATTRIBARRAYARBPROC glEnableVertexAttribArrayARBProcPtr
264 #define PFNGLDISABLEVERTEXATTRIBARRAYARBPROC glDisableVertexAttribArrayARBProcPtr
265 #define PFNGLGETATTRIBLOCATIONARBPROC glGetAttribLocationARBProcPtr
266 #define PFNGLVERTEXATTRIBPOINTERARBPROC glVertexAttribPointerARBProcPtr
267 #define PFNGLGETUNIFORMLOCATIONARBPROC glGetUniformLocationARBProcPtr
268 #define PFNGLGETUNIFORMIVARBPROC glGetUniformivARBProcPtr
269 #define PFNGLUNIFORM1FARBPROC glUniform1fARBProcPtr
270 #define PFNGLUNIFORM2FARBPROC glUniform2fARBProcPtr
271 #define PFNGLUNIFORM3FARBPROC glUniform3fARBProcPtr
272 #define PFNGLUNIFORM4FARBPROC glUniform4fARBProcPtr
273 #define PFNGLUNIFORM3FVARBPROC glUniform3fvARBProcPtr
274 #define PFNGLUNIFORM4FVARBPROC glUniform4fvARBProcPtr
275 #define PFNGLUNIFORM1IARBPROC glUniform1iARBProcPtr
276 #define PFNGLUNIFORMMATRIX4FVARBPROC glUniformMatrix4fvARBProcPtr
277 #define PFNGLDRAWBUFFERSPROC glDrawBuffersARBProcPtr
278 #define PFNGLDRAWELEMENTSBASEVERTEXPROC glDrawElementsBaseVertexProcPtr
279 #define PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC glDrawRangeElementsBaseVertexProcPtr
280 #define PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC glDrawElementsInstancedBaseVertexProcPtr
281 #define PFNGLMULTIDRAWELEMENTSBASEVERTEXPROC glMultiDrawElementsBaseVertexProcPtr
282 #define PFNGLBLITFRAMEBUFFEREXTPROC glBlitFramebufferEXTProcPtr
283 #define PFNGLPROGRAMPARAMETERIEXTPROC glProgramParameteriEXTProcPtr
284 #define PFNGLFRAMEBUFFERTEXTUREEXTPROC glFramebufferTextureEXTProcPtr
285 #define PFNGLGETUNIFORMINDICESPROC glGetUniformIndicesARBProcPtr
286 #define PFNGLGETACTIVEUNIFORMSIVPROC glGetActiveUniformsivARBProcPtr
287 #define PFNGLGETACTIVEUNIFORMNAMEPROC glGetActiveUniformNameARBProcPtr
288 #define PFNGLGETUNIFORMBLOCKINDEXPROC glGetUniformBlockIndexARBProcPtr
289 #define PFNGLGETACTIVEUNIFORMBLOCKIVPROC glGetActiveUniformBlockivARBProcPtr
290 #define PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC glGetActiveUniformBlockNameARBProcPtr
291 #define PFNGLUNIFORMBLOCKBINDINGPROC glUniformBlockBindingARBProcPtr
292 #define PFNGLBEGINTRANSFORMFEEDBACKEXTPROC glBeginTransformFeedbackEXTProcPtr
293 #define PFNGLENDTRANSFORMFEEDBACKEXTPROC glEndTransformFeedbackEXTProcPtr
294 #define PFNGLBINDBUFFERRANGEEXTPROC glBindBufferRangeEXTProcPtr
295 #define PFNGLBINDBUFFEROFFSETEXTPROC glBindBufferOffsetEXTProcPtr
296 #define PFNGLBINDBUFFERBASEEXTPROC glBindBufferBaseEXTProcPtr
297 #define PFNGLTRANSFORMFEEDBACKVARYINGSEXTPROC glTransformFeedbackVaryingsEXTProcPtr
298 #define PFNGLGETTRANSFORMFEEDBACKVARYINGEXTPROC glGetTransformFeedbackVaryingEXTProcPtr
299 #define PFNGLDRAWARRAYSINSTANCEDARBPROC glDrawArraysInstancedARBProcPtr
300 #define PFNGLDRAWELEMENTSINSTANCEDARBPROC glDrawElementsInstancedARBProcPtr
301 #define PFNGLTEXBUFFERARBPROC glTexBufferARBProcPtr
302 #endif // __APPLE__
303 
304 #define vglFogCoordfEXT GLEXT_CALL( OGL_FOG_COORDF, PFNGLFOGCOORDFEXTPROC )
305 #define vglFogCoordPointerEXT GLEXT_CALL( OGL_FOG_COORD_POINTER, PFNGLFOGCOORDPOINTEREXTPROC )
306 #define vglMultiTexCoord2fARB GLEXT_CALL( OGL_MULTI_TEX_COORD_2F, PFNGLMULTITEXCOORD2FARBPROC )
307 #define vglActiveTextureARB GLEXT_CALL( OGL_ACTIVE_TEXTURE, PFNGLACTIVETEXTUREARBPROC )
308 #define vglClientActiveTextureARB GLEXT_CALL( OGL_CLIENT_ACTIVE_TEXTURE, PFNGLCLIENTACTIVETEXTUREARBPROC )
309 #define vglCompressedTexImage2D GLEXT_CALL( OGL_COMPRESSED_TEX_IMAGE_2D, PFNGLCOMPRESSEDTEXIMAGE2DPROC )
310 #define vglCompressedTexSubImage2D GLEXT_CALL( OGL_COMPRESSED_TEX_SUB_IMAGE_2D, PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC )
311 #define vglGetCompressedTexImageARB GLEXT_CALL( OGL_GET_COMPRESSED_TEX_IMAGE, PFNGLGETCOMPRESSEDTEXIMAGEARBPROC )
312 //#define vglSecondaryColor3fvEXT GLEXT_CALL( OGL_SECONDARY_COLOR_3FV, PFNGLSECONDARYCOLOR3FVEXTPROC )
313 //#define vglSecondaryColor3ubvEXT GLEXT_CALL( OGL_SECONDARY_COLOR_3UBV, PFNGLSECONDARYCOLOR3UBVEXTPROC )
314 #define vglLockArraysEXT GLEXT_CALL( OGL_LOCK_ARRAYS, PFNGLLOCKARRAYSEXTPROC )
315 #define vglUnlockArraysEXT GLEXT_CALL( OGL_UNLOCK_ARRAYS, PFNGLUNLOCKARRAYSEXTPROC )
316 //#define vglLoadTransposeMatrixfARB GLEXT_CALL( OGL_LOAD_TRANSPOSE_MATRIX_F, PFNGLLOADTRANSPOSEMATRIXFARBPROC )
317 //#define vglMultTransposeMatrixfARB GLEXT_CALL( OGL_MULT_TRANSPOSE_MATRIX_F, PFNGLMULTTRANSPOSEMATRIXFARBPROC )
318 #define vglDrawRangeElements GLEXT_CALL( OGL_DRAW_RANGE_ELEMENTS, PFNGLDRAWRANGEELEMENTSPROC )
319 #define vglBindBufferARB GLEXT_CALL( OGL_BIND_BUFFER, PFNGLBINDBUFFERARBPROC )
320 #define vglDeleteBuffersARB GLEXT_CALL( OGL_DELETE_BUFFERS, PFNGLDELETEBUFFERSARBPROC )
321 #define vglGenBuffersARB GLEXT_CALL( OGL_GEN_BUFFERS, PFNGLGENBUFFERSARBPROC )
322 #define vglBufferDataARB GLEXT_CALL( OGL_BUFFER_DATA, PFNGLBUFFERDATAARBPROC )
323 #define vglBufferSubDataARB GLEXT_CALL( OGL_BUFFER_SUB_DATA, PFNGLBUFFERSUBDATAARBPROC )
324 #define vglMapBufferARB GLEXT_CALL2( OGL_MAP_BUFFER, PFNGLMAPBUFFERARBPROC )
325 #define vglUnmapBufferARB GLEXT_CALL( OGL_UNMAP_BUFFER, PFNGLUNMAPBUFFERARBPROC )
326 #define vglIsRenderbufferEXT GLEXT_CALL2( OGL_IS_RENDERBUFFER, PFNGLISRENDERBUFFEREXTPROC )
327 #define vglBindRenderbufferEXT GLEXT_CALL( OGL_BIND_RENDERBUFFER, PFNGLBINDRENDERBUFFEREXTPROC )
328 #define vglDeleteRenderbuffersEXT GLEXT_CALL( OGL_DELETE_RENDERBUFFERS, PFNGLDELETERENDERBUFFERSEXTPROC )
329 #define vglGenRenderbuffersEXT GLEXT_CALL( OGL_GEN_RENDERBUFFERS, PFNGLGENRENDERBUFFERSEXTPROC )
330 #define vglRenderbufferStorageEXT GLEXT_CALL( OGL_RENDERBUFFER_STORAGE, PFNGLRENDERBUFFERSTORAGEEXTPROC )
331 #define vglGetRenderbufferParameterivEXT GLEXT_CALL( OGL_GET_RENDERBUFFER_PARAMETER_IV, PFNGLGETRENDERBUFFERPARAMETERIVEXTPROC )
332 #define vglIsFramebufferEXT GLEXT_CALL2( OGL_IS_FRAMEBUFFER, PFNGLISFRAMEBUFFEREXTPROC )
333 #define vglBindFramebufferEXT GLEXT_CALL( OGL_BIND_FRAMEBUFFER, PFNGLBINDFRAMEBUFFEREXTPROC )
334 #define vglDeleteFramebuffersEXT GLEXT_CALL( OGL_DELETE_FRAMEBUFFERS, PFNGLDELETEFRAMEBUFFERSEXTPROC )
335 #define vglGenFramebuffersEXT GLEXT_CALL( OGL_GEN_FRAMEBUFFERS, PFNGLGENFRAMEBUFFERSEXTPROC )
336 #define vglCheckFramebufferStatusEXT GLEXT_CALL2( OGL_CHECK_FRAMEBUFFER_STATUS, PFNGLCHECKFRAMEBUFFERSTATUSEXTPROC )
337 #define vglFramebufferTexture2DEXT GLEXT_CALL( OGL_FRAMEBUFFER_TEXTURE_2D, PFNGLFRAMEBUFFERTEXTURE2DEXTPROC )
338 #define vglFramebufferRenderbufferEXT GLEXT_CALL( OGL_FRAMEBUFFER_RENDERBUFFER, PFNGLFRAMEBUFFERRENDERBUFFEREXTPROC )
339 #define vglGetFramebufferAttachmentParameterivEXT GLEXT_CALL( OGL_GET_FRAMEBUFFER_ATTACHMENT_PARAMETER_IV, PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC )
340 #define vglGenerateMipmapEXT GLEXT_CALL( OGL_GENERATE_MIPMAP, PFNGLGENERATEMIPMAPEXTPROC )
341 #define vglDeleteObjectARB GLEXT_CALL( OGL_DELETE_OBJECT, PFNGLDELETEOBJECTARBPROC )
342 #define vglCreateShaderObjectARB GLEXT_CALL2( OGL_CREATE_SHADER_OBJECT, PFNGLCREATESHADEROBJECTARBPROC )
343 #define vglShaderSourceARB GLEXT_CALL( OGL_SHADER_SOURCE, PFNGLSHADERSOURCEARBPROC )
344 #define vglCompileShaderARB GLEXT_CALL( OGL_COMPILE_SHADER, PFNGLCOMPILESHADERARBPROC )
345 #define vglGetObjectParameterivARB GLEXT_CALL( OGL_GET_OBJECT_PARAMETERIV, PFNGLGETOBJECTPARAMETERIVARBPROC )
346 #define vglGetInfoLogARB GLEXT_CALL( OGL_GET_INFO_LOG, PFNGLGETINFOLOGARBPROC )
347 #define vglCreateProgramObjectARB GLEXT_CALL2( OGL_CREATE_PROGRAM_OBJECT, PFNGLCREATEPROGRAMOBJECTARBPROC )
348 #define vglAttachObjectARB GLEXT_CALL( OGL_ATTACH_OBJECT, PFNGLATTACHOBJECTARBPROC )
349 #define vglLinkProgramARB GLEXT_CALL( OGL_LINK_PROGRAM, PFNGLLINKPROGRAMARBPROC )
350 #define vglUseProgramObjectARB GLEXT_CALL( OGL_USE_PROGRAM_OBJECT, PFNGLUSEPROGRAMOBJECTARBPROC )
351 #define vglValidateProgramARB GLEXT_CALL( OGL_VALIDATE_PROGRAM, PFNGLVALIDATEPROGRAMARBPROC )
352 #define vglEnableVertexAttribArrayARB GLEXT_CALL( OGL_ENABLE_VERTEX_ATTRIB_ARRAY, PFNGLENABLEVERTEXATTRIBARRAYARBPROC )
353 #define vglDisableVertexAttribArrayARB GLEXT_CALL( OGL_DISABLE_VERTEX_ATTRIB_ARRAY, PFNGLDISABLEVERTEXATTRIBARRAYARBPROC )
354 #define vglGetAttribLocationARB GLEXT_CALL2( OGL_GET_ATTRIB_LOCATION, PFNGLGETATTRIBLOCATIONARBPROC )
355 #define vglVertexAttribPointerARB GLEXT_CALL( OGL_VERTEX_ATTRIB_POINTER, PFNGLVERTEXATTRIBPOINTERARBPROC )
356 #define vglGetUniformLocationARB GLEXT_CALL2( OGL_GET_UNIFORM_LOCATION, PFNGLGETUNIFORMLOCATIONARBPROC )
357 #define vglGetUniformivARB GLEXT_CALL( OGL_GET_UNIFORMIV, PFNGLGETUNIFORMIVARBPROC )
358 #define vglUniform1fARB GLEXT_CALL( OGL_UNIFORM1F, PFNGLUNIFORM1FARBPROC )
359 #define vglUniform2fARB GLEXT_CALL( OGL_UNIFORM2F, PFNGLUNIFORM2FARBPROC )
360 #define vglUniform3fARB GLEXT_CALL( OGL_UNIFORM3F, PFNGLUNIFORM3FARBPROC )
361 #define vglUniform4fARB GLEXT_CALL( OGL_UNIFORM4F, PFNGLUNIFORM4FARBPROC )
362 #define vglUniform3fvARB GLEXT_CALL( OGL_UNIFORM3FV, PFNGLUNIFORM3FVARBPROC )
363 #define vglUniform4fvARB GLEXT_CALL( OGL_UNIFORM4FV, PFNGLUNIFORM4FVARBPROC )
364 #define vglUniform1iARB GLEXT_CALL( OGL_UNIFORM1I, PFNGLUNIFORM1IARBPROC )
365 #define vglUniformMatrix4fvARB GLEXT_CALL( OGL_UNIFORM_MATRIX4FV, PFNGLUNIFORMMATRIX4FVARBPROC )
366 #define vglDrawBuffers GLEXT_CALL( OGL_DRAWBUFFERS, PFNGLDRAWBUFFERSPROC )
367 #define vglDrawElementsBaseVertex GLEXT_CALL( OGL_DRAW_ELEMENTS_BASE_VERTEX, PFNGLDRAWELEMENTSBASEVERTEXPROC )
368 #define vglDrawRangeElementsBaseVertex GLEXT_CALL( OGL_DRAW_RANGE_ELEMENTS_BASE_VERTEX, PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC )
369 #define vglDrawElementsInstancedBaseVertex GLEXT_CALL( OGL_DRAW_ELEMENTS_INSTANCED_BASE_VERTEX, PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC )
370 #define vglMultiDrawElementsBaseVertex GLEXT_CALL( OGL_MULTI_DRAW_ELEMENTS_BASE_VERTEX, PFNGLMULTIDRAWELEMENTSBASEVERTEXPROC )
371 #define vglBlitFramebufferEXT GLEXT_CALL( OGL_BLITFRAMEBUFFER, PFNGLBLITFRAMEBUFFEREXTPROC )
372 #define vglProgramParameteriEXT GLEXT_CALL( OGL_PROGRAM_PARAMETERI, PFNGLPROGRAMPARAMETERIEXTPROC )
373 #define vglGetUniformIndicesARB GLEXT_CALL( OGL_GET_UNIFORM_INDICES, PFNGLGETUNIFORMINDICESPROC )
374 #define vglGetActiveUniformsivARB GLEXT_CALL( OGL_GET_ACTIVE_UNIFORMS_IV, PFNGLGETACTIVEUNIFORMSIVPROC )
375 #define vglGetActiveUniformNameARB GLEXT_CALL( OGL_GET_ACTIVE_UNIFORM_NAME, PFNGLGETACTIVEUNIFORMNAMEPROC )
376 #define vglGetUniformBlockIndexARB GLEXT_CALL2( OGL_GET_UNIFORM_BLOCK_INDEX, PFNGLGETUNIFORMBLOCKINDEXPROC )
377 #define vglGetActiveUniformBlockivARB GLEXT_CALL( OGL_GET_ACTIVE_UNIFORM_BLOCK_IV, PFNGLGETACTIVEUNIFORMBLOCKIVPROC )
378 #define vglGetActiveUniformBlockNameARB GLEXT_CALL( OGL_GET_ACTIVE_UNIFORM_BLOCK_NAME, PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC )
379 #define vglUniformBlockBindingARB GLEXT_CALL( OGL_UNIFORM_BLOCK_BINDING, PFNGLUNIFORMBLOCKBINDINGPROC )
380 #define vglBeginTransformFeedbackEXT GLEXT_CALL( OGL_BEGIN_TRANSFORM_FEEDBACK, PFNGLBEGINTRANSFORMFEEDBACKEXTPROC )
381 #define vglEndTransformFeedbackEXT GLEXT_CALL( OGL_END_TRANSFORM_FEEDBACK, PFNGLENDTRANSFORMFEEDBACKEXTPROC )
382 #define vglBindBufferRangeEXT GLEXT_CALL( OGL_BIND_BUFFER_RANGE, PFNGLBINDBUFFERRANGEEXTPROC )
383 #define vglBindBufferOffsetEXT GLEXT_CALL( OGL_BIND_BUFFER_OFFSET, PFNGLBINDBUFFEROFFSETEXTPROC )
384 #define vglBindBufferBaseEXT GLEXT_CALL( OGL_BIND_BUFFER_BASE, PFNGLBINDBUFFERBASEEXTPROC )
385 #define vglTransformFeedbackVaryingsEXT GLEXT_CALL( OGL_TRANSFORM_FEEDBACK_VARYINGS, PFNGLTRANSFORMFEEDBACKVARYINGSEXTPROC )
386 #define vglGetTransformFeedbackVaryingEXT GLEXT_CALL( OGL_GET_TRANSFORM_FEEDBACK_VARYING, PFNGLGETTRANSFORMFEEDBACKVARYINGEXTPROC )
387 #define vglDrawArraysInstancedARB GLEXT_CALL( OGL_ARB_DRAW_ARRAYS_INSTANCED, PFNGLDRAWARRAYSINSTANCEDARBPROC )
388 #define vglDrawElementsInstancedARB GLEXT_CALL( OGL_ARB_DRAW_ELEMENTS_INSTANCED, PFNGLDRAWELEMENTSINSTANCEDARBPROC )
389 #define vglTexBufferARB GLEXT_CALL( OGL_ARB_TEX_BUFFER, PFNGLTEXBUFFERARBPROC )
390 #ifndef __APPLE__
391 #define vglTexImage3D GLEXT_CALL( OGL_TEXIMAGE3D, PFNGLTEXIMAGE3DPROC )
392 #else
393 #define vglTexImage3D glTexImage3D
394 #endif
395 #define vglFramebufferTextureEXT GLEXT_CALL( OGL_FRAMEBUFFER_TEXTURE, PFNGLFRAMEBUFFERTEXTUREEXTPROC )
396 
397 // special extensions
398 #define vwglSwapIntervalEXT GLEXT_SPC_CALL( OGL_SPC_WGL_SWAP_INTERVAL, PFNWGLSWAPINTERVALEXTPROC )
399 #define vglXSwapIntervalSGI GLEXT_SPC_CALL( OGL_SPC_GLX_SWAP_INTERVAL, PFNGLXSWAPINTERVALSGIPROC )
400 
401 #endif // _GROPENGLEXT_H
unsigned int GLuint
Definition: Gl.h:52
int GLsizei
Definition: Gl.h:49
GLint GLint internalformat
Definition: Glext.h:5180
char GLchar
Definition: Glext.h:5062
GLenum mode
Definition: Glext.h:5794
ogl_extension GL_Extensions[]
struct ogl_function ogl_function
GLenum type
Definition: Gl.h:1492
struct ogl_extension ogl_extension
GLuint buffer
Definition: Glext.h:5492
void opengl_extensions_init()
ogl_function GL_Functions[]
GLuint start
Definition: Gl.h:1502
const char * extension_name[3]
ogl_function GL_EXT_Special[]
typedef void(APIENTRY *PFNGLARRAYELEMENTEXTPROC)(GLint i)
const char * function_names[20]
GLuint GLuint GLsizei GLenum const GLvoid * indices
Definition: Gl.h:1502
unsigned int ptr_u
Definition: pstypes.h:57
GLenum target
Definition: Glext.h:6872
const GLchar * uniformBlockName
Definition: Glext.h:6655
GLuint program
Definition: Glext.h:6284
GLint GLsizei count
Definition: Gl.h:1491
unsigned int GLenum
Definition: Gl.h:43
void GLvoid
Definition: Gl.h:57
GLuint GLuint end
Definition: Gl.h:1502
const char * function_name