1 #ifndef APIENTRY
2 #define APIENTRY
3 #endif
4 #ifndef APIENTRYP
5 #define APIENTRYP APIENTRY *
6 #endif
7 
8 // OpenGL deprecated functionality
9 #ifndef GL_QUADS
10 #define GL_QUADS                      0x0007
11 #endif
12 
13 #ifndef GL_ALPHA
14 #define GL_ALPHA                      0x1906
15 #endif
16 #ifndef GL_ALPHA8
17 #define GL_ALPHA8                     0x803C
18 #endif
19 #ifndef GL_ALPHA16
20 #define GL_ALPHA16                    0x803E
21 #endif
22 #ifndef GL_COMPRESSED_ALPHA
23 #define GL_COMPRESSED_ALPHA           0x84E9
24 #endif
25 
26 #ifndef GL_LUMINANCE
27 #define GL_LUMINANCE                  0x1909
28 #endif
29 #ifndef GL_LUMINANCE8
30 #define GL_LUMINANCE8                 0x8040
31 #endif
32 #ifndef GL_LUMINANCE16
33 #define GL_LUMINANCE16                0x8042
34 #endif
35 #ifndef GL_COMPRESSED_LUMINANCE
36 #define GL_COMPRESSED_LUMINANCE       0x84EA
37 #endif
38 
39 #ifndef GL_LUMINANCE_ALPHA
40 #define GL_LUMINANCE_ALPHA            0x190A
41 #endif
42 #ifndef GL_LUMINANCE8_ALPHA8
43 #define GL_LUMINANCE8_ALPHA8          0x8045
44 #endif
45 #ifndef GL_LUMINANCE16_ALPHA16
46 #define GL_LUMINANCE16_ALPHA16        0x8048
47 #endif
48 #ifndef GL_COMPRESSED_LUMINANCE_ALPHA
49 #define GL_COMPRESSED_LUMINANCE_ALPHA 0x84EB
50 #endif
51 
52 // OpenGL 1.3
53 #ifndef WIN32
54 #define glActiveTexture_ glActiveTexture
55 
56 #define glBlendEquation_ glBlendEquation
57 #define glBlendColor_ glBlendColor
58 
59 #define glTexImage3D_ glTexImage3D
60 #define glTexSubImage3D_ glTexSubImage3D
61 #define glCopyTexSubImage3D_ glCopyTexSubImage3D
62 
63 #define glCompressedTexImage3D_ glCompressedTexImage3D
64 #define glCompressedTexImage2D_ glCompressedTexImage2D
65 #define glCompressedTexSubImage3D_ glCompressedTexSubImage3D
66 #define glCompressedTexSubImage2D_ glCompressedTexSubImage2D
67 #define glGetCompressedTexImage_ glGetCompressedTexImage
68 
69 #define glDrawRangeElements_ glDrawRangeElements
70 #else
71 extern PFNGLACTIVETEXTUREPROC       glActiveTexture_;
72 
73 extern PFNGLBLENDEQUATIONPROC glBlendEquation_;
74 extern PFNGLBLENDCOLORPROC    glBlendColor_;
75 
76 extern PFNGLTEXIMAGE3DPROC        glTexImage3D_;
77 extern PFNGLTEXSUBIMAGE3DPROC     glTexSubImage3D_;
78 extern PFNGLCOPYTEXSUBIMAGE3DPROC glCopyTexSubImage3D_;
79 
80 extern PFNGLCOMPRESSEDTEXIMAGE3DPROC    glCompressedTexImage3D_;
81 extern PFNGLCOMPRESSEDTEXIMAGE2DPROC    glCompressedTexImage2D_;
82 extern PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC glCompressedTexSubImage3D_;
83 extern PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC glCompressedTexSubImage2D_;
84 extern PFNGLGETCOMPRESSEDTEXIMAGEPROC   glGetCompressedTexImage_;
85 
86 extern PFNGLDRAWRANGEELEMENTSPROC glDrawRangeElements_;
87 #endif
88 
89 // OpenGL 2.0
90 #ifdef __APPLE__
91 #define glMultiDrawArrays_ glMultiDrawArrays
92 #define glMultiDrawElements_ glMultiDrawElements
93 
94 #define glBlendFuncSeparate_ glBlendFuncSeparate
95 #define glBlendEquationSeparate_ glBlendEquationSeparate
96 #define glStencilOpSeparate_ glStencilOpSeparate
97 #define glStencilFuncSeparate_ glStencilFuncSeparate
98 #define glStencilMaskSeparate_ glStencilMaskSeparate
99 
100 #define glGenBuffers_ glGenBuffers
101 #define glBindBuffer_ glBindBuffer
102 #define glMapBuffer_ glMapBuffer
103 #define glUnmapBuffer_ glUnmapBuffer
104 #define glBufferData_ glBufferData
105 #define glBufferSubData_ glBufferSubData
106 #define glDeleteBuffers_ glDeleteBuffers
107 #define glGetBufferSubData_ glGetBufferSubData
108 
109 #define glGenQueries_ glGenQueries
110 #define glDeleteQueries_ glDeleteQueries
111 #define glBeginQuery_ glBeginQuery
112 #define glEndQuery_ glEndQuery
113 #define glGetQueryiv_ glGetQueryiv
114 #define glGetQueryObjectiv_ glGetQueryObjectiv
115 #define glGetQueryObjectuiv_ glGetQueryObjectuiv
116 
117 #define glCreateProgram_ glCreateProgram
118 #define glDeleteProgram_ glDeleteProgram
119 #define glUseProgram_ glUseProgram
120 #define glCreateShader_ glCreateShader
121 #define glDeleteShader_ glDeleteShader
122 #define glShaderSource_ glShaderSource
123 #define glCompileShader_ glCompileShader
124 #define glGetShaderiv_ glGetShaderiv
125 #define glGetProgramiv_ glGetProgramiv
126 #define glAttachShader_ glAttachShader
127 #define glGetProgramInfoLog_ glGetProgramInfoLog
128 #define glGetShaderInfoLog_ glGetShaderInfoLog
129 #define glLinkProgram_ glLinkProgram
130 #define glGetUniformLocation_ glGetUniformLocation
131 #define glUniform1f_ glUniform1f
132 #define glUniform2f_ glUniform2f
133 #define glUniform3f_ glUniform3f
134 #define glUniform4f_ glUniform4f
135 #define glUniform1fv_ glUniform1fv
136 #define glUniform2fv_ glUniform2fv
137 #define glUniform3fv_ glUniform3fv
138 #define glUniform4fv_ glUniform4fv
139 #define glUniform1i_ glUniform1i
140 #define glUniform2i_ glUniform2i
141 #define glUniform3i_ glUniform3i
142 #define glUniform4i_ glUniform4i
143 #define glUniform1iv_ glUniform1iv
144 #define glUniform2iv_ glUniform2iv
145 #define glUniform3iv_ glUniform3iv
146 #define glUniform4iv_ glUniform4iv
147 #define glUniformMatrix2fv_ glUniformMatrix2fv
148 #define glUniformMatrix3fv_ glUniformMatrix3fv
149 #define glUniformMatrix4fv_ glUniformMatrix4fv
150 #define glBindAttribLocation_ glBindAttribLocation
151 #define glGetActiveUniform_ glGetActiveUniform
152 #define glEnableVertexAttribArray_ glEnableVertexAttribArray
153 #define glDisableVertexAttribArray_ glDisableVertexAttribArray
154 
155 #define glVertexAttrib1f_ glVertexAttrib1f
156 #define glVertexAttrib1fv_ glVertexAttrib1fv
157 #define glVertexAttrib1s_ glVertexAttrib1s
158 #define glVertexAttrib1sv_ glVertexAttrib1sv
159 #define glVertexAttrib2f_ glVertexAttrib2f
160 #define glVertexAttrib2fv_ glVertexAttrib2fv
161 #define glVertexAttrib2s_ glVertexAttrib2s
162 #define glVertexAttrib2sv_ glVertexAttrib2sv
163 #define glVertexAttrib3f_ glVertexAttrib3f
164 #define glVertexAttrib3fv_ glVertexAttrib3fv
165 #define glVertexAttrib3s_ glVertexAttrib3s
166 #define glVertexAttrib3sv_ glVertexAttrib3sv
167 #define glVertexAttrib4f_ glVertexAttrib4f
168 #define glVertexAttrib4fv_ glVertexAttrib4fv
169 #define glVertexAttrib4s_ glVertexAttrib4s
170 #define glVertexAttrib4sv_ glVertexAttrib4sv
171 #define glVertexAttrib4bv_ glVertexAttrib4bv
172 #define glVertexAttrib4iv_ glVertexAttrib4iv
173 #define glVertexAttrib4ubv_ glVertexAttrib4ubv
174 #define glVertexAttrib4uiv_ glVertexAttrib4uiv
175 #define glVertexAttrib4usv_ glVertexAttrib4usv
176 #define glVertexAttrib4Nbv_ glVertexAttrib4Nbv
177 #define glVertexAttrib4Niv_ glVertexAttrib4Niv
178 #define glVertexAttrib4Nub_ glVertexAttrib4Nub
179 #define glVertexAttrib4Nubv_ glVertexAttrib4Nubv
180 #define glVertexAttrib4Nuiv_ glVertexAttrib4Nuiv
181 #define glVertexAttrib4Nusv_ glVertexAttrib4Nusv
182 #define glVertexAttribPointer_ glVertexAttribPointer
183 
184 #define glDrawBuffers_ glDrawBuffers
185 #else
186 extern PFNGLMULTIDRAWARRAYSPROC   glMultiDrawArrays_;
187 extern PFNGLMULTIDRAWELEMENTSPROC glMultiDrawElements_;
188 
189 extern PFNGLBLENDFUNCSEPARATEPROC glBlendFuncSeparate_;
190 extern PFNGLBLENDEQUATIONSEPARATEPROC glBlendEquationSeparate_;
191 extern PFNGLSTENCILOPSEPARATEPROC glStencilOpSeparate_;
192 extern PFNGLSTENCILFUNCSEPARATEPROC glStencilFuncSeparate_;
193 extern PFNGLSTENCILMASKSEPARATEPROC glStencilMaskSeparate_;
194 
195 extern PFNGLGENBUFFERSPROC       glGenBuffers_;
196 extern PFNGLBINDBUFFERPROC       glBindBuffer_;
197 extern PFNGLMAPBUFFERPROC        glMapBuffer_;
198 extern PFNGLUNMAPBUFFERPROC      glUnmapBuffer_;
199 extern PFNGLBUFFERDATAPROC       glBufferData_;
200 extern PFNGLBUFFERSUBDATAPROC    glBufferSubData_;
201 extern PFNGLDELETEBUFFERSPROC    glDeleteBuffers_;
202 extern PFNGLGETBUFFERSUBDATAPROC glGetBufferSubData_;
203 
204 extern PFNGLGENQUERIESPROC        glGenQueries_;
205 extern PFNGLDELETEQUERIESPROC     glDeleteQueries_;
206 extern PFNGLBEGINQUERYPROC        glBeginQuery_;
207 extern PFNGLENDQUERYPROC          glEndQuery_;
208 extern PFNGLGETQUERYIVPROC        glGetQueryiv_;
209 extern PFNGLGETQUERYOBJECTIVPROC  glGetQueryObjectiv_;
210 extern PFNGLGETQUERYOBJECTUIVPROC glGetQueryObjectuiv_;
211 
212 extern PFNGLCREATEPROGRAMPROC            glCreateProgram_;
213 extern PFNGLDELETEPROGRAMPROC            glDeleteProgram_;
214 extern PFNGLUSEPROGRAMPROC               glUseProgram_;
215 extern PFNGLCREATESHADERPROC             glCreateShader_;
216 extern PFNGLDELETESHADERPROC             glDeleteShader_;
217 extern PFNGLSHADERSOURCEPROC             glShaderSource_;
218 extern PFNGLCOMPILESHADERPROC            glCompileShader_;
219 extern PFNGLGETSHADERIVPROC              glGetShaderiv_;
220 extern PFNGLGETPROGRAMIVPROC             glGetProgramiv_;
221 extern PFNGLATTACHSHADERPROC             glAttachShader_;
222 extern PFNGLGETPROGRAMINFOLOGPROC        glGetProgramInfoLog_;
223 extern PFNGLGETSHADERINFOLOGPROC         glGetShaderInfoLog_;
224 extern PFNGLLINKPROGRAMPROC              glLinkProgram_;
225 extern PFNGLGETUNIFORMLOCATIONPROC       glGetUniformLocation_;
226 extern PFNGLUNIFORM1FPROC                glUniform1f_;
227 extern PFNGLUNIFORM2FPROC                glUniform2f_;
228 extern PFNGLUNIFORM3FPROC                glUniform3f_;
229 extern PFNGLUNIFORM4FPROC                glUniform4f_;
230 extern PFNGLUNIFORM1FVPROC               glUniform1fv_;
231 extern PFNGLUNIFORM2FVPROC               glUniform2fv_;
232 extern PFNGLUNIFORM3FVPROC               glUniform3fv_;
233 extern PFNGLUNIFORM4FVPROC               glUniform4fv_;
234 extern PFNGLUNIFORM1IPROC                glUniform1i_;
235 extern PFNGLUNIFORM2IPROC                glUniform2i_;
236 extern PFNGLUNIFORM3IPROC                glUniform3i_;
237 extern PFNGLUNIFORM4IPROC                glUniform4i_;
238 extern PFNGLUNIFORM1IVPROC               glUniform1iv_;
239 extern PFNGLUNIFORM2IVPROC               glUniform2iv_;
240 extern PFNGLUNIFORM3IVPROC               glUniform3iv_;
241 extern PFNGLUNIFORM4IVPROC               glUniform4iv_;
242 extern PFNGLUNIFORMMATRIX2FVPROC         glUniformMatrix2fv_;
243 extern PFNGLUNIFORMMATRIX3FVPROC         glUniformMatrix3fv_;
244 extern PFNGLUNIFORMMATRIX4FVPROC         glUniformMatrix4fv_;
245 extern PFNGLBINDATTRIBLOCATIONPROC       glBindAttribLocation_;
246 extern PFNGLGETACTIVEUNIFORMPROC         glGetActiveUniform_;
247 extern PFNGLENABLEVERTEXATTRIBARRAYPROC  glEnableVertexAttribArray_;
248 extern PFNGLDISABLEVERTEXATTRIBARRAYPROC glDisableVertexAttribArray_;
249 
250 extern PFNGLVERTEXATTRIB1FPROC           glVertexAttrib1f_;
251 extern PFNGLVERTEXATTRIB1FVPROC          glVertexAttrib1fv_;
252 extern PFNGLVERTEXATTRIB1SPROC           glVertexAttrib1s_;
253 extern PFNGLVERTEXATTRIB1SVPROC          glVertexAttrib1sv_;
254 extern PFNGLVERTEXATTRIB2FPROC           glVertexAttrib2f_;
255 extern PFNGLVERTEXATTRIB2FVPROC          glVertexAttrib2fv_;
256 extern PFNGLVERTEXATTRIB2SPROC           glVertexAttrib2s_;
257 extern PFNGLVERTEXATTRIB2SVPROC          glVertexAttrib2sv_;
258 extern PFNGLVERTEXATTRIB3FPROC           glVertexAttrib3f_;
259 extern PFNGLVERTEXATTRIB3FVPROC          glVertexAttrib3fv_;
260 extern PFNGLVERTEXATTRIB3SPROC           glVertexAttrib3s_;
261 extern PFNGLVERTEXATTRIB3SVPROC          glVertexAttrib3sv_;
262 extern PFNGLVERTEXATTRIB4FPROC           glVertexAttrib4f_;
263 extern PFNGLVERTEXATTRIB4FVPROC          glVertexAttrib4fv_;
264 extern PFNGLVERTEXATTRIB4SPROC           glVertexAttrib4s_;
265 extern PFNGLVERTEXATTRIB4SVPROC          glVertexAttrib4sv_;
266 extern PFNGLVERTEXATTRIB4BVPROC          glVertexAttrib4bv_;
267 extern PFNGLVERTEXATTRIB4IVPROC          glVertexAttrib4iv_;
268 extern PFNGLVERTEXATTRIB4UBVPROC         glVertexAttrib4ubv_;
269 extern PFNGLVERTEXATTRIB4UIVPROC         glVertexAttrib4uiv_;
270 extern PFNGLVERTEXATTRIB4USVPROC         glVertexAttrib4usv_;
271 extern PFNGLVERTEXATTRIB4NBVPROC         glVertexAttrib4Nbv_;
272 extern PFNGLVERTEXATTRIB4NIVPROC         glVertexAttrib4Niv_;
273 extern PFNGLVERTEXATTRIB4NUBPROC         glVertexAttrib4Nub_;
274 extern PFNGLVERTEXATTRIB4NUBVPROC        glVertexAttrib4Nubv_;
275 extern PFNGLVERTEXATTRIB4NUIVPROC        glVertexAttrib4Nuiv_;
276 extern PFNGLVERTEXATTRIB4NUSVPROC        glVertexAttrib4Nusv_;
277 extern PFNGLVERTEXATTRIBPOINTERPROC      glVertexAttribPointer_;
278 
279 extern PFNGLDRAWBUFFERSPROC glDrawBuffers_;
280 #endif
281 
282 #ifndef GL_VERSION_2_1
283 #define GL_VERSION_2_1 1
284 #define GL_PIXEL_PACK_BUFFER              0x88EB
285 #define GL_PIXEL_UNPACK_BUFFER            0x88EC
286 #endif
287 
288 #ifndef GL_EXT_texture_filter_anisotropic
289 #define GL_EXT_texture_filter_anisotropic 1
290 #define GL_TEXTURE_MAX_ANISOTROPY_EXT     0x84FE
291 #define GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT 0x84FF
292 #endif
293 
294 #ifndef GL_EXT_texture_compression_s3tc
295 #define GL_EXT_texture_compression_s3tc 1
296 #define GL_COMPRESSED_RGB_S3TC_DXT1_EXT   0x83F0
297 #define GL_COMPRESSED_RGBA_S3TC_DXT1_EXT  0x83F1
298 #define GL_COMPRESSED_RGBA_S3TC_DXT3_EXT  0x83F2
299 #define GL_COMPRESSED_RGBA_S3TC_DXT5_EXT  0x83F3
300 #endif
301 
302 #ifndef GL_ARB_framebuffer_object
303 #define GL_ARB_framebuffer_object 1
304 #define GL_DEPTH_STENCIL_ATTACHMENT       0x821A
305 #define GL_DEPTH_STENCIL                  0x84F9
306 #define GL_UNSIGNED_INT_24_8              0x84FA
307 #define GL_DEPTH24_STENCIL8               0x88F0
308 #define GL_FRAMEBUFFER_BINDING            0x8CA6
309 #define GL_READ_FRAMEBUFFER               0x8CA8
310 #define GL_DRAW_FRAMEBUFFER               0x8CA9
311 #define GL_FRAMEBUFFER_COMPLETE           0x8CD5
312 #define GL_COLOR_ATTACHMENT0              0x8CE0
313 #define GL_COLOR_ATTACHMENT1              0x8CE1
314 #define GL_DEPTH_ATTACHMENT               0x8D00
315 #define GL_STENCIL_ATTACHMENT             0x8D20
316 #define GL_FRAMEBUFFER                    0x8D40
317 #define GL_RENDERBUFFER                   0x8D41
318 typedef void (APIENTRYP PFNGLBINDRENDERBUFFERPROC) (GLenum target, GLuint renderbuffer);
319 typedef void (APIENTRYP PFNGLDELETERENDERBUFFERSPROC) (GLsizei n, const GLuint *renderbuffers);
320 typedef void (APIENTRYP PFNGLGENRENDERBUFFERSPROC) (GLsizei n, GLuint *renderbuffers);
321 typedef void (APIENTRYP PFNGLRENDERBUFFERSTORAGEPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height);
322 typedef void (APIENTRYP PFNGLBINDFRAMEBUFFERPROC) (GLenum target, GLuint framebuffer);
323 typedef void (APIENTRYP PFNGLDELETEFRAMEBUFFERSPROC) (GLsizei n, const GLuint *framebuffers);
324 typedef void (APIENTRYP PFNGLGENFRAMEBUFFERSPROC) (GLsizei n, GLuint *framebuffers);
325 typedef GLenum (APIENTRYP PFNGLCHECKFRAMEBUFFERSTATUSPROC) (GLenum target);
326 typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURE2DPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
327 typedef void (APIENTRYP PFNGLFRAMEBUFFERRENDERBUFFERPROC) (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);
328 typedef void (APIENTRYP PFNGLGENERATEMIPMAPPROC) (GLenum target);
329 typedef void (APIENTRYP PFNGLBLITFRAMEBUFFERPROC) (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);
330 #endif
331 
332 // GL_EXT_framebuffer_object
333 extern PFNGLBINDRENDERBUFFERPROC        glBindRenderbuffer_;
334 extern PFNGLDELETERENDERBUFFERSPROC     glDeleteRenderbuffers_;
335 extern PFNGLGENFRAMEBUFFERSPROC         glGenRenderbuffers_;
336 extern PFNGLRENDERBUFFERSTORAGEPROC     glRenderbufferStorage_;
337 extern PFNGLCHECKFRAMEBUFFERSTATUSPROC  glCheckFramebufferStatus_;
338 extern PFNGLBINDFRAMEBUFFERPROC         glBindFramebuffer_;
339 extern PFNGLDELETEFRAMEBUFFERSPROC      glDeleteFramebuffers_;
340 extern PFNGLGENFRAMEBUFFERSPROC         glGenFramebuffers_;
341 extern PFNGLFRAMEBUFFERTEXTURE2DPROC    glFramebufferTexture2D_;
342 extern PFNGLFRAMEBUFFERRENDERBUFFERPROC glFramebufferRenderbuffer_;
343 extern PFNGLGENERATEMIPMAPPROC          glGenerateMipmap_;
344 
345 // GL_EXT_framebuffer_blit
346 extern PFNGLBLITFRAMEBUFFERPROC         glBlitFramebuffer_;
347 
348 #ifndef GL_ARB_texture_rg
349 #define GL_ARB_texture_rg 1
350 #define GL_RG                             0x8227
351 #define GL_R8                             0x8229
352 #define GL_R16                            0x822A
353 #define GL_RG8                            0x822B
354 #define GL_RG16                           0x822C
355 #define GL_R16F                           0x822D
356 #define GL_R32F                           0x822E
357 #define GL_RG16F                          0x822F
358 #define GL_RG32F                          0x8230
359 #endif
360 
361 #ifndef GL_EXT_texture_compression_latc
362 #define GL_EXT_texture_compression_latc 1
363 #define GL_COMPRESSED_LUMINANCE_LATC1_EXT              0x8C70
364 #define GL_COMPRESSED_LUMINANCE_ALPHA_LATC2_EXT        0x8C72
365 #endif
366 
367 #ifndef GL_ARB_texture_compression_rgtc
368 #define GL_ARB_texture_compression_rgtc 1
369 #define GL_COMPRESSED_RED_RGTC1           0x8DBB
370 #define GL_COMPRESSED_RG_RGTC2            0x8DBD
371 #endif
372 
373 #ifndef GL_ARB_map_buffer_range
374 #define GL_ARB_map_buffer_range 1
375 #define GL_MAP_READ_BIT                   0x0001
376 #define GL_MAP_WRITE_BIT                  0x0002
377 #define GL_MAP_INVALIDATE_RANGE_BIT       0x0004
378 #define GL_MAP_INVALIDATE_BUFFER_BIT      0x0008
379 #define GL_MAP_FLUSH_EXPLICIT_BIT         0x0010
380 #define GL_MAP_UNSYNCHRONIZED_BIT         0x0020
381 typedef GLvoid* (APIENTRYP PFNGLMAPBUFFERRANGEPROC) (GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access);
382 typedef void (APIENTRYP PFNGLFLUSHMAPPEDBUFFERRANGEPROC) (GLenum target, GLintptr offset, GLsizeiptr length);
383 #endif
384 extern PFNGLMAPBUFFERRANGEPROC         glMapBufferRange_;
385 extern PFNGLFLUSHMAPPEDBUFFERRANGEPROC glFlushMappedBufferRange_;
386 
387 #ifndef GL_ARB_uniform_buffer_object
388 #define GL_ARB_uniform_buffer_object 1
389 #define GL_UNIFORM_BUFFER                 0x8A11
390 #define GL_UNIFORM_BUFFER_BINDING         0x8A28
391 #define GL_UNIFORM_BUFFER_START           0x8A29
392 #define GL_UNIFORM_BUFFER_SIZE            0x8A2A
393 #define GL_MAX_VERTEX_UNIFORM_BLOCKS      0x8A2B
394 #define GL_MAX_GEOMETRY_UNIFORM_BLOCKS    0x8A2C
395 #define GL_MAX_FRAGMENT_UNIFORM_BLOCKS    0x8A2D
396 #define GL_MAX_COMBINED_UNIFORM_BLOCKS    0x8A2E
397 #define GL_MAX_UNIFORM_BUFFER_BINDINGS    0x8A2F
398 #define GL_MAX_UNIFORM_BLOCK_SIZE         0x8A30
399 #define GL_MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS 0x8A31
400 #define GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS 0x8A32
401 #define GL_MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS 0x8A33
402 #define GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT 0x8A34
403 #define GL_ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH 0x8A35
404 #define GL_ACTIVE_UNIFORM_BLOCKS          0x8A36
405 #define GL_UNIFORM_TYPE                   0x8A37
406 #define GL_UNIFORM_SIZE                   0x8A38
407 #define GL_UNIFORM_NAME_LENGTH            0x8A39
408 #define GL_UNIFORM_BLOCK_INDEX            0x8A3A
409 #define GL_UNIFORM_OFFSET                 0x8A3B
410 #define GL_UNIFORM_ARRAY_STRIDE           0x8A3C
411 #define GL_UNIFORM_MATRIX_STRIDE          0x8A3D
412 #define GL_UNIFORM_IS_ROW_MAJOR           0x8A3E
413 #define GL_UNIFORM_BLOCK_BINDING          0x8A3F
414 #define GL_UNIFORM_BLOCK_DATA_SIZE        0x8A40
415 #define GL_UNIFORM_BLOCK_NAME_LENGTH      0x8A41
416 #define GL_UNIFORM_BLOCK_ACTIVE_UNIFORMS  0x8A42
417 #define GL_UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES 0x8A43
418 #define GL_UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER 0x8A44
419 #define GL_UNIFORM_BLOCK_REFERENCED_BY_GEOMETRY_SHADER 0x8A45
420 #define GL_UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER 0x8A46
421 #define GL_INVALID_INDEX                  0xFFFFFFFFu
422 typedef void (APIENTRYP PFNGLGETUNIFORMINDICESPROC) (GLuint program, GLsizei uniformCount, const GLchar* *uniformNames, GLuint *uniformIndices);
423 typedef void (APIENTRYP PFNGLGETACTIVEUNIFORMSIVPROC) (GLuint program, GLsizei uniformCount, const GLuint *uniformIndices, GLenum pname, GLint *params);
424 typedef GLuint (APIENTRYP PFNGLGETUNIFORMBLOCKINDEXPROC) (GLuint program, const GLchar *uniformBlockName);
425 typedef void (APIENTRYP PFNGLGETACTIVEUNIFORMBLOCKIVPROC) (GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint *params);
426 typedef void (APIENTRYP PFNGLUNIFORMBLOCKBINDINGPROC) (GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding);
427 #endif
428 #ifndef GL_INVALID_INDEX
429 #define GL_INVALID_INDEX                  0xFFFFFFFFu
430 #endif
431 extern PFNGLGETUNIFORMINDICESPROC       glGetUniformIndices_;
432 extern PFNGLGETACTIVEUNIFORMSIVPROC     glGetActiveUniformsiv_;
433 extern PFNGLGETUNIFORMBLOCKINDEXPROC    glGetUniformBlockIndex_;
434 extern PFNGLGETACTIVEUNIFORMBLOCKIVPROC glGetActiveUniformBlockiv_;
435 extern PFNGLUNIFORMBLOCKBINDINGPROC     glUniformBlockBinding_;
436 
437 #ifndef GL_VERSION_3_0
438 #define GL_VERSION_3_0 1
439 #define GL_NUM_EXTENSIONS                 0x821D
440 #define GL_COMPARE_REF_TO_TEXTURE         0x884E
441 #define GL_MAX_VARYING_COMPONENTS         0x8B4B
442 #define GL_RGBA32F                        0x8814
443 #define GL_RGB32F                         0x8815
444 #define GL_RGBA16F                        0x881A
445 #define GL_RGB16F                         0x881B
446 #define GL_COMPRESSED_RED                 0x8225
447 #define GL_COMPRESSED_RG                  0x8226
448 typedef void (APIENTRYP PFNGLBINDBUFFERRANGEPROC) (GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size);
449 typedef void (APIENTRYP PFNGLBINDBUFFERBASEPROC) (GLenum target, GLuint index, GLuint buffer);
450 typedef void (APIENTRYP PFNGLBINDFRAGDATALOCATIONPROC) (GLuint program, GLuint color, const GLchar *name);
451 typedef const GLubyte * (APIENTRYP PFNGLGETSTRINGIPROC) (GLenum name, GLuint index);
452 #elif GL_GLEXT_VERSION < 43
453 typedef void (APIENTRYP PFNGLBINDBUFFERRANGEPROC) (GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size);
454 typedef void (APIENTRYP PFNGLBINDBUFFERBASEPROC) (GLenum target, GLuint index, GLuint buffer);
455 #endif
456 
457 extern PFNGLGETSTRINGIPROC           glGetStringi_;
458 extern PFNGLBINDFRAGDATALOCATIONPROC glBindFragDataLocation_;
459 extern PFNGLBINDBUFFERBASEPROC       glBindBufferBase_;
460 extern PFNGLBINDBUFFERRANGEPROC      glBindBufferRange_;
461 
462 #ifndef GL_VERSION_3_1
463 #define GL_VERSION_3_1 1
464 #define GL_TEXTURE_RECTANGLE              0x84F5
465 #endif
466 
467 #ifndef GL_ARB_vertex_array_object
468 #define GL_ARB_vertex_array_object 1
469 #define GL_VERTEX_ARRAY_BINDING           0x85B5
470 typedef void (APIENTRYP PFNGLBINDVERTEXARRAYPROC) (GLuint array);
471 typedef void (APIENTRYP PFNGLDELETEVERTEXARRAYSPROC) (GLsizei n, const GLuint *arrays);
472 typedef void (APIENTRYP PFNGLGENVERTEXARRAYSPROC) (GLsizei n, GLuint *arrays);
473 typedef GLboolean (APIENTRYP PFNGLISVERTEXARRAYPROC) (GLuint array);
474 #endif
475 extern PFNGLBINDVERTEXARRAYPROC    glBindVertexArray_;
476 extern PFNGLDELETEVERTEXARRAYSPROC glDeleteVertexArrays_;
477 extern PFNGLGENVERTEXARRAYSPROC    glGenVertexArrays_;
478 extern PFNGLISVERTEXARRAYPROC      glIsVertexArray_;
479 
480 #ifndef GL_ARB_texture_swizzle
481 #define GL_ARB_texture_swizzle 1
482 #define GL_TEXTURE_SWIZZLE_R              0x8E42
483 #define GL_TEXTURE_SWIZZLE_G              0x8E43
484 #define GL_TEXTURE_SWIZZLE_B              0x8E44
485 #define GL_TEXTURE_SWIZZLE_A              0x8E45
486 #define GL_TEXTURE_SWIZZLE_RGBA           0x8E46
487 #endif
488 
489