File: gropenglextension.h

package info (click to toggle)
freespace2 3.7.0%2Brepack-2
  • links: PTS, VCS
  • area: non-free
  • in suites: jessie, jessie-kfreebsd
  • size: 22,848 kB
  • ctags: 41,897
  • sloc: cpp: 369,931; makefile: 1,060; xml: 129; sh: 112
file content (323 lines) | stat: -rw-r--r-- 17,639 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
/*
 * Copyright (C) Volition, Inc. 1999.  All rights reserved.
 *
 * All source code herein is the property of Volition, Inc. You may not sell 
 * or otherwise commercially exploit the source or things you created based on the 
 * source.
 *
*/



#ifndef _GROPENGLEXT_H
#define _GROPENGLEXT_H

#include "globalincs/pstypes.h"
#include "graphics/gropengl.h"

//EXTENSIONS!!!!
//be sure to check for this at startup and handle not finding it gracefully

//to add extensions/functions:
//define an index after the last one, either an extension or a function
//increment NUM_OGL_EXTENSIONS if an extension or NUM_OGL_FUNCTIONS if function
//add function macro for Win32
//add function info to GL_Functions struct
//the structure of extensions/functions are located in gropenglextension.cpp

typedef struct ogl_extension {
	bool required_to_run;
	bool enabled;
	int num_extensions;
	const char *extension_name[3];
	int num_functions;
	const char *function_names[20];
} ogl_extension;

typedef struct ogl_function {
	const char *function_name;
	ptr_u function_ptr;
} ogl_function;

extern ogl_function GL_Functions[];
extern ogl_extension GL_Extensions[];
extern ogl_function GL_EXT_Special[];


// Extensions
#define OGL_EXT_FOG_COORD					0
#define OGL_ARB_MULTITEXTURE				1
#define OGL_ARB_TEXTURE_ENV_ADD			2
#define OGL_ARB_TEXTURE_COMPRESSION		3
#define OGL_EXT_TEXTURE_COMPRESSION_S3TC	4
#define OGL_EXT_TEXTURE_FILTER_ANISOTROPIC	5
//#define OGL_NV_FOG_DISTANCE				6
//#define OGL_EXT_SECONDARY_COLOR			7
#define OGL_ARB_TEXTURE_ENV_COMBINE		6
#define OGL_EXT_COMPILED_VERTEX_ARRAY		7
//#define OGL_ARB_TRANSPOSE_MATRIX		10
#define OGL_EXT_DRAW_RANGE_ELEMENTS		8
#define OGL_ARB_TEXTURE_MIRRORED_REPEAT	9
#define OGL_ARB_TEXTURE_NON_POWER_OF_TWO	10
#define OGL_ARB_VERTEX_BUFFER_OBJECT		11
#define OGL_ARB_PIXEL_BUFFER_OBJECT		12
#define OGL_SGIS_GENERATE_MIPMAP			13
#define OGL_EXT_FRAMEBUFFER_OBJECT			14
#define OGL_ARB_TEXTURE_RECTANGLE			15
#define OGL_EXT_BGRA						16
#define OGL_ARB_TEXTURE_CUBE_MAP			17
#define OGL_EXT_TEXTURE_LOD_BIAS			18
#define OGL_ARB_POINT_SPRITE				19
#define OGL_ARB_SHADING_LANGUAGE_100		20
#define OGL_ARB_SHADER_OBJECTS				21
#define OGL_ARB_VERTEX_SHADER				22
#define OGL_ARB_FRAGMENT_SHADER				23
#define OGL_SM30							24
#define OGL_ARB_FLOATING_POINT_TEXTURES		25
#define OGL_ARB_DRAW_ELEMENTS_BASE_VERTEX	26

#define NUM_OGL_EXTENSIONS					27


// Functions
#define OGL_FOG_COORDF						0			// for better looking fog
#define OGL_FOG_COORD_POINTER				1			// used with vertex arrays
#define OGL_MULTI_TEX_COORD_2F				2			// multitex coordinates
#define OGL_ACTIVE_TEXTURE					3			// currenly active multitexture
#define OGL_CLIENT_ACTIVE_TEXTURE			4
#define OGL_COMPRESSED_TEX_IMAGE_2D			5			// 2d compressed texture
#define OGL_COMPRESSED_TEX_SUB_IMAGE_2D		6			// 2d compressed sub texture
#define OGL_GET_COMPRESSED_TEX_IMAGE		7
//#define OGL_SECONDARY_COLOR_3FV			8			// for better looking fog
//#define OGL_SECONDARY_COLOR_3UBV			9			// specular
#define OGL_LOCK_ARRAYS						8			// HTL
#define OGL_UNLOCK_ARRAYS					9			// HTL
//#define OGL_LOAD_TRANSPOSE_MATRIX_F		12			
//#define OGL_MULT_TRANSPOSE_MATRIX_F		13
#define OGL_DRAW_RANGE_ELEMENTS				10
#define OGL_BIND_BUFFER						11
#define OGL_DELETE_BUFFERS					12
#define OGL_GEN_BUFFERS						13
#define OGL_BUFFER_DATA						14
#define OGL_BUFFER_SUB_DATA					15
#define OGL_MAP_BUFFER						16
#define OGL_UNMAP_BUFFER					17
#define OGL_IS_RENDERBUFFER					18
#define OGL_BIND_RENDERBUFFER				19
#define OGL_DELETE_RENDERBUFFERS			20
#define OGL_GEN_RENDERBUFFERS				21
#define OGL_RENDERBUFFER_STORAGE			22
#define OGL_GET_RENDERBUFFER_PARAMETER_IV	23
#define OGL_IS_FRAMEBUFFER					24
#define OGL_BIND_FRAMEBUFFER				25
#define OGL_DELETE_FRAMEBUFFERS				26
#define OGL_GEN_FRAMEBUFFERS				27
#define OGL_CHECK_FRAMEBUFFER_STATUS		28
#define OGL_FRAMEBUFFER_TEXTURE_2D			29
#define OGL_FRAMEBUFFER_RENDERBUFFER		30
#define OGL_GET_FRAMEBUFFER_ATTACHMENT_PARAMETER_IV		31
#define OGL_GENERATE_MIPMAP					32
#define OGL_DELETE_OBJECT					33
#define OGL_CREATE_SHADER_OBJECT			34
#define OGL_SHADER_SOURCE					35
#define OGL_COMPILE_SHADER					36
#define OGL_GET_OBJECT_PARAMETERIV			37
#define OGL_GET_INFO_LOG					38
#define OGL_CREATE_PROGRAM_OBJECT			39
#define OGL_ATTACH_OBJECT					40
#define OGL_LINK_PROGRAM					41
#define OGL_USE_PROGRAM_OBJECT				42
#define OGL_VALIDATE_PROGRAM				43
#define OGL_ENABLE_VERTEX_ATTRIB_ARRAY		44
#define OGL_DISABLE_VERTEX_ATTRIB_ARRAY		45
#define OGL_GET_ATTRIB_LOCATION				46
#define OGL_VERTEX_ATTRIB_POINTER			47
#define OGL_GET_UNIFORM_LOCATION			48
#define OGL_GET_UNIFORMIV					49
#define OGL_UNIFORM1F						50
#define OGL_UNIFORM2F						51
#define OGL_UNIFORM3F						52
#define OGL_UNIFORM4F						53
#define OGL_UNIFORM3FV						54
#define OGL_UNIFORM4FV						55
#define OGL_UNIFORM1I						56
#define OGL_UNIFORM_MATRIX4FV				57
#define OGL_DRAWBUFFERS						58
#define OGL_DRAW_ELEMENTS_BASE_VERTEX				59
#define OGL_DRAW_RANGE_ELEMENTS_BASE_VERTEX			60
#define OGL_DRAW_ELEMENTS_INSTANCED_BASE_VERTEX		61
#define OGL_MULTI_DRAW_ELEMENTS_BASE_VERTEX			62

#define NUM_OGL_FUNCTIONS					63


// special extensions/functions (OS specific, non-GL stuff)
#define OGL_SPC_WGL_SWAP_INTERVAL		0
#define OGL_SPC_GLX_SWAP_INTERVAL		1

#define NUM_OGL_EXT_SPECIAL				2


#define Is_Extension_Enabled(x)		GL_Extensions[x].enabled

void opengl_extensions_init();


#define GLEXT_CALL(i, x) if (GL_Functions[i].function_ptr) \
							((x)GL_Functions[i].function_ptr)

// the same as GLEXT_CALL() except that it can be used with a cast or in an if statement
// this doesn't do NULL ptr checking so you have to be careful with it!
#define GLEXT_CALL2(i, x) ((x)GL_Functions[i].function_ptr)

#define GLEXT_SPC_CALL(i, x) if (GL_EXT_Special[i].function_ptr) \
							((x)GL_EXT_Special[i].function_ptr)


#ifdef __APPLE__
// special one, since it's a core feature
typedef void (* glDrawRangeElementsProcPtr) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices);

// OS X doesn't have the PFN* names so we have to use the real OSX function ptrs
#define PFNGLFOGCOORDFEXTPROC					glFogCoordfEXTProcPtr
#define PFNGLFOGCOORDPOINTEREXTPROC				glFogCoordPointerEXTProcPtr
#define PFNGLMULTITEXCOORD2FARBPROC				glMultiTexCoord2fARBProcPtr
#define PFNGLACTIVETEXTUREARBPROC				glActiveTextureARBProcPtr
#define PFNGLCLIENTACTIVETEXTUREARBPROC			glClientActiveTextureARBProcPtr
#define PFNGLCOMPRESSEDTEXIMAGE2DPROC			glCompressedTexImage2DARBProcPtr
#define PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC		glCompressedTexSubImage2DARBProcPtr
#define PFNGLGETCOMPRESSEDTEXIMAGEARBPROC		glGetCompressedTexImageARBProcPtr
//#define PFNGLSECONDARYCOLOR3FVEXTPROC			glSecondaryColor3fvEXTProcPtr
//#define PFNGLSECONDARYCOLOR3UBVEXTPROC		glSecondaryColor3ubvEXTProcPtr
#define PFNGLLOCKARRAYSEXTPROC					glLockArraysEXTProcPtr
#define PFNGLUNLOCKARRAYSEXTPROC				glUnlockArraysEXTProcPtr
//#define PFNGLLOADTRANSPOSEMATRIXFARBPROC		glLoadTransposeMatrixfARBProcPtr
//#define PFNGLMULTTRANSPOSEMATRIXFARBPROC		glMultTransposeMatrixfARBProcPtr
#define PFNGLDRAWRANGEELEMENTSPROC				glDrawRangeElementsProcPtr
#define PFNGLBINDBUFFERARBPROC					glBindBufferARBProcPtr
#define PFNGLDELETEBUFFERSARBPROC				glDeleteBuffersARBProcPtr
#define PFNGLGENBUFFERSARBPROC					glGenBuffersARBProcPtr
#define PFNGLBUFFERDATAARBPROC					glBufferDataARBProcPtr
#define PFNGLBUFFERSUBDATAARBPROC				glBufferSubDataARBProcPtr
#define PFNGLMAPBUFFERARBPROC					glMapBufferARBProcPtr
#define PFNGLUNMAPBUFFERARBPROC					glUnmapBufferARBProcPtr
#define PFNGLISRENDERBUFFEREXTPROC				glIsRenderbufferEXTProcPtr
#define PFNGLBINDRENDERBUFFEREXTPROC			glBindRenderbufferEXTProcPtr
#define PFNGLDELETERENDERBUFFERSEXTPROC			glDeleteRenderbuffersEXTProcPtr
#define PFNGLGENRENDERBUFFERSEXTPROC			glGenRenderbuffersEXTProcPtr
#define PFNGLRENDERBUFFERSTORAGEEXTPROC			glRenderbufferStorageEXTProcPtr
#define PFNGLGETRENDERBUFFERPARAMETERIVEXTPROC	glGetRenderbufferParameterivEXTProcPtr
#define PFNGLISFRAMEBUFFEREXTPROC				glIsFramebufferEXTProcPtr
#define PFNGLBINDFRAMEBUFFEREXTPROC				glBindFramebufferEXTProcPtr
#define PFNGLDELETEFRAMEBUFFERSEXTPROC			glDeleteFramebuffersEXTProcPtr
#define PFNGLGENFRAMEBUFFERSEXTPROC				glGenFramebuffersEXTProcPtr
#define PFNGLCHECKFRAMEBUFFERSTATUSEXTPROC		glCheckFramebufferStatusEXTProcPtr
#define PFNGLFRAMEBUFFERTEXTURE2DEXTPROC		glFramebufferTexture2DEXTProcPtr
#define PFNGLFRAMEBUFFERRENDERBUFFEREXTPROC		glFramebufferRenderbufferEXTProcPtr
#define PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC	glGetFramebufferAttachmentParameterivEXTProcPtr
#define PFNGLGENERATEMIPMAPEXTPROC				glGenerateMipmapEXTProcPtr
#define PFNGLDELETEOBJECTARBPROC				glDeleteObjectARBProcPtr
#define PFNGLCREATESHADEROBJECTARBPROC			glCreateShaderObjectARBProcPtr
#define PFNGLSHADERSOURCEARBPROC				glShaderSourceARBProcPtr
#define PFNGLCOMPILESHADERARBPROC				glCompileShaderARBProcPtr
#define PFNGLGETOBJECTPARAMETERIVARBPROC		glGetObjectParameterivARBProcPtr
#define PFNGLGETINFOLOGARBPROC					glGetInfoLogARBProcPtr
#define PFNGLCREATEPROGRAMOBJECTARBPROC			glCreateProgramObjectARBProcPtr
#define PFNGLATTACHOBJECTARBPROC				glAttachObjectARBProcPtr
#define PFNGLLINKPROGRAMARBPROC					glLinkProgramARBProcPtr
#define PFNGLUSEPROGRAMOBJECTARBPROC			glUseProgramObjectARBProcPtr
#define PFNGLVALIDATEPROGRAMARBPROC				glValidateProgramARBProcPtr
#define PFNGLENABLEVERTEXATTRIBARRAYARBPROC		glEnableVertexAttribArrayARBProcPtr
#define PFNGLDISABLEVERTEXATTRIBARRAYARBPROC	glDisableVertexAttribArrayARBProcPtr
#define PFNGLGETATTRIBLOCATIONARBPROC			glGetAttribLocationARBProcPtr
#define PFNGLVERTEXATTRIBPOINTERARBPROC			glVertexAttribPointerARBProcPtr
#define PFNGLGETUNIFORMLOCATIONARBPROC			glGetUniformLocationARBProcPtr
#define PFNGLGETUNIFORMIVARBPROC				glGetUniformivARBProcPtr
#define PFNGLUNIFORM1FARBPROC					glUniform1fARBProcPtr
#define PFNGLUNIFORM2FARBPROC					glUniform2fARBProcPtr
#define PFNGLUNIFORM3FARBPROC					glUniform3fARBProcPtr
#define PFNGLUNIFORM4FARBPROC					glUnifrom4fARBProcPtr
#define PFNGLUNIFORM3FVARBPROC					glUniform3fvARBProcPtr
#define PFNGLUNIFORM4FVARBPROC					glUnifrom4fvARBProcPtr
#define PFNGLUNIFORM1IARBPROC					glUniform1iARBProcPtr
#define PFNGLUNIFORMMATRIX4FVARBPROC			glUniformMatrix4fvARBProcPtr
#define PFNGLDRAWBUFFERSPROC					glDrawBuffersARBProcPtr
#define PFNGLDRAWELEMENTSBASEVERTEXPROC         glDrawElementsBaseVertexProcPtr
#define PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC    glDrawRangeElementsBaseVertexProcPtr
#define PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC glDrawElementsInstancedBaseVertexProcPtr
#define PFNGLMULTIDRAWELEMENTSBASEVERTEXPROC    glMultiDrawElementsBaseVertexProcPtr
#endif	// __APPLE__

#define vglFogCoordfEXT					GLEXT_CALL( OGL_FOG_COORDF, PFNGLFOGCOORDFEXTPROC )
#define vglFogCoordPointerEXT			GLEXT_CALL( OGL_FOG_COORD_POINTER, PFNGLFOGCOORDPOINTEREXTPROC )
#define vglMultiTexCoord2fARB			GLEXT_CALL( OGL_MULTI_TEX_COORD_2F, PFNGLMULTITEXCOORD2FARBPROC )
#define vglActiveTextureARB				GLEXT_CALL( OGL_ACTIVE_TEXTURE, PFNGLACTIVETEXTUREARBPROC )
#define vglClientActiveTextureARB		GLEXT_CALL( OGL_CLIENT_ACTIVE_TEXTURE, PFNGLCLIENTACTIVETEXTUREARBPROC )
#define vglCompressedTexImage2D			GLEXT_CALL( OGL_COMPRESSED_TEX_IMAGE_2D, PFNGLCOMPRESSEDTEXIMAGE2DPROC )
#define vglCompressedTexSubImage2D		GLEXT_CALL( OGL_COMPRESSED_TEX_SUB_IMAGE_2D, PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC )
#define vglGetCompressedTexImageARB		GLEXT_CALL( OGL_GET_COMPRESSED_TEX_IMAGE, PFNGLGETCOMPRESSEDTEXIMAGEARBPROC )
//#define vglSecondaryColor3fvEXT		GLEXT_CALL( OGL_SECONDARY_COLOR_3FV, PFNGLSECONDARYCOLOR3FVEXTPROC )
//#define vglSecondaryColor3ubvEXT		GLEXT_CALL( OGL_SECONDARY_COLOR_3UBV, PFNGLSECONDARYCOLOR3UBVEXTPROC )
#define vglLockArraysEXT				GLEXT_CALL( OGL_LOCK_ARRAYS, PFNGLLOCKARRAYSEXTPROC )
#define vglUnlockArraysEXT				GLEXT_CALL( OGL_UNLOCK_ARRAYS, PFNGLUNLOCKARRAYSEXTPROC )
//#define vglLoadTransposeMatrixfARB	GLEXT_CALL( OGL_LOAD_TRANSPOSE_MATRIX_F, PFNGLLOADTRANSPOSEMATRIXFARBPROC )
//#define vglMultTransposeMatrixfARB	GLEXT_CALL( OGL_MULT_TRANSPOSE_MATRIX_F, PFNGLMULTTRANSPOSEMATRIXFARBPROC )
#define vglDrawRangeElements			GLEXT_CALL( OGL_DRAW_RANGE_ELEMENTS, PFNGLDRAWRANGEELEMENTSPROC )
#define vglBindBufferARB				GLEXT_CALL( OGL_BIND_BUFFER, PFNGLBINDBUFFERARBPROC )
#define vglDeleteBuffersARB				GLEXT_CALL( OGL_DELETE_BUFFERS, PFNGLDELETEBUFFERSARBPROC )
#define vglGenBuffersARB				GLEXT_CALL( OGL_GEN_BUFFERS, PFNGLGENBUFFERSARBPROC )
#define vglBufferDataARB				GLEXT_CALL( OGL_BUFFER_DATA, PFNGLBUFFERDATAARBPROC )
#define vglBufferSubDataARB				GLEXT_CALL( OGL_BUFFER_SUB_DATA, PFNGLBUFFERSUBDATAARBPROC )
#define vglMapBufferARB					GLEXT_CALL2( OGL_MAP_BUFFER, PFNGLMAPBUFFERARBPROC )
#define vglUnmapBufferARB				GLEXT_CALL( OGL_UNMAP_BUFFER, PFNGLUNMAPBUFFERARBPROC )
#define vglIsRenderbufferEXT			GLEXT_CALL2( OGL_IS_RENDERBUFFER, PFNGLISRENDERBUFFEREXTPROC )
#define vglBindRenderbufferEXT			GLEXT_CALL( OGL_BIND_RENDERBUFFER, PFNGLBINDRENDERBUFFEREXTPROC )
#define vglDeleteRenderbuffersEXT		GLEXT_CALL( OGL_DELETE_RENDERBUFFERS, PFNGLDELETERENDERBUFFERSEXTPROC )
#define vglGenRenderbuffersEXT			GLEXT_CALL( OGL_GEN_RENDERBUFFERS, PFNGLGENRENDERBUFFERSEXTPROC )
#define vglRenderbufferStorageEXT		GLEXT_CALL( OGL_RENDERBUFFER_STORAGE, PFNGLRENDERBUFFERSTORAGEEXTPROC )
#define vglGetRenderbufferParameterivEXT	GLEXT_CALL( OGL_GET_RENDERBUFFER_PARAMETER_IV, PFNGLGETRENDERBUFFERPARAMETERIVEXTPROC )
#define vglIsFramebufferEXT				GLEXT_CALL2( OGL_IS_FRAMEBUFFER, PFNGLISFRAMEBUFFEREXTPROC )
#define vglBindFramebufferEXT			GLEXT_CALL( OGL_BIND_FRAMEBUFFER, PFNGLBINDFRAMEBUFFEREXTPROC )
#define vglDeleteFramebuffersEXT		GLEXT_CALL( OGL_DELETE_FRAMEBUFFERS, PFNGLDELETEFRAMEBUFFERSEXTPROC )
#define vglGenFramebuffersEXT			GLEXT_CALL( OGL_GEN_FRAMEBUFFERS, PFNGLGENFRAMEBUFFERSEXTPROC )
#define vglCheckFramebufferStatusEXT	GLEXT_CALL2( OGL_CHECK_FRAMEBUFFER_STATUS, PFNGLCHECKFRAMEBUFFERSTATUSEXTPROC )
#define vglFramebufferTexture2DEXT		GLEXT_CALL( OGL_FRAMEBUFFER_TEXTURE_2D, PFNGLFRAMEBUFFERTEXTURE2DEXTPROC )
#define vglFramebufferRenderbufferEXT	GLEXT_CALL( OGL_FRAMEBUFFER_RENDERBUFFER, PFNGLFRAMEBUFFERRENDERBUFFEREXTPROC )
#define vglGetFramebufferAttachmentParameterivEXT	GLEXT_CALL( OGL_GET_FRAMEBUFFER_ATTACHMENT_PARAMETER_IV, PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC )
#define vglGenerateMipmapEXT			GLEXT_CALL( OGL_GENERATE_MIPMAP, PFNGLGENERATEMIPMAPEXTPROC )
#define vglDeleteObjectARB				GLEXT_CALL( OGL_DELETE_OBJECT, PFNGLDELETEOBJECTARBPROC )
#define vglCreateShaderObjectARB		GLEXT_CALL2( OGL_CREATE_SHADER_OBJECT, PFNGLCREATESHADEROBJECTARBPROC )
#define vglShaderSourceARB				GLEXT_CALL( OGL_SHADER_SOURCE, PFNGLSHADERSOURCEARBPROC )
#define vglCompileShaderARB				GLEXT_CALL( OGL_COMPILE_SHADER, PFNGLCOMPILESHADERARBPROC )
#define vglGetObjectParameterivARB		GLEXT_CALL( OGL_GET_OBJECT_PARAMETERIV, PFNGLGETOBJECTPARAMETERIVARBPROC )
#define vglGetInfoLogARB				GLEXT_CALL( OGL_GET_INFO_LOG, PFNGLGETINFOLOGARBPROC )
#define vglCreateProgramObjectARB		GLEXT_CALL2( OGL_CREATE_PROGRAM_OBJECT, PFNGLCREATEPROGRAMOBJECTARBPROC )
#define vglAttachObjectARB				GLEXT_CALL( OGL_ATTACH_OBJECT, PFNGLATTACHOBJECTARBPROC )
#define vglLinkProgramARB				GLEXT_CALL( OGL_LINK_PROGRAM, PFNGLLINKPROGRAMARBPROC )
#define vglUseProgramObjectARB			GLEXT_CALL( OGL_USE_PROGRAM_OBJECT, PFNGLUSEPROGRAMOBJECTARBPROC )
#define vglValidateProgramARB			GLEXT_CALL( OGL_VALIDATE_PROGRAM, PFNGLVALIDATEPROGRAMARBPROC )
#define vglEnableVertexAttribArrayARB	GLEXT_CALL( OGL_ENABLE_VERTEX_ATTRIB_ARRAY, PFNGLENABLEVERTEXATTRIBARRAYARBPROC )
#define vglDisableVertexAttribArrayARB	GLEXT_CALL( OGL_DISABLE_VERTEX_ATTRIB_ARRAY, PFNGLDISABLEVERTEXATTRIBARRAYARBPROC )
#define vglGetAttribLocationARB			GLEXT_CALL2( OGL_GET_ATTRIB_LOCATION, PFNGLGETATTRIBLOCATIONARBPROC )
#define vglVertexAttribPointerARB		GLEXT_CALL( OGL_VERTEX_ATTRIB_POINTER, PFNGLVERTEXATTRIBPOINTERARBPROC )
#define vglGetUniformLocationARB		GLEXT_CALL2( OGL_GET_UNIFORM_LOCATION, PFNGLGETUNIFORMLOCATIONARBPROC )
#define vglGetUniformivARB				GLEXT_CALL( OGL_GET_UNIFORMIV, PFNGLGETUNIFORMIVARBPROC )
#define vglUniform1fARB					GLEXT_CALL( OGL_UNIFORM1F, PFNGLUNIFORM1FARBPROC )
#define vglUniform2fARB					GLEXT_CALL( OGL_UNIFORM2F, PFNGLUNIFORM2FARBPROC )
#define vglUniform3fARB					GLEXT_CALL( OGL_UNIFORM3F, PFNGLUNIFORM3FARBPROC )
#define vglUniform4fARB					GLEXT_CALL( OGL_UNIFORM4F, PFNGLUNIFORM4FARBPROC )
#define vglUniform3fvARB				GLEXT_CALL( OGL_UNIFORM3FV, PFNGLUNIFORM3FVARBPROC )
#define vglUniform4fvARB				GLEXT_CALL( OGL_UNIFORM4FV, PFNGLUNIFORM4FVARBPROC )
#define vglUniform1iARB					GLEXT_CALL( OGL_UNIFORM1I, PFNGLUNIFORM1IARBPROC )
#define vglUniformMatrix4fvARB			GLEXT_CALL( OGL_UNIFORM_MATRIX4FV, PFNGLUNIFORMMATRIX4FVARBPROC )
#define vglDrawBuffers					GLEXT_CALL( OGL_DRAWBUFFERS, PFNGLDRAWBUFFERSPROC )
#define vglDrawElementsBaseVertex		GLEXT_CALL( OGL_DRAW_ELEMENTS_BASE_VERTEX, PFNGLDRAWELEMENTSBASEVERTEXPROC )
#define vglDrawRangeElementsBaseVertex	GLEXT_CALL( OGL_DRAW_RANGE_ELEMENTS_BASE_VERTEX, PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC )
#define vglDrawElementsInstancedBaseVertex		GLEXT_CALL( OGL_DRAW_ELEMENTS_INSTANCED_BASE_VERTEX, PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC )
#define vglMultiDrawElementsBaseVertex	GLEXT_CALL( OGL_MULTI_DRAW_ELEMENTS_BASE_VERTEX, PFNGLMULTIDRAWELEMENTSBASEVERTEXPROC )

// special extensions
#define vwglSwapIntervalEXT			GLEXT_SPC_CALL( OGL_SPC_WGL_SWAP_INTERVAL, PFNWGLSWAPINTERVALEXTPROC )
#define vglXSwapIntervalSGI			GLEXT_SPC_CALL( OGL_SPC_GLX_SWAP_INTERVAL, PFNGLXSWAPINTERVALSGIPROC )

#endif // _GROPENGLEXT_H