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