FS2_Open
Open source remastering of the Freespace 2 engine
gropengl.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 _GROPENGL_H
13 #define _GROPENGL_H
14 
15 
16 
17 #ifdef _WIN32
18  #define WIN32_LEAN_AND_MEAN
19  #include <windows.h>
20 
21  #include "graphics/gl/gl.h"
22  #include "graphics/gl/glu.h"
23  #include "graphics/gl/glext.h"
24  #include "graphics/gl/wglext.h"
25 
26  #define STUB_FUNCTION 0
27 #elif defined(SCP_UNIX)
28 #ifdef __APPLE__
29  #define GL_GLEXT_LEGACY // I'd like to punch the idiot that made this needed
30  #include <OpenGL/gl.h>
31  #include <OpenGL/glu.h>
32  #define GL_GLEXT_FUNCTION_POINTERS // we need the ptr versions of the functions
33  #include <OpenGL/glext.h>
34 #else
35  #include <GL/gl.h>
36  #include <GL/glu.h>
37  #include <GL/glext.h>
38 #endif // __APPLE__
39 #endif
40 
41 #include "globalincs/pstypes.h"
42 #include "graphics/grinternal.h"
43 
44 
45 #ifndef APIENTRY
46 #define APIENTRY
47 #endif
48 
49 #ifndef APIENTRYP
50 #define APIENTRYP APIENTRY *
51 #endif
52 
53 // in case it's missing from the GL headers
54 #ifndef GL_ARB_pixel_buffer_object
55 #define GL_ARB_pixel_buffer_object 1
56 #define GL_PIXEL_PACK_BUFFER_ARB 0x88EB
57 #define GL_PIXEL_UNPACK_BUFFER_ARB 0x88EC
58 #define GL_PIXEL_PACK_BUFFER_BINDING_ARB 0x88ED
59 #define GL_PIXEL_UNPACK_BUFFER_BINDING_ARB 0x88EF
60 #endif
61 
62 #ifndef GL_ARB_texture_rectangle
63 #define GL_ARB_texture_rectangle 1
64 #define GL_TEXTURE_RECTANGLE_ARB 0x84F5
65 #define GL_TEXTURE_BINDING_RECTANGLE_ARB 0x84F6
66 #define GL_PROXY_TEXTURE_RECTANGLE_ARB 0x84F7
67 #define GL_MAX_RECTANGLE_TEXTURE_SIZE_ARB 0x84F8
68 #endif
69 
70 #ifndef GL_VERSION_1_4
71 #define GL_MAX_TEXTURE_LOD_BIAS 0x84FD
72 #define GL_TEXTURE_FILTER_CONTROL 0x8500
73 #define GL_TEXTURE_LOD_BIAS 0x8501
74 #endif
75 
76 #ifndef GL_VERSION_1_5
77 #define GL_READ_ONLY 0x88B8
78 #define GL_WRITE_ONLY 0x88B9
79 #define GL_READ_WRITE 0x88BA
80 #define GL_BUFFER_ACCESS 0x88BB
81 #define GL_BUFFER_MAPPED 0x88BC
82 #define GL_BUFFER_MAP_POINTER 0x88BD
83 #define GL_STREAM_DRAW 0x88E0
84 #define GL_STREAM_READ 0x88E1
85 #define GL_STREAM_COPY 0x88E2
86 #define GL_STATIC_DRAW 0x88E4
87 #define GL_STATIC_READ 0x88E5
88 #define GL_STATIC_COPY 0x88E6
89 #define GL_DYNAMIC_DRAW 0x88E8
90 #define GL_DYNAMIC_READ 0x88E9
91 #define GL_DYNAMIC_COPY 0x88EA
92 #define GL_SAMPLES_PASSED 0x8914
93 #endif
94 
95 #if !defined(GL_ARB_texture_env_combine) || !defined(GL_ARB_texture_env_add)
96 #define GL_ARB_texture_env_combine 1
97 #define GL_ARB_texture_env_add 1
98 #define GL_COMBINE_ARB 0x8570
99 #define GL_COMBINE_RGB_ARB 0x8571
100 #define GL_COMBINE_ALPHA_ARB 0x8572
101 #define GL_SOURCE0_RGB_ARB 0x8580
102 #define GL_SOURCE1_RGB_ARB 0x8581
103 #define GL_SOURCE2_RGB_ARB 0x8582
104 #define GL_SOURCE0_ALPHA_ARB 0x8588
105 #define GL_SOURCE1_ALPHA_ARB 0x8589
106 #define GL_SOURCE2_ALPHA_ARB 0x858A
107 #define GL_OPERAND0_RGB_ARB 0x8590
108 #define GL_OPERAND1_RGB_ARB 0x8591
109 #define GL_OPERAND2_RGB_ARB 0x8592
110 #define GL_OPERAND0_ALPHA_ARB 0x8598
111 #define GL_OPERAND1_ALPHA_ARB 0x8599
112 #define GL_OPERAND2_ALPHA_ARB 0x859A
113 #define GL_RGB_SCALE_ARB 0x8573
114 #define GL_ADD_SIGNED_ARB 0x8574
115 #define GL_INTERPOLATE_ARB 0x8575
116 #define GL_SUBTRACT_ARB 0x84E7
117 #define GL_CONSTANT_ARB 0x8576
118 #define GL_PRIMARY_COLOR_ARB 0x8577
119 #define GL_PREVIOUS_ARB 0x8578
120 #endif
121 
122 #ifndef GL_ARB_point_sprite
123 #define GL_ARB_point_sprite 1
124 #define GL_POINT_SPRITE_ARB 0x8861
125 #define GL_COORD_REPLACE_ARB 0x8862
126 #endif
127 
128 #ifndef GL_ARB_vertex_buffer_object
129 #define GL_ARB_vertex_buffer_object 1
130 #ifdef __APPLE__
131 typedef long GLintptrARB;
132 typedef long GLsizeiptrARB;
133 
134 typedef void (* glBindBufferARBProcPtr) (GLenum target, GLuint buffer);
135 typedef void (* glDeleteBuffersARBProcPtr) (GLsizei n, const GLuint *buffers);
136 typedef void (* glGenBuffersARBProcPtr) (GLsizei n, GLuint *buffers);
137 typedef GLboolean (* glIsBufferARBProcPtr) (GLuint buffer);
138 typedef void (* glBufferDataARBProcPtr) (GLenum target, GLsizeiptrARB size, const GLvoid *data, GLenum usage);
139 typedef void (* glBufferSubDataARBProcPtr) (GLenum target, GLintptrARB offset, GLsizeiptrARB size, const GLvoid *data);
140 typedef void (* glGetBufferSubDataARBProcPtr) (GLenum target, GLintptrARB offset, GLsizeiptrARB size, GLvoid *data);
141 typedef GLvoid *(* glMapBufferARBProcPtr) (GLenum target, GLenum access);
142 typedef GLboolean (* glUnmapBufferARBProcPtr) (GLenum target);
143 typedef void (* glGetBufferParameterivARBProcPtr) (GLenum target, GLenum pname, GLint *params);
144 typedef void (* glGetBufferPointervARBProcPtr) (GLenum target, GLenum pname, GLvoid **params);
145 #else
146 typedef void (APIENTRYP PFNGLBINDBUFFERARBPROC) (GLenum target, GLuint buffer);
147 typedef void (APIENTRYP PFNGLDELETEBUFFERSARBPROC) (GLsizei n, const GLuint *buffers);
148 typedef void (APIENTRYP PFNGLGENBUFFERSARBPROC) (GLsizei n, GLuint *buffers);
149 typedef GLboolean (APIENTRYP PFNGLISBUFFERARBPROC) (GLuint buffer);
150 typedef void (APIENTRYP PFNGLBUFFERDATAARBPROC) (GLenum target, GLsizeiptrARB size, const GLvoid *data, GLenum usage);
151 typedef void (APIENTRYP PFNGLBUFFERSUBDATAARBPROC) (GLenum target, GLintptrARB offset, GLsizeiptrARB size, const GLvoid *data);
152 typedef void (APIENTRYP PFNGLGETBUFFERSUBDATAARBPROC) (GLenum target, GLintptrARB offset, GLsizeiptrARB size, GLvoid *data);
154 typedef GLboolean (APIENTRYP PFNGLUNMAPBUFFERARBPROC) (GLenum target);
155 typedef void (APIENTRYP PFNGLGETBUFFERPARAMETERIVARBPROC) (GLenum target, GLenum pname, GLint *params);
156 typedef void (APIENTRYP PFNGLGETBUFFERPOINTERVARBPROC) (GLenum target, GLenum pname, GLvoid* *params);
157 #endif // __APPLE__
158 #endif
159 
160 #ifndef GL_EXT_compiled_vertex_array
161 #define GL_EXT_compiled_vertex_array 1
162 #ifdef __APPLE__
163 typedef void (* glLockArraysEXTProcPtr) (GLint, GLsizei);
164 typedef void (* glUnlockArraysEXTProcPtr) (void);
165 #else
166 typedef void (APIENTRYP PFNGLLOCKARRAYSEXTPROC) (GLint first, GLsizei count);
167 typedef void (APIENTRYP PFNGLUNLOCKARRAYSEXTPROC) (void);
168 #endif // __APPLE__
169 #endif
170 
171 #ifndef GL_EXT_framebuffer_object
172 #define GL_EXT_framebuffer_object 1
173 #define GL_INVALID_FRAMEBUFFER_OPERATION_EXT 0x0506
174 #define GL_MAX_RENDERBUFFER_SIZE_EXT 0x84E8
175 #define GL_FRAMEBUFFER_BINDING_EXT 0x8CA6
176 #define GL_RENDERBUFFER_BINDING_EXT 0x8CA7
177 #define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_EXT 0x8CD0
178 #define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_EXT 0x8CD1
179 #define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_EXT 0x8CD2
180 #define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_EXT 0x8CD3
181 #define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_EXT 0x8CD4
182 #define GL_FRAMEBUFFER_COMPLETE_EXT 0x8CD5
183 #define GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_EXT 0x8CD6
184 #define GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_EXT 0x8CD7
185 #define GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT 0x8CD9
186 #define GL_FRAMEBUFFER_INCOMPLETE_FORMATS_EXT 0x8CDA
187 #define GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_EXT 0x8CDB
188 #define GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_EXT 0x8CDC
189 #define GL_FRAMEBUFFER_UNSUPPORTED_EXT 0x8CDD
190 #define GL_MAX_COLOR_ATTACHMENTS_EXT 0x8CDF
191 #define GL_COLOR_ATTACHMENT0_EXT 0x8CE0
192 #define GL_COLOR_ATTACHMENT1_EXT 0x8CE1
193 #define GL_COLOR_ATTACHMENT2_EXT 0x8CE2
194 #define GL_COLOR_ATTACHMENT3_EXT 0x8CE3
195 #define GL_COLOR_ATTACHMENT4_EXT 0x8CE4
196 #define GL_COLOR_ATTACHMENT5_EXT 0x8CE5
197 #define GL_COLOR_ATTACHMENT6_EXT 0x8CE6
198 #define GL_COLOR_ATTACHMENT7_EXT 0x8CE7
199 #define GL_COLOR_ATTACHMENT8_EXT 0x8CE8
200 #define GL_COLOR_ATTACHMENT9_EXT 0x8CE9
201 #define GL_COLOR_ATTACHMENT10_EXT 0x8CEA
202 #define GL_COLOR_ATTACHMENT11_EXT 0x8CEB
203 #define GL_COLOR_ATTACHMENT12_EXT 0x8CEC
204 #define GL_COLOR_ATTACHMENT13_EXT 0x8CED
205 #define GL_COLOR_ATTACHMENT14_EXT 0x8CEE
206 #define GL_COLOR_ATTACHMENT15_EXT 0x8CEF
207 #define GL_DEPTH_ATTACHMENT_EXT 0x8D00
208 #define GL_STENCIL_ATTACHMENT_EXT 0x8D20
209 #define GL_FRAMEBUFFER_EXT 0x8D40
210 #define GL_RENDERBUFFER_EXT 0x8D41
211 #define GL_RENDERBUFFER_WIDTH_EXT 0x8D42
212 #define GL_RENDERBUFFER_HEIGHT_EXT 0x8D43
213 #define GL_RENDERBUFFER_INTERNAL_FORMAT_EXT 0x8D44
214 #define GL_STENCIL_INDEX_EXT 0x8D45
215 #define GL_STENCIL_INDEX1_EXT 0x8D46
216 #define GL_STENCIL_INDEX4_EXT 0x8D47
217 #define GL_STENCIL_INDEX8_EXT 0x8D48
218 #define GL_STENCIL_INDEX16_EXT 0x8D49
219 #define GL_RENDERBUFFER_RED_SIZE_EXT 0x8D50
220 #define GL_RENDERBUFFER_GREEN_SIZE_EXT 0x8D51
221 #define GL_RENDERBUFFER_BLUE_SIZE_EXT 0x8D52
222 #define GL_RENDERBUFFER_ALPHA_SIZE_EXT 0x8D53
223 #define GL_RENDERBUFFER_DEPTH_SIZE_EXT 0x8D54
224 #define GL_RENDERBUFFER_STENCIL_SIZE_EXT 0x8D55
225 
226 #ifdef __APPLE__
227 typedef GLboolean (* glIsRenderbufferEXTProcPtr) (GLuint renderbuffer);
228 typedef void (* glBindRenderbufferEXTProcPtr) (GLenum target, GLuint renderbuffer);
229 typedef void (* glDeleteRenderbuffersEXTProcPtr) (GLsizei n, const GLuint *renderbuffers);
230 typedef void (* glGenRenderbuffersEXTProcPtr) (GLsizei n, GLuint *renderbuffers);
231 typedef void (* glRenderbufferStorageEXTProcPtr) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height);
232 typedef void (* glGetRenderbufferParameterivEXTProcPtr) (GLenum target, GLenum pname, GLint *params);
233 typedef GLboolean (* glIsFramebufferEXTProcPtr) (GLuint framebuffer);
234 typedef void (* glBindFramebufferEXTProcPtr) (GLenum target, GLuint framebuffer);
235 typedef void (* glDeleteFramebuffersEXTProcPtr) (GLsizei n, const GLuint *framebuffers);
236 typedef void (* glGenFramebuffersEXTProcPtr) (GLsizei n, GLuint *framebuffers);
237 typedef GLenum (* glCheckFramebufferStatusEXTProcPtr) (GLenum target);
238 typedef void (* glFramebufferTexture1DEXTProcPtr) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
239 typedef void (* glFramebufferTexture2DEXTProcPtr) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
240 typedef void (* glFramebufferTexture3DEXTProcPtr) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset);
241 typedef void (* glFramebufferRenderbufferEXTProcPtr) (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);
242 typedef void (* glGetFramebufferAttachmentParameterivEXTProcPtr) (GLenum target, GLenum attachment, GLenum pname, GLint *params);
243 typedef void (* glGenerateMipmapEXTProcPtr) (GLenum target);
244 #else
245 typedef GLboolean (APIENTRYP PFNGLISRENDERBUFFEREXTPROC) (GLuint renderbuffer);
246 typedef void (APIENTRYP PFNGLBINDRENDERBUFFEREXTPROC) (GLenum target, GLuint renderbuffer);
247 typedef void (APIENTRYP PFNGLDELETERENDERBUFFERSEXTPROC) (GLsizei n, const GLuint *renderbuffers);
248 typedef void (APIENTRYP PFNGLGENRENDERBUFFERSEXTPROC) (GLsizei n, GLuint *renderbuffers);
249 typedef void (APIENTRYP PFNGLRENDERBUFFERSTORAGEEXTPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height);
250 typedef void (APIENTRYP PFNGLGETRENDERBUFFERPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint *params);
251 typedef GLboolean (APIENTRYP PFNGLISFRAMEBUFFEREXTPROC) (GLuint framebuffer);
252 typedef void (APIENTRYP PFNGLBINDFRAMEBUFFEREXTPROC) (GLenum target, GLuint framebuffer);
253 typedef void (APIENTRYP PFNGLDELETEFRAMEBUFFERSEXTPROC) (GLsizei n, const GLuint *framebuffers);
254 typedef void (APIENTRYP PFNGLGENFRAMEBUFFERSEXTPROC) (GLsizei n, GLuint *framebuffers);
255 typedef GLenum (APIENTRYP PFNGLCHECKFRAMEBUFFERSTATUSEXTPROC) (GLenum target);
256 typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURE1DEXTPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
257 typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURE2DEXTPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
258 typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURE3DEXTPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset);
259 typedef void (APIENTRYP PFNGLFRAMEBUFFERRENDERBUFFEREXTPROC) (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);
260 typedef void (APIENTRYP PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC) (GLenum target, GLenum attachment, GLenum pname, GLint *params);
261 typedef void (APIENTRYP PFNGLGENERATEMIPMAPEXTPROC) (GLenum target);
262 #endif // __APPLE__
263 #endif // GL_EXT_framebuffer_object
264 
265 #ifndef GL_ARB_shader_objects
266 #define GL_ARB_shader_objects 1
267 #define GL_PROGRAM_OBJECT_ARB 0x8B40
268 #define GL_SHADER_OBJECT_ARB 0x8B48
269 #define GL_OBJECT_TYPE_ARB 0x8B4E
270 #define GL_OBJECT_SUBTYPE_ARB 0x8B4F
271 #define GL_FLOAT_VEC2_ARB 0x8B50
272 #define GL_FLOAT_VEC3_ARB 0x8B51
273 #define GL_FLOAT_VEC4_ARB 0x8B52
274 #define GL_INT_VEC2_ARB 0x8B53
275 #define GL_INT_VEC3_ARB 0x8B54
276 #define GL_INT_VEC4_ARB 0x8B55
277 #define GL_BOOL_ARB 0x8B56
278 #define GL_BOOL_VEC2_ARB 0x8B57
279 #define GL_BOOL_VEC3_ARB 0x8B58
280 #define GL_BOOL_VEC4_ARB 0x8B59
281 #define GL_FLOAT_MAT2_ARB 0x8B5A
282 #define GL_FLOAT_MAT3_ARB 0x8B5B
283 #define GL_FLOAT_MAT4_ARB 0x8B5C
284 #define GL_SAMPLER_1D_ARB 0x8B5D
285 #define GL_SAMPLER_2D_ARB 0x8B5E
286 #define GL_SAMPLER_3D_ARB 0x8B5F
287 #define GL_SAMPLER_CUBE_ARB 0x8B60
288 #define GL_SAMPLER_1D_SHADOW_ARB 0x8B61
289 #define GL_SAMPLER_2D_SHADOW_ARB 0x8B62
290 #define GL_SAMPLER_2D_RECT_ARB 0x8B63
291 #define GL_SAMPLER_2D_RECT_SHADOW_ARB 0x8B64
292 #define GL_OBJECT_DELETE_STATUS_ARB 0x8B80
293 #define GL_OBJECT_COMPILE_STATUS_ARB 0x8B81
294 #define GL_OBJECT_LINK_STATUS_ARB 0x8B82
295 #define GL_OBJECT_VALIDATE_STATUS_ARB 0x8B83
296 #define GL_OBJECT_INFO_LOG_LENGTH_ARB 0x8B84
297 #define GL_OBJECT_ATTACHED_OBJECTS_ARB 0x8B85
298 #define GL_OBJECT_ACTIVE_UNIFORMS_ARB 0x8B86
299 #define GL_OBJECT_ACTIVE_UNIFORM_MAX_LENGTH_ARB 0x8B87
300 #define GL_OBJECT_SHADER_SOURCE_LENGTH_ARB 0x8B88
301 
302 typedef char GLcharARB; /* native character */
303 typedef unsigned int GLhandleARB; /* shader object handle */
304 
305 #ifdef __APPLE__
306 typedef void (* glDeleteObjectARBProcPtr) (GLhandleARB obj);
307 typedef GLhandleARB (* glGetHandleARBProcPtr) (GLenum pname);
308 typedef void (* glDetachObjectARBProcPtr) (GLhandleARB containerObj, GLhandleARB attachedObj);
309 typedef GLhandleARB (* glCreateShaderObjectARBProcPtr) (GLenum shaderType);
310 typedef void (* glShaderSourceARBProcPtr) (GLhandleARB shaderObj, GLsizei count, const GLcharARB **string, const GLint *length);
311 typedef void (* glCompileShaderARBProcPtr) (GLhandleARB shaderObj);
312 typedef GLhandleARB (* glCreateProgramObjectARBProcPtr) (void);
313 typedef void (* glAttachObjectARBProcPtr) (GLhandleARB containerObj, GLhandleARB obj);
314 typedef void (* glLinkProgramARBProcPtr) (GLhandleARB programObj);
315 typedef void (* glUseProgramObjectARBProcPtr) (GLhandleARB programObj);
316 typedef void (* glValidateProgramARBProcPtr) (GLhandleARB programObj);
317 typedef void (* glUniform1fARBProcPtr) (GLint location, GLfloat v0);
318 typedef void (* glUniform2fARBProcPtr) (GLint location, GLfloat v0, GLfloat v1);
319 typedef void (* glUniform3fARBProcPtr) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2);
320 typedef void (* glUniform4fARBProcPtr) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3);
321 typedef void (* glUniform1iARBProcPtr) (GLint location, GLint v0);
322 typedef void (* glUniform2iARBProcPtr) (GLint location, GLint v0, GLint v1);
323 typedef void (* glUniform3iARBProcPtr) (GLint location, GLint v0, GLint v1, GLint v2);
324 typedef void (* glUniform4iARBProcPtr) (GLint location, GLint v0, GLint v1, GLint v2, GLint v3);
325 typedef void (* glUniform1fvARBProcPtr) (GLint location, GLsizei count, const GLfloat *value);
326 typedef void (* glUniform2fvARBProcPtr) (GLint location, GLsizei count, const GLfloat *value);
327 typedef void (* glUniform3fvARBProcPtr) (GLint location, GLsizei count, const GLfloat *value);
328 typedef void (* glUniform4fvARBProcPtr) (GLint location, GLsizei count, const GLfloat *value);
329 typedef void (* glUniform1ivARBProcPtr) (GLint location, GLsizei count, const GLint *value);
330 typedef void (* glUniform2ivARBProcPtr) (GLint location, GLsizei count, const GLint *value);
331 typedef void (* glUniform3ivARBProcPtr) (GLint location, GLsizei count, const GLint *value);
332 typedef void (* glUniform4ivARBProcPtr) (GLint location, GLsizei count, const GLint *value);
333 typedef void (* glUniformMatrix2fvARBProcPtr) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
334 typedef void (* glUniformMatrix3fvARBProcPtr) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
335 typedef void (* glUniformMatrix4fvARBProcPtr) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
336 typedef void (* glGetObjectParameterfvARBProcPtr) (GLhandleARB obj, GLenum pname, GLfloat *params);
337 typedef void (* glGetObjectParameterivARBProcPtr) (GLhandleARB obj, GLenum pname, GLint *params);
338 typedef void (* glGetInfoLogARBProcPtr) (GLhandleARB obj, GLsizei maxLength, GLsizei *length, GLcharARB *infoLog);
339 typedef void (* glGetAttachedObjectsARBProcPtr) (GLhandleARB containerObj, GLsizei maxCount, GLsizei *count, GLhandleARB *obj);
340 typedef GLint (* glGetUniformLocationARBProcPtr) (GLhandleARB programObj, const GLcharARB *name);
341 typedef void (* glGetActiveUniformARBProcPtr) (GLhandleARB programObj, GLuint index, GLsizei maxLength, GLsizei *length, GLint *size, GLenum *type, GLcharARB *name);
342 typedef void (* glGetUniformfvARBProcPtr) (GLhandleARB programObj, GLint location, GLfloat *params);
343 typedef void (* glGetUniformivARBProcPtr) (GLhandleARB programObj, GLint location, GLint *params);
344 typedef void (* glGetShaderSourceARBProcPtr) (GLhandleARB obj, GLsizei maxLength, GLsizei *length, GLcharARB *source);
345 #else
346 typedef void (APIENTRYP PFNGLDELETEOBJECTARBPROC) (GLhandleARB obj);
347 typedef GLhandleARB (APIENTRYP PFNGLGETHANDLEARBPROC) (GLenum pname);
348 typedef void (APIENTRYP PFNGLDETACHOBJECTARBPROC) (GLhandleARB containerObj, GLhandleARB attachedObj);
349 typedef GLhandleARB (APIENTRYP PFNGLCREATESHADEROBJECTARBPROC) (GLenum shaderType);
350 typedef void (APIENTRYP PFNGLSHADERSOURCEARBPROC) (GLhandleARB shaderObj, GLsizei count, const GLcharARB* *string, const GLint *length);
351 typedef void (APIENTRYP PFNGLCOMPILESHADERARBPROC) (GLhandleARB shaderObj);
352 typedef GLhandleARB (APIENTRYP PFNGLCREATEPROGRAMOBJECTARBPROC) (void);
353 typedef void (APIENTRYP PFNGLATTACHOBJECTARBPROC) (GLhandleARB containerObj, GLhandleARB obj);
354 typedef void (APIENTRYP PFNGLLINKPROGRAMARBPROC) (GLhandleARB programObj);
355 typedef void (APIENTRYP PFNGLUSEPROGRAMOBJECTARBPROC) (GLhandleARB programObj);
356 typedef void (APIENTRYP PFNGLVALIDATEPROGRAMARBPROC) (GLhandleARB programObj);
357 typedef void (APIENTRYP PFNGLUNIFORM1FARBPROC) (GLint location, GLfloat v0);
358 typedef void (APIENTRYP PFNGLUNIFORM2FARBPROC) (GLint location, GLfloat v0, GLfloat v1);
359 typedef void (APIENTRYP PFNGLUNIFORM3FARBPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2);
360 typedef void (APIENTRYP PFNGLUNIFORM4FARBPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3);
361 typedef void (APIENTRYP PFNGLUNIFORM1IARBPROC) (GLint location, GLint v0);
362 typedef void (APIENTRYP PFNGLUNIFORM2IARBPROC) (GLint location, GLint v0, GLint v1);
363 typedef void (APIENTRYP PFNGLUNIFORM3IARBPROC) (GLint location, GLint v0, GLint v1, GLint v2);
364 typedef void (APIENTRYP PFNGLUNIFORM4IARBPROC) (GLint location, GLint v0, GLint v1, GLint v2, GLint v3);
365 typedef void (APIENTRYP PFNGLUNIFORM1FVARBPROC) (GLint location, GLsizei count, const GLfloat *value);
366 typedef void (APIENTRYP PFNGLUNIFORM2FVARBPROC) (GLint location, GLsizei count, const GLfloat *value);
367 typedef void (APIENTRYP PFNGLUNIFORM3FVARBPROC) (GLint location, GLsizei count, const GLfloat *value);
368 typedef void (APIENTRYP PFNGLUNIFORM4FVARBPROC) (GLint location, GLsizei count, const GLfloat *value);
369 typedef void (APIENTRYP PFNGLUNIFORM1IVARBPROC) (GLint location, GLsizei count, const GLint *value);
370 typedef void (APIENTRYP PFNGLUNIFORM2IVARBPROC) (GLint location, GLsizei count, const GLint *value);
371 typedef void (APIENTRYP PFNGLUNIFORM3IVARBPROC) (GLint location, GLsizei count, const GLint *value);
372 typedef void (APIENTRYP PFNGLUNIFORM4IVARBPROC) (GLint location, GLsizei count, const GLint *value);
373 typedef void (APIENTRYP PFNGLUNIFORMMATRIX2FVARBPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
374 typedef void (APIENTRYP PFNGLUNIFORMMATRIX3FVARBPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
375 typedef void (APIENTRYP PFNGLUNIFORMMATRIX4FVARBPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
376 typedef void (APIENTRYP PFNGLGETOBJECTPARAMETERFVARBPROC) (GLhandleARB obj, GLenum pname, GLfloat *params);
377 typedef void (APIENTRYP PFNGLGETOBJECTPARAMETERIVARBPROC) (GLhandleARB obj, GLenum pname, GLint *params);
378 typedef void (APIENTRYP PFNGLGETINFOLOGARBPROC) (GLhandleARB obj, GLsizei maxLength, GLsizei *length, GLcharARB *infoLog);
379 typedef void (APIENTRYP PFNGLGETATTACHEDOBJECTSARBPROC) (GLhandleARB containerObj, GLsizei maxCount, GLsizei *count, GLhandleARB *obj);
380 typedef GLint (APIENTRYP PFNGLGETUNIFORMLOCATIONARBPROC) (GLhandleARB programObj, const GLcharARB *name);
381 typedef void (APIENTRYP PFNGLGETACTIVEUNIFORMARBPROC) (GLhandleARB programObj, GLuint index, GLsizei maxLength, GLsizei *length, GLint *size, GLenum *type, GLcharARB *name);
382 typedef void (APIENTRYP PFNGLGETUNIFORMFVARBPROC) (GLhandleARB programObj, GLint location, GLfloat *params);
383 typedef void (APIENTRYP PFNGLGETUNIFORMIVARBPROC) (GLhandleARB programObj, GLint location, GLint *params);
384 typedef void (APIENTRYP PFNGLGETSHADERSOURCEARBPROC) (GLhandleARB obj, GLsizei maxLength, GLsizei *length, GLcharARB *source);
385 #endif // __APPLE__
386 #endif // GL_ARB_shader_objects
387 
388 #ifndef GL_ARB_vertex_shader
389 #define GL_ARB_vertex_shader 1
390 #define GL_VERTEX_SHADER_ARB 0x8B31
391 #define GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB 0x8B4A
392 #define GL_MAX_VARYING_FLOATS_ARB 0x8B4B
393 #define GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB 0x8B4C
394 #define GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB 0x8B4D
395 #define GL_OBJECT_ACTIVE_ATTRIBUTES_ARB 0x8B89
396 #define GL_OBJECT_ACTIVE_ATTRIBUTE_MAX_LENGTH_ARB 0x8B8A
397 
398 #ifdef __APPLE__
399 typedef void (* glBindAttribLocationARBProcPtr) (GLhandleARB programObj, GLuint index, const GLcharARB *name);
400 typedef void (* glGetActiveAttribARBProcPtr) (GLhandleARB programObj, GLuint index, GLsizei maxLength, GLsizei *length, GLint *size, GLenum *type, GLcharARB *name);
401 typedef GLint (* glGetAttribLocationARBProcPtr) (GLhandleARB programObj, const GLcharARB *name);
402 #else
403 typedef void (APIENTRYP PFNGLBINDATTRIBLOCATIONARBPROC) (GLhandleARB programObj, GLuint index, const GLcharARB *name);
404 typedef void (APIENTRYP PFNGLGETACTIVEATTRIBARBPROC) (GLhandleARB programObj, GLuint index, GLsizei maxLength, GLsizei *length, GLint *size, GLenum *type, GLcharARB *name);
405 typedef GLint (APIENTRYP PFNGLGETATTRIBLOCATIONARBPROC) (GLhandleARB programObj, const GLcharARB *name);
406 #endif // __APPLE__
407 #endif // GL_ARB_vertex_shader
408 
409 #ifndef GL_ARB_fragment_shader
410 #define GL_ARB_fragment_shader 1
411 #define GL_FRAGMENT_SHADER_ARB 0x8B30
412 #define GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB 0x8B49
413 #define GL_FRAGMENT_SHADER_DERIVATIVE_HINT_ARB 0x8B8B
414 #endif // GL_ARB_fragment_shader
415 
416 #ifndef GL_ARB_shading_language_100
417 #define GL_ARB_shading_language_100 1
418 #define GL_SHADING_LANGUAGE_VERSION_ARB 0x8B8C
419 #endif // GL_ARB_shading_language_100
420 
421 // as usual, OS X headers completely suck
422 #ifndef GL_SHADING_LANGUAGE_VERSION_ARB
423 #define GL_SHADING_LANGUAGE_VERSION_ARB 0x8B8C
424 #endif
425 
426 // most of following is probably useless, but some of it is required by GL_ARB_*_shader
427 #ifndef GL_ARB_vertex_program
428 #define GL_ARB_vertex_program 1
429 #define GL_COLOR_SUM_ARB 0x8458
430 #define GL_VERTEX_PROGRAM_ARB 0x8620
431 #define GL_VERTEX_ATTRIB_ARRAY_ENABLED_ARB 0x8622
432 #define GL_VERTEX_ATTRIB_ARRAY_SIZE_ARB 0x8623
433 #define GL_VERTEX_ATTRIB_ARRAY_STRIDE_ARB 0x8624
434 #define GL_VERTEX_ATTRIB_ARRAY_TYPE_ARB 0x8625
435 #define GL_CURRENT_VERTEX_ATTRIB_ARB 0x8626
436 #define GL_PROGRAM_LENGTH_ARB 0x8627
437 #define GL_PROGRAM_STRING_ARB 0x8628
438 #define GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB 0x862E
439 #define GL_MAX_PROGRAM_MATRICES_ARB 0x862F
440 #define GL_CURRENT_MATRIX_STACK_DEPTH_ARB 0x8640
441 #define GL_CURRENT_MATRIX_ARB 0x8641
442 #define GL_VERTEX_PROGRAM_POINT_SIZE_ARB 0x8642
443 #define GL_VERTEX_PROGRAM_TWO_SIDE_ARB 0x8643
444 #define GL_VERTEX_ATTRIB_ARRAY_POINTER_ARB 0x8645
445 #define GL_PROGRAM_ERROR_POSITION_ARB 0x864B
446 #define GL_PROGRAM_BINDING_ARB 0x8677
447 #define GL_MAX_VERTEX_ATTRIBS_ARB 0x8869
448 #define GL_VERTEX_ATTRIB_ARRAY_NORMALIZED_ARB 0x886A
449 #define GL_PROGRAM_ERROR_STRING_ARB 0x8874
450 #define GL_PROGRAM_FORMAT_ASCII_ARB 0x8875
451 #define GL_PROGRAM_FORMAT_ARB 0x8876
452 #define GL_PROGRAM_INSTRUCTIONS_ARB 0x88A0
453 #define GL_MAX_PROGRAM_INSTRUCTIONS_ARB 0x88A1
454 #define GL_PROGRAM_NATIVE_INSTRUCTIONS_ARB 0x88A2
455 #define GL_MAX_PROGRAM_NATIVE_INSTRUCTIONS_ARB 0x88A3
456 #define GL_PROGRAM_TEMPORARIES_ARB 0x88A4
457 #define GL_MAX_PROGRAM_TEMPORARIES_ARB 0x88A5
458 #define GL_PROGRAM_NATIVE_TEMPORARIES_ARB 0x88A6
459 #define GL_MAX_PROGRAM_NATIVE_TEMPORARIES_ARB 0x88A7
460 #define GL_PROGRAM_PARAMETERS_ARB 0x88A8
461 #define GL_MAX_PROGRAM_PARAMETERS_ARB 0x88A9
462 #define GL_PROGRAM_NATIVE_PARAMETERS_ARB 0x88AA
463 #define GL_MAX_PROGRAM_NATIVE_PARAMETERS_ARB 0x88AB
464 #define GL_PROGRAM_ATTRIBS_ARB 0x88AC
465 #define GL_MAX_PROGRAM_ATTRIBS_ARB 0x88AD
466 #define GL_PROGRAM_NATIVE_ATTRIBS_ARB 0x88AE
467 #define GL_MAX_PROGRAM_NATIVE_ATTRIBS_ARB 0x88AF
468 #define GL_PROGRAM_ADDRESS_REGISTERS_ARB 0x88B0
469 #define GL_MAX_PROGRAM_ADDRESS_REGISTERS_ARB 0x88B1
470 #define GL_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB 0x88B2
471 #define GL_MAX_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB 0x88B3
472 #define GL_MAX_PROGRAM_LOCAL_PARAMETERS_ARB 0x88B4
473 #define GL_MAX_PROGRAM_ENV_PARAMETERS_ARB 0x88B5
474 #define GL_PROGRAM_UNDER_NATIVE_LIMITS_ARB 0x88B6
475 #define GL_TRANSPOSE_CURRENT_MATRIX_ARB 0x88B7
476 #define GL_MATRIX0_ARB 0x88C0
477 #define GL_MATRIX1_ARB 0x88C1
478 #define GL_MATRIX2_ARB 0x88C2
479 #define GL_MATRIX3_ARB 0x88C3
480 #define GL_MATRIX4_ARB 0x88C4
481 #define GL_MATRIX5_ARB 0x88C5
482 #define GL_MATRIX6_ARB 0x88C6
483 #define GL_MATRIX7_ARB 0x88C7
484 #define GL_MATRIX8_ARB 0x88C8
485 #define GL_MATRIX9_ARB 0x88C9
486 #define GL_MATRIX10_ARB 0x88CA
487 #define GL_MATRIX11_ARB 0x88CB
488 #define GL_MATRIX12_ARB 0x88CC
489 #define GL_MATRIX13_ARB 0x88CD
490 #define GL_MATRIX14_ARB 0x88CE
491 #define GL_MATRIX15_ARB 0x88CF
492 #define GL_MATRIX16_ARB 0x88D0
493 #define GL_MATRIX17_ARB 0x88D1
494 #define GL_MATRIX18_ARB 0x88D2
495 #define GL_MATRIX19_ARB 0x88D3
496 #define GL_MATRIX20_ARB 0x88D4
497 #define GL_MATRIX21_ARB 0x88D5
498 #define GL_MATRIX22_ARB 0x88D6
499 #define GL_MATRIX23_ARB 0x88D7
500 #define GL_MATRIX24_ARB 0x88D8
501 #define GL_MATRIX25_ARB 0x88D9
502 #define GL_MATRIX26_ARB 0x88DA
503 #define GL_MATRIX27_ARB 0x88DB
504 #define GL_MATRIX28_ARB 0x88DC
505 #define GL_MATRIX29_ARB 0x88DD
506 #define GL_MATRIX30_ARB 0x88DE
507 #define GL_MATRIX31_ARB 0x88DF
508 
509 #ifdef __APPLE__
510 typedef void (* glVertexAttrib1dARBProcPtr) (GLuint index, GLdouble x);
511 typedef void (* glVertexAttrib1dvARBProcPtr) (GLuint index, const GLdouble *v);
512 typedef void (* glVertexAttrib1fARBProcPtr) (GLuint index, GLfloat x);
513 typedef void (* glVertexAttrib1fvARBProcPtr) (GLuint index, const GLfloat *v);
514 typedef void (* glVertexAttrib1sARBProcPtr) (GLuint index, GLshort x);
515 typedef void (* glVertexAttrib1svARBProcPtr) (GLuint index, const GLshort *v);
516 typedef void (* glVertexAttrib2dARBProcPtr) (GLuint index, GLdouble x, GLdouble y);
517 typedef void (* glVertexAttrib2dvARBProcPtr) (GLuint index, const GLdouble *v);
518 typedef void (* glVertexAttrib2fARBProcPtr) (GLuint index, GLfloat x, GLfloat y);
519 typedef void (* glVertexAttrib2fvARBProcPtr) (GLuint index, const GLfloat *v);
520 typedef void (* glVertexAttrib2sARBProcPtr) (GLuint index, GLshort x, GLshort y);
521 typedef void (* glVertexAttrib2svARBProcPtr) (GLuint index, const GLshort *v);
522 typedef void (* glVertexAttrib3dARBProcPtr) (GLuint index, GLdouble x, GLdouble y, GLdouble z);
523 typedef void (* glVertexAttrib3dvARBProcPtr) (GLuint index, const GLdouble *v);
524 typedef void (* glVertexAttrib3fARBProcPtr) (GLuint index, GLfloat x, GLfloat y, GLfloat z);
525 typedef void (* glVertexAttrib3fvARBProcPtr) (GLuint index, const GLfloat *v);
526 typedef void (* glVertexAttrib3sARBProcPtr) (GLuint index, GLshort x, GLshort y, GLshort z);
527 typedef void (* glVertexAttrib3svARBProcPtr) (GLuint index, const GLshort *v);
528 typedef void (* glVertexAttrib4NbvARBProcPtr) (GLuint index, const GLbyte *v);
529 typedef void (* glVertexAttrib4NivARBProcPtr) (GLuint index, const GLint *v);
530 typedef void (* glVertexAttrib4NsvARBProcPtr) (GLuint index, const GLshort *v);
531 typedef void (* glVertexAttrib4NubARBProcPtr) (GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w);
532 typedef void (* glVertexAttrib4NubvARBProcPtr) (GLuint index, const GLubyte *v);
533 typedef void (* glVertexAttrib4NuivARBProcPtr) (GLuint index, const GLuint *v);
534 typedef void (* glVertexAttrib4NusvARBProcPtr) (GLuint index, const GLushort *v);
535 typedef void (* glVertexAttrib4bvARBProcPtr) (GLuint index, const GLbyte *v);
536 typedef void (* glVertexAttrib4dARBProcPtr) (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
537 typedef void (* glVertexAttrib4dvARBProcPtr) (GLuint index, const GLdouble *v);
538 typedef void (* glVertexAttrib4fARBProcPtr) (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
539 typedef void (* glVertexAttrib4fvARBProcPtr) (GLuint index, const GLfloat *v);
540 typedef void (* glVertexAttrib4ivARBProcPtr) (GLuint index, const GLint *v);
541 typedef void (* glVertexAttrib4sARBProcPtr) (GLuint index, GLshort x, GLshort y, GLshort z, GLshort w);
542 typedef void (* glVertexAttrib4svARBProcPtr) (GLuint index, const GLshort *v);
543 typedef void (* glVertexAttrib4ubvARBProcPtr) (GLuint index, const GLubyte *v);
544 typedef void (* glVertexAttrib4uivARBProcPtr) (GLuint index, const GLuint *v);
545 typedef void (* glVertexAttrib4usvARBProcPtr) (GLuint index, const GLushort *v);
546 typedef void (* glVertexAttribPointerARBProcPtr) (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid *pointer);
547 typedef void (* glDisableVertexAttribArrayARBProcPtr) (GLuint index);
548 typedef void (* glEnableVertexAttribArrayARBProcPtr) (GLuint index);
549 typedef void (* glGetVertexAttribPointervARBProcPtr) (GLuint index, GLenum pname, GLvoid **pointer);
550 typedef void (* glGetVertexAttribdvARBProcPtr) (GLuint index, GLenum pname, GLdouble *params);
551 typedef void (* glGetVertexAttribfvARBProcPtr) (GLuint index, GLenum pname, GLfloat *params);
552 typedef void (* glGetVertexAttribivARBProcPtr) (GLuint index, GLenum pname, GLint *params);
553 typedef void (* glBindProgramARBProcPtr) (GLenum target, GLuint program);
554 typedef void (* glDeleteProgramsARBProcPtr) (GLsizei n, const GLuint *programs);
555 typedef void (* glGenProgramsARBProcPtr) (GLsizei n, GLuint *programs);
556 typedef GLboolean (* glIsProgramARBProcPtr) (GLuint program);
557 typedef void (* glProgramEnvParameter4dARBProcPtr) (GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
558 typedef void (* glProgramEnvParameter4dvARBProcPtr) (GLenum target, GLuint index, const GLdouble *params);
559 typedef void (* glProgramEnvParameter4fARBProcPtr) (GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
560 typedef void (* glProgramEnvParameter4fvARBProcPtr) (GLenum target, GLuint index, const GLfloat *params);
561 typedef void (* glProgramLocalParameter4dARBProcPtr) (GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
562 typedef void (* glProgramLocalParameter4dvARBProcPtr) (GLenum target, GLuint index, const GLdouble *params);
563 typedef void (* glProgramLocalParameter4fARBProcPtr) (GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
564 typedef void (* glProgramLocalParameter4fvARBProcPtr) (GLenum target, GLuint index, const GLfloat *params);
565 typedef void (* glGetProgramEnvParameterdvARBProcPtr) (GLenum target, GLuint index, GLdouble *params);
566 typedef void (* glGetProgramEnvParameterfvARBProcPtr) (GLenum target, GLuint index, GLfloat *params);
567 typedef void (* glGetProgramLocalParameterdvARBProcPtr) (GLenum target, GLuint index, GLdouble *params);
568 typedef void (* glGetProgramLocalParameterfvARBProcPtr) (GLenum target, GLuint index, GLfloat *params);
569 typedef void (* glProgramStringARBProcPtr) (GLenum target, GLenum format, GLsizei len, const GLvoid *string);
570 typedef void (* glGetProgramStringARBProcPtr) (GLenum target, GLenum pname, GLvoid *string);
571 typedef void (* glGetProgramivARBProcPtr) (GLenum target, GLenum pname, GLint *params);
572 #else
573 typedef void (APIENTRYP PFNGLVERTEXATTRIB1DARBPROC) (GLuint index, GLdouble x);
574 typedef void (APIENTRYP PFNGLVERTEXATTRIB1DVARBPROC) (GLuint index, const GLdouble *v);
575 typedef void (APIENTRYP PFNGLVERTEXATTRIB1FARBPROC) (GLuint index, GLfloat x);
576 typedef void (APIENTRYP PFNGLVERTEXATTRIB1FVARBPROC) (GLuint index, const GLfloat *v);
577 typedef void (APIENTRYP PFNGLVERTEXATTRIB1SARBPROC) (GLuint index, GLshort x);
578 typedef void (APIENTRYP PFNGLVERTEXATTRIB1SVARBPROC) (GLuint index, const GLshort *v);
579 typedef void (APIENTRYP PFNGLVERTEXATTRIB2DARBPROC) (GLuint index, GLdouble x, GLdouble y);
580 typedef void (APIENTRYP PFNGLVERTEXATTRIB2DVARBPROC) (GLuint index, const GLdouble *v);
581 typedef void (APIENTRYP PFNGLVERTEXATTRIB2FARBPROC) (GLuint index, GLfloat x, GLfloat y);
582 typedef void (APIENTRYP PFNGLVERTEXATTRIB2FVARBPROC) (GLuint index, const GLfloat *v);
583 typedef void (APIENTRYP PFNGLVERTEXATTRIB2SARBPROC) (GLuint index, GLshort x, GLshort y);
584 typedef void (APIENTRYP PFNGLVERTEXATTRIB2SVARBPROC) (GLuint index, const GLshort *v);
585 typedef void (APIENTRYP PFNGLVERTEXATTRIB3DARBPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z);
586 typedef void (APIENTRYP PFNGLVERTEXATTRIB3DVARBPROC) (GLuint index, const GLdouble *v);
587 typedef void (APIENTRYP PFNGLVERTEXATTRIB3FARBPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z);
588 typedef void (APIENTRYP PFNGLVERTEXATTRIB3FVARBPROC) (GLuint index, const GLfloat *v);
589 typedef void (APIENTRYP PFNGLVERTEXATTRIB3SARBPROC) (GLuint index, GLshort x, GLshort y, GLshort z);
590 typedef void (APIENTRYP PFNGLVERTEXATTRIB3SVARBPROC) (GLuint index, const GLshort *v);
591 typedef void (APIENTRYP PFNGLVERTEXATTRIB4NBVARBPROC) (GLuint index, const GLbyte *v);
592 typedef void (APIENTRYP PFNGLVERTEXATTRIB4NIVARBPROC) (GLuint index, const GLint *v);
593 typedef void (APIENTRYP PFNGLVERTEXATTRIB4NSVARBPROC) (GLuint index, const GLshort *v);
594 typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUBARBPROC) (GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w);
595 typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUBVARBPROC) (GLuint index, const GLubyte *v);
596 typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUIVARBPROC) (GLuint index, const GLuint *v);
597 typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUSVARBPROC) (GLuint index, const GLushort *v);
598 typedef void (APIENTRYP PFNGLVERTEXATTRIB4BVARBPROC) (GLuint index, const GLbyte *v);
599 typedef void (APIENTRYP PFNGLVERTEXATTRIB4DARBPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
600 typedef void (APIENTRYP PFNGLVERTEXATTRIB4DVARBPROC) (GLuint index, const GLdouble *v);
601 typedef void (APIENTRYP PFNGLVERTEXATTRIB4FARBPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
602 typedef void (APIENTRYP PFNGLVERTEXATTRIB4FVARBPROC) (GLuint index, const GLfloat *v);
603 typedef void (APIENTRYP PFNGLVERTEXATTRIB4IVARBPROC) (GLuint index, const GLint *v);
604 typedef void (APIENTRYP PFNGLVERTEXATTRIB4SARBPROC) (GLuint index, GLshort x, GLshort y, GLshort z, GLshort w);
605 typedef void (APIENTRYP PFNGLVERTEXATTRIB4SVARBPROC) (GLuint index, const GLshort *v);
606 typedef void (APIENTRYP PFNGLVERTEXATTRIB4UBVARBPROC) (GLuint index, const GLubyte *v);
607 typedef void (APIENTRYP PFNGLVERTEXATTRIB4UIVARBPROC) (GLuint index, const GLuint *v);
608 typedef void (APIENTRYP PFNGLVERTEXATTRIB4USVARBPROC) (GLuint index, const GLushort *v);
609 typedef void (APIENTRYP PFNGLVERTEXATTRIBPOINTERARBPROC) (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid *pointer);
610 typedef void (APIENTRYP PFNGLENABLEVERTEXATTRIBARRAYARBPROC) (GLuint index);
611 typedef void (APIENTRYP PFNGLDISABLEVERTEXATTRIBARRAYARBPROC) (GLuint index);
612 typedef void (APIENTRYP PFNGLPROGRAMSTRINGARBPROC) (GLenum target, GLenum format, GLsizei len, const GLvoid *string);
613 typedef void (APIENTRYP PFNGLBINDPROGRAMARBPROC) (GLenum target, GLuint program);
614 typedef void (APIENTRYP PFNGLDELETEPROGRAMSARBPROC) (GLsizei n, const GLuint *programs);
615 typedef void (APIENTRYP PFNGLGENPROGRAMSARBPROC) (GLsizei n, GLuint *programs);
616 typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETER4DARBPROC) (GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
617 typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETER4DVARBPROC) (GLenum target, GLuint index, const GLdouble *params);
618 typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETER4FARBPROC) (GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
619 typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETER4FVARBPROC) (GLenum target, GLuint index, const GLfloat *params);
620 typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETER4DARBPROC) (GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
621 typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETER4DVARBPROC) (GLenum target, GLuint index, const GLdouble *params);
622 typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETER4FARBPROC) (GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
623 typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETER4FVARBPROC) (GLenum target, GLuint index, const GLfloat *params);
624 typedef void (APIENTRYP PFNGLGETPROGRAMENVPARAMETERDVARBPROC) (GLenum target, GLuint index, GLdouble *params);
625 typedef void (APIENTRYP PFNGLGETPROGRAMENVPARAMETERFVARBPROC) (GLenum target, GLuint index, GLfloat *params);
626 typedef void (APIENTRYP PFNGLGETPROGRAMLOCALPARAMETERDVARBPROC) (GLenum target, GLuint index, GLdouble *params);
627 typedef void (APIENTRYP PFNGLGETPROGRAMLOCALPARAMETERFVARBPROC) (GLenum target, GLuint index, GLfloat *params);
628 typedef void (APIENTRYP PFNGLGETPROGRAMIVARBPROC) (GLenum target, GLenum pname, GLint *params);
629 typedef void (APIENTRYP PFNGLGETPROGRAMSTRINGARBPROC) (GLenum target, GLenum pname, GLvoid *string);
630 typedef void (APIENTRYP PFNGLGETVERTEXATTRIBDVARBPROC) (GLuint index, GLenum pname, GLdouble *params);
631 typedef void (APIENTRYP PFNGLGETVERTEXATTRIBFVARBPROC) (GLuint index, GLenum pname, GLfloat *params);
632 typedef void (APIENTRYP PFNGLGETVERTEXATTRIBIVARBPROC) (GLuint index, GLenum pname, GLint *params);
633 typedef void (APIENTRYP PFNGLGETVERTEXATTRIBPOINTERVARBPROC) (GLuint index, GLenum pname, GLvoid* *pointer);
634 typedef GLboolean (APIENTRYP PFNGLISPROGRAMARBPROC) (GLuint program);
635 #endif // __APPLE__
636 #endif // GL_ARB_vertex_program
637 
638 #ifndef GL_ARB_draw_elements_base_vertex
639 #define GL_ARB_draw_elements_base_vertex 1
640 #ifdef __APPLE__
641 typedef void (* glDrawElementsBaseVertexProcPtr) (GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLint basevertex);
642 typedef void (* glDrawRangeElementsBaseVertexProcPtr) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices, GLint basevertex);
643 typedef void (* glDrawElementsInstancedBaseVertexProcPtr) (GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei primcount, GLint basevertex);
644 typedef void (* glMultiDrawElementsBaseVertexProcPtr) (GLenum mode, const GLsizei *count, GLenum type, const GLvoid* *indices, GLsizei primcount, const GLint *basevertex);
645 #else
646 typedef void (APIENTRYP PFNGLDRAWELEMENTSBASEVERTEXPROC) (GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLint basevertex);
647 typedef void (APIENTRYP PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices, GLint basevertex);
648 typedef void (APIENTRYP PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC) (GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei primcount, GLint basevertex);
649 typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTSBASEVERTEXPROC) (GLenum mode, const GLsizei *count, GLenum type, const GLvoid* *indices, GLsizei primcount, const GLint *basevertex);
650 #endif // __APPLE__
651 #endif // GL_ARB_draw_elements_base_vertex
652 
653 const ubyte GL_zero_3ub[3] = { 0, 0, 0 };
654 
655 bool gr_opengl_init();
656 void gr_opengl_cleanup(int minimize=1);
657 int opengl_check_for_errors(char *err_at = NULL);
659 
660 #ifndef NDEBUG
661 #define GL_CHECK_FOR_ERRORS(s) opengl_check_for_errors((s))
662 #else
663 #define GL_CHECK_FOR_ERRORS(s)
664 #endif
665 
666 extern int GL_version;
667 extern int GLSL_version;
668 
669 extern int Use_VBOs;
670 extern int Use_PBOs;
671 
672 #endif
GLint GLenum GLboolean GLsizei stride
Definition: gropengl.h:609
unsigned int GLuint
Definition: Gl.h:52
unsigned int GLhandleARB
Definition: Glext.h:5080
int GLsizei
Definition: Gl.h:49
GLsizei GLenum const GLvoid * indices
Definition: gropengl.h:646
GLsizeiptrARB const GLvoid GLenum usage
Definition: gropengl.h:150
GLenum GLint * params
Definition: gropengl.h:155
ptrdiff_t GLintptrARB
Definition: Glext.h:5073
const GLuint * renderbuffers
Definition: gropengl.h:247
GLuint program
Definition: gropengl.h:613
typedef GLboolean(APIENTRYP PFNGLISBUFFERARBPROC)(GLuint buffer)
GLenum format
Definition: gropengl.h:612
GLsizei count
Definition: gropengl.h:166
GLenum GLenum GLuint GLint GLint zoffset
Definition: gropengl.h:258
int opengl_check_for_errors(char *err_at=NULL)
Definition: gropengl.cpp:1252
GLint GLenum GLboolean normalized
Definition: gropengl.h:609
double GLdouble
Definition: Gl.h:55
GLenum GLenum GLuint texture
Definition: gropengl.h:256
GLuint start
Definition: gropengl.h:647
GLsizei maxLength
Definition: gropengl.h:378
GLsizei GLenum const GLvoid GLint basevertex
Definition: gropengl.h:646
GLubyte GLubyte GLubyte GLubyte w
Definition: gropengl.h:594
const ubyte GL_zero_3ub[3]
Definition: gropengl.h:653
GLenum mode
Definition: Glext.h:5794
GLuint framebuffer
Definition: gropengl.h:252
GLfloat GLfloat GLfloat GLfloat v3
Definition: gropengl.h:360
GLsizeiptrARB size
Definition: gropengl.h:150
GLint GLenum GLboolean GLsizei const GLvoid * pointer
Definition: gropengl.h:609
GLsizei GLsizei GLcharARB * infoLog
Definition: gropengl.h:378
GLdouble x
Definition: gropengl.h:573
const GLuint * buffers
Definition: gropengl.h:147
GLintptrARB offset
Definition: gropengl.h:151
const GLdouble * v
Definition: gropengl.h:574
GLdouble GLdouble y
Definition: gropengl.h:579
GLfloat GLfloat GLfloat v2
Definition: gropengl.h:359
const GLuint * programs
Definition: gropengl.h:614
unsigned char GLubyte
Definition: Gl.h:50
typedef GLint(APIENTRYP PFNGLGETUNIFORMLOCATIONARBPROC)(GLhandleARB programObj
GLsizei const GLcharARB ** string
Definition: gropengl.h:350
GLfloat GLfloat v1
Definition: gropengl.h:358
int GL_version
Definition: gropengl.cpp:57
GLsizei const GLcharARB const GLint * length
Definition: gropengl.h:350
GLsizei const GLfloat * value
Definition: gropengl.h:365
char GLcharARB
Definition: gropengl.h:302
GLenum GLsizei width
Definition: gropengl.h:249
GLclampd n
Definition: Glext.h:7286
GLenum pname
Definition: gropengl.h:155
unsigned char ubyte
Definition: pstypes.h:62
GLhandleARB attachedObj
Definition: gropengl.h:348
unsigned int GLhandleARB
Definition: gropengl.h:303
int Use_PBOs
Definition: gropengl.cpp:77
unsigned char GLboolean
Definition: Gl.h:44
void gr_opengl_cleanup(int minimize=1)
Definition: gropengl.cpp:587
GLfloat v0
Definition: gropengl.h:357
GLsizei GLboolean transpose
Definition: gropengl.h:373
GLenum GLsizei len
Definition: gropengl.h:612
GLenum GLenum renderbuffertarget
Definition: gropengl.h:259
GLuint GLuint end
Definition: gropengl.h:647
typedef void(APIENTRYP PFNGLBINDBUFFERARBPROC)(GLenum target
bool gr_opengl_init()
Definition: gropengl.cpp:1832
GLenum target
Definition: Glext.h:6872
#define APIENTRYP
Definition: gropengl.h:50
GLhandleARB obj
Definition: gropengl.h:353
char GLcharARB
Definition: Glext.h:5079
GLint first
Definition: Gl.h:1491
unsigned short GLushort
Definition: Gl.h:51
signed char GLbyte
Definition: Gl.h:46
GLsizei GLsizei GLcharARB * source
Definition: gropengl.h:384
GLuint GLsizei GLsizei GLint GLenum * type
Definition: gropengl.h:381
const GLcharARB * name
Definition: gropengl.h:380
GLint location
Definition: gropengl.h:382
ptrdiff_t GLsizeiptrARB
Definition: Glext.h:5074
GLsizei maxCount
Definition: gropengl.h:379
GLvoid *APIENTRYP PFNGLMAPBUFFERARBPROC(GLenum target, GLenum access)
Definition: gropengl.h:153
GLenum access
Definition: Glext.h:10767
GLenum internalformat
Definition: gropengl.h:249
unsigned int GLenum
Definition: Gl.h:43
GLenum GLsizei GLsizei height
Definition: gropengl.h:249
int Use_VBOs
Definition: gropengl.cpp:76
GLenum GLenum textarget
Definition: gropengl.h:256
const GLuint * framebuffers
Definition: gropengl.h:253
bool is_minimum_GLSL_version()
Definition: gropengl.cpp:2064
GLenum attachment
Definition: gropengl.h:256
short GLshort
Definition: Gl.h:47
int GLSL_version
Definition: gropengl.cpp:58
typedef GLenum(APIENTRYP PFNGLCHECKFRAMEBUFFERSTATUSEXTPROC)(GLenum target)
GLsizeiptrARB const GLvoid * data
Definition: gropengl.h:150
GLuint renderbuffer
Definition: gropengl.h:246
void GLvoid
Definition: Gl.h:57
GLdouble GLdouble GLdouble z
Definition: gropengl.h:585
GLenum GLenum GLuint GLint level
Definition: gropengl.h:256
int GLint
Definition: Gl.h:48
GLuint index
Definition: gropengl.h:381
float GLfloat
Definition: Gl.h:53
GLuint buffer
Definition: gropengl.h:146
GLsizei GLenum const GLvoid GLsizei primcount
Definition: gropengl.h:648