0025442: Visualization, TKOpenGl - prevent inclusion of system header glxext.h
[occt.git] / src / OpenGl / OpenGl_GlFunctions.hxx
CommitLineData
01ca42b2 1// Created on: 2014-03-17
2// Created by: Kirill GAVRILOV
3// Copyright (c) 2014 OPEN CASCADE SAS
4//
5// This file is part of Open CASCADE Technology software library.
6//
7// This library is free software; you can redistribute it and/or modify it under
8// the terms of the GNU Lesser General Public License version 2.1 as published
9// by the Free Software Foundation, with special exception defined in the file
10// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
11// distribution for complete text of the license and disclaimer of any warranty.
12//
13// Alternatively, this file may be used under the terms of Open CASCADE
14// commercial license or contractual agreement.
15
16#ifndef _OpenGl_GlFunctions_Header
17#define _OpenGl_GlFunctions_Header
18
19// required for correct APIENTRY definition
20#if defined(_WIN32) && !defined(APIENTRY) && !defined(__CYGWIN__) && !defined(__SCITECH_SNAP__)
21 #define WIN32_LEAN_AND_MEAN
22 #include <windows.h>
23#endif
24
25#ifndef APIENTRY
26 #define APIENTRY
27#endif
28#ifndef APIENTRYP
29 #define APIENTRYP APIENTRY *
30#endif
31#ifndef GLAPI
32 #define GLAPI extern
33#endif
34
35// exclude modern definitions and system-provided glext.h, should be defined before gl.h inclusion
36#define GL_GLEXT_LEGACY
00ea319b 37#define GLX_GLXEXT_LEGACY
01ca42b2 38
39// include main OpenGL header provided with system
40#if defined(__APPLE__)
41 #include <OpenGL/gl.h>
42 #include <OpenGL/glu.h>
43 #define __X_GL_H // prevent chaotic gl.h inclusions to avoid compile errors
ca3c13d1 44#elif defined(HAVE_GLES2) || defined(__ANDROID__)
45 #include <GLES2/gl2.h>
46 //#include <GLES3/gl3.h>
47
48 typedef double GLdouble;
49 typedef double GLclampd;
25ef750e 50 typedef uint64_t GLuint64;
ca3c13d1 51 #define GL_NONE 0
52
53 // OpenGL ES 3.0+ or GL_OES_element_index_uint extension
54 #define GL_UNSIGNED_INT 0x1405
55
56 // in core since OpenGL ES 3.0, extension GL_EXT_texture_rg
57 #define GL_RED 0x1903
58 #define GL_R8 0x8229
59 // in core since OpenGL ES 3.0, extension GL_OES_rgb8_rgba8
60 #define GL_RGB8 0x8051
61 #define GL_RGBA8 0x8058
62 // GL_EXT_texture_format_BGRA8888
63 #define GL_BGRA_EXT 0x80E1 // same as GL_BGRA on desktop
64
65 #define GL_R16 0x822A
66 #define GL_R16F 0x822D
67 #define GL_R32F 0x822E
68 #define GL_RGB16F 0x881B
69 #define GL_RGBA32F 0x8814
70 #define GL_RGB32F 0x8815
71 #define GL_RGBA16F 0x881A
72 #define GL_RGB16F 0x881B
73 #define GL_RGB4 0x804F
74 #define GL_RGB5 0x8050
75 #define GL_RGB8 0x8051
76 #define GL_RGB10 0x8052
77 #define GL_RGB12 0x8053
78 #define GL_RGB16 0x8054
79 #define GL_RGBA8 0x8058
80 #define GL_RGB10_A2 0x8059
81 #define GL_RGBA12 0x805A
82 #define GL_RGBA16 0x805B
83 #define GL_ALPHA8 0x803C
84 #define GL_ALPHA16 0x803E
85
86 #define GL_RG 0x8227
87 #define GL_RG8 0x822B
88 #define GL_RG16 0x822C
89 #define GL_RG16F 0x822F
90 #define GL_RG32F 0x8230
91
92 // GL_OES_packed_depth_stencil
93 #define GL_DEPTH_STENCIL 0x84F9
94 #define GL_UNSIGNED_INT_24_8 0x84FA
95 #define GL_DEPTH24_STENCIL8 0x88F0
96
97 // GL_EXT_texture_filter_anisotropic
98 #define GL_TEXTURE_MAX_ANISOTROPY_EXT 0x84FE
99 #define GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT 0x84FF
100
101 // debug ARB extension
102 #define GL_DEBUG_OUTPUT_SYNCHRONOUS_ARB 0x8242
103 #define GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH_ARB 0x8243
104 #define GL_DEBUG_CALLBACK_FUNCTION_ARB 0x8244
105 #define GL_DEBUG_CALLBACK_USER_PARAM_ARB 0x8245
106 #define GL_DEBUG_SOURCE_API_ARB 0x8246
107 #define GL_DEBUG_SOURCE_WINDOW_SYSTEM_ARB 0x8247
108 #define GL_DEBUG_SOURCE_SHADER_COMPILER_ARB 0x8248
109 #define GL_DEBUG_SOURCE_THIRD_PARTY_ARB 0x8249
110 #define GL_DEBUG_SOURCE_APPLICATION_ARB 0x824A
111 #define GL_DEBUG_SOURCE_OTHER_ARB 0x824B
112 #define GL_DEBUG_TYPE_ERROR_ARB 0x824C
113 #define GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR_ARB 0x824D
114 #define GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR_ARB 0x824E
115 #define GL_DEBUG_TYPE_PORTABILITY_ARB 0x824F
116 #define GL_DEBUG_TYPE_PERFORMANCE_ARB 0x8250
117 #define GL_DEBUG_TYPE_OTHER_ARB 0x8251
118 #define GL_MAX_DEBUG_MESSAGE_LENGTH_ARB 0x9143
119 #define GL_MAX_DEBUG_LOGGED_MESSAGES_ARB 0x9144
120 #define GL_DEBUG_LOGGED_MESSAGES_ARB 0x9145
121 #define GL_DEBUG_SEVERITY_HIGH_ARB 0x9146
122 #define GL_DEBUG_SEVERITY_MEDIUM_ARB 0x9147
123 #define GL_DEBUG_SEVERITY_LOW_ARB 0x9148
124
125 // GL_EXT_texture_buffer for OpenGL ES 3.1+
126 #define GL_TEXTURE_BUFFER_ARB 0x8C2A
01ca42b2 127#else
128 #include <GL/gl.h>
129 #include <GL/glu.h>
130#endif
131
da8bb41d 132#if defined(__ANDROID__)
133 #define HAVE_EGL
134#endif
135
01ca42b2 136#include <InterfaceGraphic.hxx>
137#include <InterfaceGraphic_tgl_all.hxx>
138#include <InterfaceGraphic_telem.hxx>
139
140// GL version can be defined by system gl.h header
ca3c13d1 141#if !defined(GL_ES_VERSION_2_0)
142 #undef GL_VERSION_1_2
143 #undef GL_VERSION_1_3
144 #undef GL_VERSION_1_4
145 #undef GL_VERSION_1_5
146 #undef GL_VERSION_2_0
147 #undef GL_VERSION_2_1
148 #undef GL_VERSION_3_0
149 #undef GL_VERSION_3_1
150 #undef GL_VERSION_3_2
151 #undef GL_VERSION_3_3
152 #undef GL_VERSION_4_0
153 #undef GL_VERSION_4_1
154 #undef GL_VERSION_4_2
155 #undef GL_VERSION_4_3
156 #undef GL_VERSION_4_4
00ea319b 157 #undef GL_VERSION_4_5
ca3c13d1 158
159 // include glext.h provided by Khronos group
160 #include <glext.h>
161#endif
01ca42b2 162
163//! Mega structure defines the complete list of OpenGL functions.
164struct OpenGl_GlFunctions
165{
166
ca3c13d1 167public: //! @name OpenGL ES 1.1
168
169#if defined(GL_ES_VERSION_2_0)
170
171 inline void glActiveTexture (GLenum texture)
172 {
173 ::glActiveTexture (texture);
174 }
175
176 inline void glCompressedTexImage2D (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data)
177 {
178 ::glCompressedTexImage2D (target, level, internalformat, width, height, border, imageSize, data);
179 }
180
181 inline void glCompressedTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data)
182 {
183 ::glCompressedTexSubImage2D (target, level, xoffset, yoffset, width, height, format, imageSize, data);
184 }
185
186 inline void glBindBuffer (GLenum target, GLuint buffer)
187 {
188 ::glBindBuffer (target, buffer);
189 }
190
191 inline void glBufferData (GLenum target, GLsizeiptr size, const void* data, GLenum usage)
192 {
193 ::glBufferData (target, size, data, usage);
194 }
195
196 inline void glBufferSubData (GLenum target, GLintptr offset, GLsizeiptr size, const void* data)
197 {
198 ::glBufferSubData (target, offset, size, data);
199 }
200
201 inline void glDeleteBuffers (GLsizei n, const GLuint *buffers)
202 {
203 ::glDeleteBuffers (n, buffers);
204 }
205
206 inline void glDeleteTextures (GLsizei n, const GLuint *textures)
207 {
208 ::glDeleteTextures (n, textures);
209 }
210
211 inline void glDepthFunc (GLenum func)
212 {
213 ::glDepthFunc (func);
214 }
215
216 inline void glDepthMask (GLboolean flag)
217 {
218 ::glDepthMask (flag);
219 }
220
221 inline void glDepthRangef (GLfloat n, GLfloat f)
222 {
223 ::glDepthRangef (n, f);
224 }
225
226 inline void glGenBuffers (GLsizei n, GLuint *buffers)
227 {
228 ::glGenBuffers (n, buffers);
229 }
230
231 inline void glGenTextures (GLsizei n, GLuint *textures)
232 {
233 ::glGenTextures (n, textures);
234 }
235
236 inline void glGetBufferParameteriv (GLenum target, GLenum pname, GLint* params)
237 {
238 ::glGetBufferParameteriv (target, pname, params);
239 }
240
241 inline GLboolean glIsBuffer (GLuint buffer)
242 {
243 return ::glIsBuffer (buffer);
244 }
245
246 inline void glSampleCoverage (GLfloat value, GLboolean invert)
247 {
248 ::glSampleCoverage (value, invert);
249 }
250
251 inline void glMultiDrawElements (GLenum theMode, const GLsizei* theCount, GLenum theType, const void* const* theIndices, GLsizei theDrawCount)
252 {
253 if (theCount == NULL
254 || theIndices == NULL)
255 {
256 return;
257 }
258
259 for (GLsizei aBatchIter = 0; aBatchIter < theDrawCount; ++aBatchIter)
260 {
261 ::glDrawElements (theMode, theCount[aBatchIter], theType, theIndices[aBatchIter]);
262 }
263 }
264
265#endif
266
267public: //! @name OpenGL ES 2.0
268
269#if defined(GL_ES_VERSION_2_0)
270 inline void glBlendColor (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha)
271 {
272 ::glBlendColor (red, green, blue, alpha);
273 }
274
275 inline void glBlendEquation (GLenum mode)
276 {
277 ::glBlendEquation (mode);
278 }
279
280 inline void glBlendFuncSeparate (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha)
281 {
282 ::glBlendFuncSeparate (sfactorRGB, dfactorRGB, sfactorAlpha, dfactorAlpha);
283 }
284
285 inline void glBlendEquationSeparate (GLenum modeRGB, GLenum modeAlpha)
286 {
287 ::glBlendEquationSeparate (modeRGB, modeAlpha);
288 }
289
290 inline void glStencilOpSeparate (GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass)
291 {
292 ::glStencilOpSeparate (face, sfail, dpfail, dppass);
293 }
294
295 inline void glStencilFuncSeparate (GLenum face, GLenum func, GLint ref, GLuint mask)
296 {
297 ::glStencilFuncSeparate (face, func, ref, mask);
298 }
299
300 inline void glStencilMaskSeparate (GLenum face, GLuint mask)
301 {
302 ::glStencilMaskSeparate (face, mask);
303 }
304
305 inline void glAttachShader (GLuint program, GLuint shader)
306 {
307 ::glAttachShader (program, shader);
308 }
309
310 inline void glBindAttribLocation (GLuint program, GLuint index, const GLchar *name)
311 {
312 ::glBindAttribLocation (program, index, name);
313 }
314
315 inline void glBindFramebuffer (GLenum target, GLuint framebuffer)
316 {
317 ::glBindFramebuffer (target, framebuffer);
318 }
319
320 inline void glBindRenderbuffer (GLenum target, GLuint renderbuffer)
321 {
322 ::glBindRenderbuffer (target, renderbuffer);
323 }
324
325 inline GLenum glCheckFramebufferStatus (GLenum target)
326 {
327 return ::glCheckFramebufferStatus (target);
328 }
329
330 inline void glCompileShader (GLuint shader)
331 {
332 ::glCompileShader (shader);
333 }
334
335 inline GLuint glCreateProgram()
336 {
337 return ::glCreateProgram();
338 }
339
340 inline GLuint glCreateShader (GLenum type)
341 {
342 return ::glCreateShader (type);
343 }
344
345 inline void glDeleteFramebuffers (GLsizei n, const GLuint *framebuffers)
346 {
347 ::glDeleteFramebuffers (n, framebuffers);
348 }
349
350 inline void glDeleteProgram (GLuint program)
351 {
352 ::glDeleteProgram (program);
353 }
354
355 inline void glDeleteRenderbuffers (GLsizei n, const GLuint *renderbuffers)
356 {
357 ::glDeleteRenderbuffers (n, renderbuffers);
358 }
359
360 inline void glDeleteShader (GLuint shader)
361 {
362 ::glDeleteShader (shader);
363 }
364
365 inline void glDetachShader (GLuint program, GLuint shader)
366 {
367 ::glDetachShader (program, shader);
368 }
369
370 inline void glDisableVertexAttribArray (GLuint index)
371 {
372 ::glDisableVertexAttribArray (index);
373 }
374
375 inline void glEnableVertexAttribArray (GLuint index)
376 {
377 ::glEnableVertexAttribArray (index);
378 }
379
380 inline void glFramebufferRenderbuffer (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer)
381 {
382 ::glFramebufferRenderbuffer (target, attachment, renderbuffertarget, renderbuffer);
383 }
384
385 inline void glFramebufferTexture2D (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level)
386 {
387 ::glFramebufferTexture2D (target, attachment, textarget, texture, level);
388 }
389
390 inline void glGenerateMipmap (GLenum target)
391 {
392 ::glGenerateMipmap (target);
393 }
394
395 inline void glGenFramebuffers (GLsizei n, GLuint *framebuffers)
396 {
397 ::glGenFramebuffers (n, framebuffers);
398 }
399
400 inline void glGenRenderbuffers (GLsizei n, GLuint *renderbuffers)
401 {
402 ::glGenRenderbuffers (n, renderbuffers);
403 }
404
405 inline void glGetActiveAttrib (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint* size, GLenum *type, GLchar *name)
406 {
407 ::glGetActiveAttrib (program, index, bufSize, length, size, type, name);
408 }
409
410 inline void glGetActiveUniform (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint* size, GLenum *type, GLchar *name)
411 {
412 ::glGetActiveUniform (program, index, bufSize, length, size, type, name);
413 }
414
415 inline void glGetAttachedShaders (GLuint program, GLsizei maxCount, GLsizei *count, GLuint *shaders)
416 {
417 ::glGetAttachedShaders (program, maxCount, count, shaders);
418 }
419
420 inline GLint glGetAttribLocation (GLuint program, const GLchar *name)
421 {
422 return ::glGetAttribLocation (program, name);
423 }
424
425 inline void glGetFramebufferAttachmentParameteriv (GLenum target, GLenum attachment, GLenum pname, GLint* params)
426 {
427 ::glGetFramebufferAttachmentParameteriv (target, attachment, pname, params);
428 }
429
430 inline void glGetProgramiv (GLuint program, GLenum pname, GLint* params)
431 {
432 ::glGetProgramiv (program, pname, params);
433 }
434
435 inline void glGetProgramInfoLog (GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog)
436 {
437 ::glGetProgramInfoLog (program, bufSize, length, infoLog);
438 }
439
440 inline void glGetRenderbufferParameteriv (GLenum target, GLenum pname, GLint* params)
441 {
442 ::glGetRenderbufferParameteriv (target, pname, params);
443 }
444
445 inline void glGetShaderiv (GLuint shader, GLenum pname, GLint* params)
446 {
447 ::glGetShaderiv (shader, pname, params);
448 }
449
450 inline void glGetShaderInfoLog (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog)
451 {
452 ::glGetShaderInfoLog (shader, bufSize, length, infoLog);
453 }
454
455 inline void glGetShaderPrecisionFormat (GLenum shadertype, GLenum precisiontype, GLint* range, GLint* precision)
456 {
457 ::glGetShaderPrecisionFormat (shadertype, precisiontype, range, precision);
458 }
459
460 inline void glGetShaderSource (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source)
461 {
462 ::glGetShaderSource (shader, bufSize, length, source);
463 }
464
465 inline void glGetUniformfv (GLuint program, GLint location, GLfloat* params)
466 {
467 ::glGetUniformfv (program, location, params);
468 }
469
470 inline void glGetUniformiv (GLuint program, GLint location, GLint* params)
471 {
472 ::glGetUniformiv (program, location, params);
473 }
474
475 GLint glGetUniformLocation (GLuint program, const GLchar *name)
476 {
477 return ::glGetUniformLocation (program, name);
478 }
479
480 inline void glGetVertexAttribfv (GLuint index, GLenum pname, GLfloat* params)
481 {
482 ::glGetVertexAttribfv (index, pname, params);
483 }
484
485 inline void glGetVertexAttribiv (GLuint index, GLenum pname, GLint* params)
486 {
487 ::glGetVertexAttribiv (index, pname, params);
488 }
489
490 inline void glGetVertexAttribPointerv (GLuint index, GLenum pname, void* *pointer)
491 {
492 ::glGetVertexAttribPointerv (index, pname, pointer);
493 }
494
495 inline GLboolean glIsFramebuffer (GLuint framebuffer)
496 {
497 return ::glIsFramebuffer (framebuffer);
498 }
499
500 inline GLboolean glIsProgram (GLuint program)
501 {
502 return ::glIsProgram (program);
503 }
504
505 inline GLboolean glIsRenderbuffer (GLuint renderbuffer)
506 {
507 return ::glIsRenderbuffer (renderbuffer);
508 }
509
510 inline GLboolean glIsShader (GLuint shader)
511 {
512 return ::glIsShader (shader);
513 }
514
515 inline void glLinkProgram (GLuint program)
516 {
517 ::glLinkProgram (program);
518 }
519
520 inline void glReleaseShaderCompiler()
521 {
522 ::glReleaseShaderCompiler();
523 }
524
525 inline void glRenderbufferStorage (GLenum target, GLenum internalformat, GLsizei width, GLsizei height)
526 {
527 ::glRenderbufferStorage (target, internalformat, width, height);
528 }
529
530 inline void glShaderBinary (GLsizei count, const GLuint *shaders, GLenum binaryformat, const void* binary, GLsizei length)
531 {
532 ::glShaderBinary (count, shaders, binaryformat, binary, length);
533 }
534
535 inline void glShaderSource (GLuint shader, GLsizei count, const GLchar** string, const GLint* length)
536 {
537 ::glShaderSource (shader, count, string, length);
538 }
539
540 inline void glUniform1f (GLint location, GLfloat v0)
541 {
542 ::glUniform1f (location, v0);
543 }
544
545 inline void glUniform1fv (GLint location, GLsizei count, const GLfloat* value)
546 {
547 ::glUniform1fv (location, count, value);
548 }
549
550 inline void glUniform1i (GLint location, GLint v0)
551 {
552 ::glUniform1i (location, v0);
553 }
554
555 inline void glUniform1iv (GLint location, GLsizei count, const GLint* value)
556 {
557 ::glUniform1iv (location, count, value);
558 }
559
560 inline void glUniform2f (GLint location, GLfloat v0, GLfloat v1)
561 {
562 ::glUniform2f (location, v0, v1);
563 }
564
565 inline void glUniform2fv (GLint location, GLsizei count, const GLfloat* value)
566 {
567 ::glUniform2fv (location, count, value);
568 }
569
570 inline void glUniform2i (GLint location, GLint v0, GLint v1)
571 {
572 ::glUniform2i (location, v0, v1);
573 }
574
575 inline void glUniform2iv (GLint location, GLsizei count, const GLint* value)
576 {
577 ::glUniform2iv (location, count, value);
578 }
579
580 inline void glUniform3f (GLint location, GLfloat v0, GLfloat v1, GLfloat v2)
581 {
582 ::glUniform3f (location, v0, v1, v2);
583 }
584
585 inline void glUniform3fv (GLint location, GLsizei count, const GLfloat* value)
586 {
587 ::glUniform3fv (location, count, value);
588 }
589
590 inline void glUniform3i (GLint location, GLint v0, GLint v1, GLint v2)
591 {
592 ::glUniform3i (location, v0, v1, v2);
593 }
594
595 inline void glUniform3iv (GLint location, GLsizei count, const GLint* value)
596 {
597 ::glUniform3iv (location, count, value);
598 }
599
600 inline void glUniform4f (GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3)
601 {
602 ::glUniform4f (location, v0, v1, v2, v3);
603 }
604
605 inline void glUniform4fv (GLint location, GLsizei count, const GLfloat* value)
606 {
607 ::glUniform4fv (location, count, value);
608 }
609
610 inline void glUniform4i (GLint location, GLint v0, GLint v1, GLint v2, GLint v3)
611 {
612 ::glUniform4i (location, v0, v1, v2, v3);
613 }
614
615 inline void glUniform4iv (GLint location, GLsizei count, const GLint* value)
616 {
617 ::glUniform4iv (location, count, value);
618 }
619
620 inline void glUniformMatrix2fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
621 {
622 ::glUniformMatrix2fv (location, count, transpose, value);
623 }
624
625 inline void glUniformMatrix3fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
626 {
627 ::glUniformMatrix3fv (location, count, transpose, value);
628 }
629
630 inline void glUniformMatrix4fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
631 {
632 ::glUniformMatrix4fv (location, count, transpose, value);
633 }
634
635 inline void glUseProgram (GLuint program)
636 {
637 ::glUseProgram (program);
638 }
639
640 inline void glValidateProgram (GLuint program)
641 {
642 ::glValidateProgram (program);
643 }
644
645 inline void glVertexAttrib1f (GLuint index, GLfloat x)
646 {
647 ::glVertexAttrib1f (index, x);
648 }
649
650 inline void glVertexAttrib1fv (GLuint index, const GLfloat* v)
651 {
652 ::glVertexAttrib1fv (index, v);
653 }
654
655 inline void glVertexAttrib2f (GLuint index, GLfloat x, GLfloat y)
656 {
657 ::glVertexAttrib2f (index, x, y);
658 }
659
660 inline void glVertexAttrib2fv (GLuint index, const GLfloat* v)
661 {
662 ::glVertexAttrib2fv (index, v);
663 }
664
665 inline void glVertexAttrib3f (GLuint index, GLfloat x, GLfloat y, GLfloat z)
666 {
667 ::glVertexAttrib3f (index, x, y, z);
668 }
669
670 inline void glVertexAttrib3fv (GLuint index, const GLfloat* v)
671 {
672 ::glVertexAttrib3fv (index, v);
673 }
674
675 inline void glVertexAttrib4f (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w)
676 {
677 ::glVertexAttrib4f (index, x, y, z, w);
678 }
679
680 inline void glVertexAttrib4fv (GLuint index, const GLfloat* v)
681 {
682 ::glVertexAttrib4fv (index, v);
683 }
684
685 inline void glVertexAttribPointer (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void* pointer)
686 {
687 ::glVertexAttribPointer (index, size, type, normalized, stride, pointer);
688 }
689
690#else // OpenGL ES vs. desktop
691
01ca42b2 692public: //! @name OpenGL 1.2
693
694 PFNGLBLENDCOLORPROC glBlendColor;
695 PFNGLBLENDEQUATIONPROC glBlendEquation;
696 PFNGLDRAWRANGEELEMENTSPROC glDrawRangeElements;
697 PFNGLTEXIMAGE3DPROC glTexImage3D;
698 PFNGLTEXSUBIMAGE3DPROC glTexSubImage3D;
699 PFNGLCOPYTEXSUBIMAGE3DPROC glCopyTexSubImage3D;
700
701public: //! @name OpenGL 1.3
702
703 PFNGLACTIVETEXTUREPROC glActiveTexture;
704 PFNGLSAMPLECOVERAGEPROC glSampleCoverage;
705 PFNGLCOMPRESSEDTEXIMAGE3DPROC glCompressedTexImage3D;
706 PFNGLCOMPRESSEDTEXIMAGE2DPROC glCompressedTexImage2D;
707 PFNGLCOMPRESSEDTEXIMAGE1DPROC glCompressedTexImage1D;
708 PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC glCompressedTexSubImage3D;
709 PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC glCompressedTexSubImage2D;
710 PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC glCompressedTexSubImage1D;
711 PFNGLGETCOMPRESSEDTEXIMAGEPROC glGetCompressedTexImage;
712
713 PFNGLCLIENTACTIVETEXTUREPROC glClientActiveTexture;
714 PFNGLMULTITEXCOORD1DPROC glMultiTexCoord1d;
715 PFNGLMULTITEXCOORD1DVPROC glMultiTexCoord1dv;
716 PFNGLMULTITEXCOORD1FPROC glMultiTexCoord1f;
717 PFNGLMULTITEXCOORD1FVPROC glMultiTexCoord1fv;
718 PFNGLMULTITEXCOORD1IPROC glMultiTexCoord1i;
719 PFNGLMULTITEXCOORD1IVPROC glMultiTexCoord1iv;
720 PFNGLMULTITEXCOORD1SPROC glMultiTexCoord1s;
721 PFNGLMULTITEXCOORD1SVPROC glMultiTexCoord1sv;
722 PFNGLMULTITEXCOORD2DPROC glMultiTexCoord2d;
723 PFNGLMULTITEXCOORD2DVPROC glMultiTexCoord2dv;
724 PFNGLMULTITEXCOORD2FPROC glMultiTexCoord2f;
725 PFNGLMULTITEXCOORD2FVPROC glMultiTexCoord2fv;
726 PFNGLMULTITEXCOORD2IPROC glMultiTexCoord2i;
727 PFNGLMULTITEXCOORD2IVPROC glMultiTexCoord2iv;
728 PFNGLMULTITEXCOORD2SPROC glMultiTexCoord2s;
729 PFNGLMULTITEXCOORD2SVPROC glMultiTexCoord2sv;
730 PFNGLMULTITEXCOORD3DPROC glMultiTexCoord3d;
731 PFNGLMULTITEXCOORD3DVPROC glMultiTexCoord3dv;
732 PFNGLMULTITEXCOORD3FPROC glMultiTexCoord3f;
733 PFNGLMULTITEXCOORD3FVPROC glMultiTexCoord3fv;
734 PFNGLMULTITEXCOORD3IPROC glMultiTexCoord3i;
735 PFNGLMULTITEXCOORD3IVPROC glMultiTexCoord3iv;
736 PFNGLMULTITEXCOORD3SPROC glMultiTexCoord3s;
737 PFNGLMULTITEXCOORD3SVPROC glMultiTexCoord3sv;
738 PFNGLMULTITEXCOORD4DPROC glMultiTexCoord4d;
739 PFNGLMULTITEXCOORD4DVPROC glMultiTexCoord4dv;
740 PFNGLMULTITEXCOORD4FPROC glMultiTexCoord4f;
741 PFNGLMULTITEXCOORD4FVPROC glMultiTexCoord4fv;
742 PFNGLMULTITEXCOORD4IPROC glMultiTexCoord4i;
743 PFNGLMULTITEXCOORD4IVPROC glMultiTexCoord4iv;
744 PFNGLMULTITEXCOORD4SPROC glMultiTexCoord4s;
745 PFNGLMULTITEXCOORD4SVPROC glMultiTexCoord4sv;
746 PFNGLLOADTRANSPOSEMATRIXFPROC glLoadTransposeMatrixf;
747 PFNGLLOADTRANSPOSEMATRIXDPROC glLoadTransposeMatrixd;
748 PFNGLMULTTRANSPOSEMATRIXFPROC glMultTransposeMatrixf;
749 PFNGLMULTTRANSPOSEMATRIXDPROC glMultTransposeMatrixd;
750
751public: //! @name OpenGL 1.4
752
753 PFNGLBLENDFUNCSEPARATEPROC glBlendFuncSeparate;
754 PFNGLMULTIDRAWARRAYSPROC glMultiDrawArrays;
755 PFNGLMULTIDRAWELEMENTSPROC glMultiDrawElements;
756 PFNGLPOINTPARAMETERFPROC glPointParameterf;
757 PFNGLPOINTPARAMETERFVPROC glPointParameterfv;
758 PFNGLPOINTPARAMETERIPROC glPointParameteri;
759 PFNGLPOINTPARAMETERIVPROC glPointParameteriv;
760
761public: //! @name OpenGL 1.5
762
763 PFNGLGENQUERIESPROC glGenQueries;
764 PFNGLDELETEQUERIESPROC glDeleteQueries;
765 PFNGLISQUERYPROC glIsQuery;
766 PFNGLBEGINQUERYPROC glBeginQuery;
767 PFNGLENDQUERYPROC glEndQuery;
768 PFNGLGETQUERYIVPROC glGetQueryiv;
769 PFNGLGETQUERYOBJECTIVPROC glGetQueryObjectiv;
770 PFNGLGETQUERYOBJECTUIVPROC glGetQueryObjectuiv;
771 PFNGLBINDBUFFERPROC glBindBuffer;
772 PFNGLDELETEBUFFERSPROC glDeleteBuffers;
773 PFNGLGENBUFFERSPROC glGenBuffers;
774 PFNGLISBUFFERPROC glIsBuffer;
775 PFNGLBUFFERDATAPROC glBufferData;
776 PFNGLBUFFERSUBDATAPROC glBufferSubData;
777 PFNGLGETBUFFERSUBDATAPROC glGetBufferSubData;
778 PFNGLMAPBUFFERPROC glMapBuffer;
779 PFNGLUNMAPBUFFERPROC glUnmapBuffer;
780 PFNGLGETBUFFERPARAMETERIVPROC glGetBufferParameteriv;
781 PFNGLGETBUFFERPOINTERVPROC glGetBufferPointerv;
782
783public: //! @name OpenGL 2.0
784
785 PFNGLBLENDEQUATIONSEPARATEPROC glBlendEquationSeparate;
786 PFNGLDRAWBUFFERSPROC glDrawBuffers;
787 PFNGLSTENCILOPSEPARATEPROC glStencilOpSeparate;
788 PFNGLSTENCILFUNCSEPARATEPROC glStencilFuncSeparate;
789 PFNGLSTENCILMASKSEPARATEPROC glStencilMaskSeparate;
790 PFNGLATTACHSHADERPROC glAttachShader;
791 PFNGLBINDATTRIBLOCATIONPROC glBindAttribLocation;
792 PFNGLCOMPILESHADERPROC glCompileShader;
793 PFNGLCREATEPROGRAMPROC glCreateProgram;
794 PFNGLCREATESHADERPROC glCreateShader;
795 PFNGLDELETEPROGRAMPROC glDeleteProgram;
796 PFNGLDELETESHADERPROC glDeleteShader;
797 PFNGLDETACHSHADERPROC glDetachShader;
798 PFNGLDISABLEVERTEXATTRIBARRAYPROC glDisableVertexAttribArray;
799 PFNGLENABLEVERTEXATTRIBARRAYPROC glEnableVertexAttribArray;
800 PFNGLGETACTIVEATTRIBPROC glGetActiveAttrib;
801 PFNGLGETACTIVEUNIFORMPROC glGetActiveUniform;
802 PFNGLGETATTACHEDSHADERSPROC glGetAttachedShaders;
803 PFNGLGETATTRIBLOCATIONPROC glGetAttribLocation;
804 PFNGLGETPROGRAMIVPROC glGetProgramiv;
805 PFNGLGETPROGRAMINFOLOGPROC glGetProgramInfoLog;
806 PFNGLGETSHADERIVPROC glGetShaderiv;
807 PFNGLGETSHADERINFOLOGPROC glGetShaderInfoLog;
808 PFNGLGETSHADERSOURCEPROC glGetShaderSource;
809 PFNGLGETUNIFORMLOCATIONPROC glGetUniformLocation;
810 PFNGLGETUNIFORMFVPROC glGetUniformfv;
811 PFNGLGETUNIFORMIVPROC glGetUniformiv;
812 PFNGLGETVERTEXATTRIBDVPROC glGetVertexAttribdv;
813 PFNGLGETVERTEXATTRIBFVPROC glGetVertexAttribfv;
814 PFNGLGETVERTEXATTRIBIVPROC glGetVertexAttribiv;
815 PFNGLGETVERTEXATTRIBPOINTERVPROC glGetVertexAttribPointerv;
816 PFNGLISPROGRAMPROC glIsProgram;
817 PFNGLISSHADERPROC glIsShader;
818 PFNGLLINKPROGRAMPROC glLinkProgram;
819 PFNGLSHADERSOURCEPROC glShaderSource;
820 PFNGLUSEPROGRAMPROC glUseProgram;
821 PFNGLUNIFORM1FPROC glUniform1f;
822 PFNGLUNIFORM2FPROC glUniform2f;
823 PFNGLUNIFORM3FPROC glUniform3f;
824 PFNGLUNIFORM4FPROC glUniform4f;
825 PFNGLUNIFORM1IPROC glUniform1i;
826 PFNGLUNIFORM2IPROC glUniform2i;
827 PFNGLUNIFORM3IPROC glUniform3i;
828 PFNGLUNIFORM4IPROC glUniform4i;
829 PFNGLUNIFORM1FVPROC glUniform1fv;
830 PFNGLUNIFORM2FVPROC glUniform2fv;
831 PFNGLUNIFORM3FVPROC glUniform3fv;
832 PFNGLUNIFORM4FVPROC glUniform4fv;
833 PFNGLUNIFORM1IVPROC glUniform1iv;
834 PFNGLUNIFORM2IVPROC glUniform2iv;
835 PFNGLUNIFORM3IVPROC glUniform3iv;
836 PFNGLUNIFORM4IVPROC glUniform4iv;
837 PFNGLUNIFORMMATRIX2FVPROC glUniformMatrix2fv;
838 PFNGLUNIFORMMATRIX3FVPROC glUniformMatrix3fv;
839 PFNGLUNIFORMMATRIX4FVPROC glUniformMatrix4fv;
840 PFNGLVALIDATEPROGRAMPROC glValidateProgram;
841 PFNGLVERTEXATTRIB1DPROC glVertexAttrib1d;
842 PFNGLVERTEXATTRIB1DVPROC glVertexAttrib1dv;
843 PFNGLVERTEXATTRIB1FPROC glVertexAttrib1f;
844 PFNGLVERTEXATTRIB1FVPROC glVertexAttrib1fv;
845 PFNGLVERTEXATTRIB1SPROC glVertexAttrib1s;
846 PFNGLVERTEXATTRIB1SVPROC glVertexAttrib1sv;
847 PFNGLVERTEXATTRIB2DPROC glVertexAttrib2d;
848 PFNGLVERTEXATTRIB2DVPROC glVertexAttrib2dv;
849 PFNGLVERTEXATTRIB2FPROC glVertexAttrib2f;
850 PFNGLVERTEXATTRIB2FVPROC glVertexAttrib2fv;
851 PFNGLVERTEXATTRIB2SPROC glVertexAttrib2s;
852 PFNGLVERTEXATTRIB2SVPROC glVertexAttrib2sv;
853 PFNGLVERTEXATTRIB3DPROC glVertexAttrib3d;
854 PFNGLVERTEXATTRIB3DVPROC glVertexAttrib3dv;
855 PFNGLVERTEXATTRIB3FPROC glVertexAttrib3f;
856 PFNGLVERTEXATTRIB3FVPROC glVertexAttrib3fv;
857 PFNGLVERTEXATTRIB3SPROC glVertexAttrib3s;
858 PFNGLVERTEXATTRIB3SVPROC glVertexAttrib3sv;
859 PFNGLVERTEXATTRIB4NBVPROC glVertexAttrib4Nbv;
860 PFNGLVERTEXATTRIB4NIVPROC glVertexAttrib4Niv;
861 PFNGLVERTEXATTRIB4NSVPROC glVertexAttrib4Nsv;
862 PFNGLVERTEXATTRIB4NUBPROC glVertexAttrib4Nub;
863 PFNGLVERTEXATTRIB4NUBVPROC glVertexAttrib4Nubv;
864 PFNGLVERTEXATTRIB4NUIVPROC glVertexAttrib4Nuiv;
865 PFNGLVERTEXATTRIB4NUSVPROC glVertexAttrib4Nusv;
866 PFNGLVERTEXATTRIB4BVPROC glVertexAttrib4bv;
867 PFNGLVERTEXATTRIB4DPROC glVertexAttrib4d;
868 PFNGLVERTEXATTRIB4DVPROC glVertexAttrib4dv;
869 PFNGLVERTEXATTRIB4FPROC glVertexAttrib4f;
870 PFNGLVERTEXATTRIB4FVPROC glVertexAttrib4fv;
871 PFNGLVERTEXATTRIB4IVPROC glVertexAttrib4iv;
872 PFNGLVERTEXATTRIB4SPROC glVertexAttrib4s;
873 PFNGLVERTEXATTRIB4SVPROC glVertexAttrib4sv;
874 PFNGLVERTEXATTRIB4UBVPROC glVertexAttrib4ubv;
875 PFNGLVERTEXATTRIB4UIVPROC glVertexAttrib4uiv;
876 PFNGLVERTEXATTRIB4USVPROC glVertexAttrib4usv;
877 PFNGLVERTEXATTRIBPOINTERPROC glVertexAttribPointer;
878
879public: //! @name OpenGL 2.1
880
881 PFNGLUNIFORMMATRIX2X3FVPROC glUniformMatrix2x3fv;
882 PFNGLUNIFORMMATRIX3X2FVPROC glUniformMatrix3x2fv;
883 PFNGLUNIFORMMATRIX2X4FVPROC glUniformMatrix2x4fv;
884 PFNGLUNIFORMMATRIX4X2FVPROC glUniformMatrix4x2fv;
885 PFNGLUNIFORMMATRIX3X4FVPROC glUniformMatrix3x4fv;
886 PFNGLUNIFORMMATRIX4X3FVPROC glUniformMatrix4x3fv;
887
888public: //! @name GL_ARB_framebuffer_object (added to OpenGL 3.0 core)
889
890 PFNGLISRENDERBUFFERPROC glIsRenderbuffer;
891 PFNGLBINDRENDERBUFFERPROC glBindRenderbuffer;
892 PFNGLDELETERENDERBUFFERSPROC glDeleteRenderbuffers;
893 PFNGLGENRENDERBUFFERSPROC glGenRenderbuffers;
894 PFNGLRENDERBUFFERSTORAGEPROC glRenderbufferStorage;
895 PFNGLGETRENDERBUFFERPARAMETERIVPROC glGetRenderbufferParameteriv;
896 PFNGLISFRAMEBUFFERPROC glIsFramebuffer;
897 PFNGLBINDFRAMEBUFFERPROC glBindFramebuffer;
898 PFNGLDELETEFRAMEBUFFERSPROC glDeleteFramebuffers;
899 PFNGLGENFRAMEBUFFERSPROC glGenFramebuffers;
900 PFNGLCHECKFRAMEBUFFERSTATUSPROC glCheckFramebufferStatus;
901 PFNGLFRAMEBUFFERTEXTURE1DPROC glFramebufferTexture1D;
902 PFNGLFRAMEBUFFERTEXTURE2DPROC glFramebufferTexture2D;
903 PFNGLFRAMEBUFFERTEXTURE3DPROC glFramebufferTexture3D;
904 PFNGLFRAMEBUFFERRENDERBUFFERPROC glFramebufferRenderbuffer;
905 PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC glGetFramebufferAttachmentParameteriv;
906 PFNGLGENERATEMIPMAPPROC glGenerateMipmap;
907 PFNGLBLITFRAMEBUFFERPROC glBlitFramebuffer;
908 PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC glRenderbufferStorageMultisample;
909 PFNGLFRAMEBUFFERTEXTURELAYERPROC glFramebufferTextureLayer;
910
911public: //! @name GL_ARB_vertex_array_object (added to OpenGL 3.0 core)
912
913 PFNGLBINDVERTEXARRAYPROC glBindVertexArray;
914 PFNGLDELETEVERTEXARRAYSPROC glDeleteVertexArrays;
915 PFNGLGENVERTEXARRAYSPROC glGenVertexArrays;
916 PFNGLISVERTEXARRAYPROC glIsVertexArray;
917
918public: //! @name GL_ARB_map_buffer_range (added to OpenGL 3.0 core)
919
920 PFNGLMAPBUFFERRANGEPROC glMapBufferRange;
921 PFNGLFLUSHMAPPEDBUFFERRANGEPROC glFlushMappedBufferRange;
922
923public: //! @name OpenGL 3.0
924
925 PFNGLCOLORMASKIPROC glColorMaski;
926 PFNGLGETBOOLEANI_VPROC glGetBooleani_v;
927 PFNGLGETINTEGERI_VPROC glGetIntegeri_v;
928 PFNGLENABLEIPROC glEnablei;
929 PFNGLDISABLEIPROC glDisablei;
930 PFNGLISENABLEDIPROC glIsEnabledi;
931 PFNGLBEGINTRANSFORMFEEDBACKPROC glBeginTransformFeedback;
932 PFNGLENDTRANSFORMFEEDBACKPROC glEndTransformFeedback;
933 PFNGLBINDBUFFERRANGEPROC glBindBufferRange;
934 PFNGLBINDBUFFERBASEPROC glBindBufferBase;
935 PFNGLTRANSFORMFEEDBACKVARYINGSPROC glTransformFeedbackVaryings;
936 PFNGLGETTRANSFORMFEEDBACKVARYINGPROC glGetTransformFeedbackVarying;
937 PFNGLCLAMPCOLORPROC glClampColor;
938 PFNGLBEGINCONDITIONALRENDERPROC glBeginConditionalRender;
939 PFNGLENDCONDITIONALRENDERPROC glEndConditionalRender;
940 PFNGLVERTEXATTRIBIPOINTERPROC glVertexAttribIPointer;
941 PFNGLGETVERTEXATTRIBIIVPROC glGetVertexAttribIiv;
942 PFNGLGETVERTEXATTRIBIUIVPROC glGetVertexAttribIuiv;
943 PFNGLVERTEXATTRIBI1IPROC glVertexAttribI1i;
944 PFNGLVERTEXATTRIBI2IPROC glVertexAttribI2i;
945 PFNGLVERTEXATTRIBI3IPROC glVertexAttribI3i;
946 PFNGLVERTEXATTRIBI4IPROC glVertexAttribI4i;
947 PFNGLVERTEXATTRIBI1UIPROC glVertexAttribI1ui;
948 PFNGLVERTEXATTRIBI2UIPROC glVertexAttribI2ui;
949 PFNGLVERTEXATTRIBI3UIPROC glVertexAttribI3ui;
950 PFNGLVERTEXATTRIBI4UIPROC glVertexAttribI4ui;
951 PFNGLVERTEXATTRIBI1IVPROC glVertexAttribI1iv;
952 PFNGLVERTEXATTRIBI2IVPROC glVertexAttribI2iv;
953 PFNGLVERTEXATTRIBI3IVPROC glVertexAttribI3iv;
954 PFNGLVERTEXATTRIBI4IVPROC glVertexAttribI4iv;
955 PFNGLVERTEXATTRIBI1UIVPROC glVertexAttribI1uiv;
956 PFNGLVERTEXATTRIBI2UIVPROC glVertexAttribI2uiv;
957 PFNGLVERTEXATTRIBI3UIVPROC glVertexAttribI3uiv;
958 PFNGLVERTEXATTRIBI4UIVPROC glVertexAttribI4uiv;
959 PFNGLVERTEXATTRIBI4BVPROC glVertexAttribI4bv;
960 PFNGLVERTEXATTRIBI4SVPROC glVertexAttribI4sv;
961 PFNGLVERTEXATTRIBI4UBVPROC glVertexAttribI4ubv;
962 PFNGLVERTEXATTRIBI4USVPROC glVertexAttribI4usv;
963 PFNGLGETUNIFORMUIVPROC glGetUniformuiv;
964 PFNGLBINDFRAGDATALOCATIONPROC glBindFragDataLocation;
965 PFNGLGETFRAGDATALOCATIONPROC glGetFragDataLocation;
966 PFNGLUNIFORM1UIPROC glUniform1ui;
967 PFNGLUNIFORM2UIPROC glUniform2ui;
968 PFNGLUNIFORM3UIPROC glUniform3ui;
969 PFNGLUNIFORM4UIPROC glUniform4ui;
970 PFNGLUNIFORM1UIVPROC glUniform1uiv;
971 PFNGLUNIFORM2UIVPROC glUniform2uiv;
972 PFNGLUNIFORM3UIVPROC glUniform3uiv;
973 PFNGLUNIFORM4UIVPROC glUniform4uiv;
974 PFNGLTEXPARAMETERIIVPROC glTexParameterIiv;
975 PFNGLTEXPARAMETERIUIVPROC glTexParameterIuiv;
976 PFNGLGETTEXPARAMETERIIVPROC glGetTexParameterIiv;
977 PFNGLGETTEXPARAMETERIUIVPROC glGetTexParameterIuiv;
978 PFNGLCLEARBUFFERIVPROC glClearBufferiv;
979 PFNGLCLEARBUFFERUIVPROC glClearBufferuiv;
980 PFNGLCLEARBUFFERFVPROC glClearBufferfv;
981 PFNGLCLEARBUFFERFIPROC glClearBufferfi;
982 PFNGLGETSTRINGIPROC glGetStringi;
983
984public: //! @name GL_ARB_uniform_buffer_object (added to OpenGL 3.1 core)
985
986 PFNGLGETUNIFORMINDICESPROC glGetUniformIndices;
987 PFNGLGETACTIVEUNIFORMSIVPROC glGetActiveUniformsiv;
988 PFNGLGETACTIVEUNIFORMNAMEPROC glGetActiveUniformName;
989 PFNGLGETUNIFORMBLOCKINDEXPROC glGetUniformBlockIndex;
990 PFNGLGETACTIVEUNIFORMBLOCKIVPROC glGetActiveUniformBlockiv;
991 PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC glGetActiveUniformBlockName;
992 PFNGLUNIFORMBLOCKBINDINGPROC glUniformBlockBinding;
993
994public: //! @name GL_ARB_copy_buffer (added to OpenGL 3.1 core)
995
996 PFNGLCOPYBUFFERSUBDATAPROC glCopyBufferSubData;
997
998public: //! @name OpenGL 3.1
999
1000 PFNGLDRAWARRAYSINSTANCEDPROC glDrawArraysInstanced;
1001 PFNGLDRAWELEMENTSINSTANCEDPROC glDrawElementsInstanced;
1002 PFNGLTEXBUFFERPROC glTexBuffer;
1003 PFNGLPRIMITIVERESTARTINDEXPROC glPrimitiveRestartIndex;
1004
1005public: //! @name GL_ARB_draw_elements_base_vertex (added to OpenGL 3.2 core)
1006
1007 PFNGLDRAWELEMENTSBASEVERTEXPROC glDrawElementsBaseVertex;
1008 PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC glDrawRangeElementsBaseVertex;
1009 PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC glDrawElementsInstancedBaseVertex;
1010 PFNGLMULTIDRAWELEMENTSBASEVERTEXPROC glMultiDrawElementsBaseVertex;
1011
1012public: //! @name GL_ARB_provoking_vertex (added to OpenGL 3.2 core)
1013
1014 PFNGLPROVOKINGVERTEXPROC glProvokingVertex;
1015
1016public: //! @name GL_ARB_sync (added to OpenGL 3.2 core)
1017
1018 PFNGLFENCESYNCPROC glFenceSync;
1019 PFNGLISSYNCPROC glIsSync;
1020 PFNGLDELETESYNCPROC glDeleteSync;
1021 PFNGLCLIENTWAITSYNCPROC glClientWaitSync;
1022 PFNGLWAITSYNCPROC glWaitSync;
1023 PFNGLGETINTEGER64VPROC glGetInteger64v;
1024 PFNGLGETSYNCIVPROC glGetSynciv;
1025
1026public: //! @name GL_ARB_texture_multisample (added to OpenGL 3.2 core)
1027
1028 PFNGLTEXIMAGE2DMULTISAMPLEPROC glTexImage2DMultisample;
1029 PFNGLTEXIMAGE3DMULTISAMPLEPROC glTexImage3DMultisample;
1030 PFNGLGETMULTISAMPLEFVPROC glGetMultisamplefv;
1031 PFNGLSAMPLEMASKIPROC glSampleMaski;
1032
1033public: //! @name OpenGL 3.2
1034
1035 PFNGLGETINTEGER64I_VPROC glGetInteger64i_v;
1036 PFNGLGETBUFFERPARAMETERI64VPROC glGetBufferParameteri64v;
1037 PFNGLFRAMEBUFFERTEXTUREPROC glFramebufferTexture;
1038
1039public: //! @name GL_ARB_blend_func_extended (added to OpenGL 3.3 core)
1040
1041 PFNGLBINDFRAGDATALOCATIONINDEXEDPROC glBindFragDataLocationIndexed;
1042 PFNGLGETFRAGDATAINDEXPROC glGetFragDataIndex;
1043
1044public: //! @name GL_ARB_sampler_objects (added to OpenGL 3.3 core)
1045
1046 PFNGLGENSAMPLERSPROC glGenSamplers;
1047 PFNGLDELETESAMPLERSPROC glDeleteSamplers;
1048 PFNGLISSAMPLERPROC glIsSampler;
1049 PFNGLBINDSAMPLERPROC glBindSampler;
1050 PFNGLSAMPLERPARAMETERIPROC glSamplerParameteri;
1051 PFNGLSAMPLERPARAMETERIVPROC glSamplerParameteriv;
1052 PFNGLSAMPLERPARAMETERFPROC glSamplerParameterf;
1053 PFNGLSAMPLERPARAMETERFVPROC glSamplerParameterfv;
1054 PFNGLSAMPLERPARAMETERIIVPROC glSamplerParameterIiv;
1055 PFNGLSAMPLERPARAMETERIUIVPROC glSamplerParameterIuiv;
1056 PFNGLGETSAMPLERPARAMETERIVPROC glGetSamplerParameteriv;
1057 PFNGLGETSAMPLERPARAMETERIIVPROC glGetSamplerParameterIiv;
1058 PFNGLGETSAMPLERPARAMETERFVPROC glGetSamplerParameterfv;
1059 PFNGLGETSAMPLERPARAMETERIUIVPROC glGetSamplerParameterIuiv;
1060
1061public: //! @name GL_ARB_timer_query (added to OpenGL 3.3 core)
1062
1063 PFNGLQUERYCOUNTERPROC glQueryCounter;
1064 PFNGLGETQUERYOBJECTI64VPROC glGetQueryObjecti64v;
1065 PFNGLGETQUERYOBJECTUI64VPROC glGetQueryObjectui64v;
1066
1067public: //! @name GL_ARB_vertex_type_2_10_10_10_rev (added to OpenGL 3.3 core)
1068
1069 PFNGLVERTEXP2UIPROC glVertexP2ui;
1070 PFNGLVERTEXP2UIVPROC glVertexP2uiv;
1071 PFNGLVERTEXP3UIPROC glVertexP3ui;
1072 PFNGLVERTEXP3UIVPROC glVertexP3uiv;
1073 PFNGLVERTEXP4UIPROC glVertexP4ui;
1074 PFNGLVERTEXP4UIVPROC glVertexP4uiv;
1075 PFNGLTEXCOORDP1UIPROC glTexCoordP1ui;
1076 PFNGLTEXCOORDP1UIVPROC glTexCoordP1uiv;
1077 PFNGLTEXCOORDP2UIPROC glTexCoordP2ui;
1078 PFNGLTEXCOORDP2UIVPROC glTexCoordP2uiv;
1079 PFNGLTEXCOORDP3UIPROC glTexCoordP3ui;
1080 PFNGLTEXCOORDP3UIVPROC glTexCoordP3uiv;
1081 PFNGLTEXCOORDP4UIPROC glTexCoordP4ui;
1082 PFNGLTEXCOORDP4UIVPROC glTexCoordP4uiv;
1083 PFNGLMULTITEXCOORDP1UIPROC glMultiTexCoordP1ui;
1084 PFNGLMULTITEXCOORDP1UIVPROC glMultiTexCoordP1uiv;
1085 PFNGLMULTITEXCOORDP2UIPROC glMultiTexCoordP2ui;
1086 PFNGLMULTITEXCOORDP2UIVPROC glMultiTexCoordP2uiv;
1087 PFNGLMULTITEXCOORDP3UIPROC glMultiTexCoordP3ui;
1088 PFNGLMULTITEXCOORDP3UIVPROC glMultiTexCoordP3uiv;
1089 PFNGLMULTITEXCOORDP4UIPROC glMultiTexCoordP4ui;
1090 PFNGLMULTITEXCOORDP4UIVPROC glMultiTexCoordP4uiv;
1091 PFNGLNORMALP3UIPROC glNormalP3ui;
1092 PFNGLNORMALP3UIVPROC glNormalP3uiv;
1093 PFNGLCOLORP3UIPROC glColorP3ui;
1094 PFNGLCOLORP3UIVPROC glColorP3uiv;
1095 PFNGLCOLORP4UIPROC glColorP4ui;
1096 PFNGLCOLORP4UIVPROC glColorP4uiv;
1097 PFNGLSECONDARYCOLORP3UIPROC glSecondaryColorP3ui;
1098 PFNGLSECONDARYCOLORP3UIVPROC glSecondaryColorP3uiv;
1099 PFNGLVERTEXATTRIBP1UIPROC glVertexAttribP1ui;
1100 PFNGLVERTEXATTRIBP1UIVPROC glVertexAttribP1uiv;
1101 PFNGLVERTEXATTRIBP2UIPROC glVertexAttribP2ui;
1102 PFNGLVERTEXATTRIBP2UIVPROC glVertexAttribP2uiv;
1103 PFNGLVERTEXATTRIBP3UIPROC glVertexAttribP3ui;
1104 PFNGLVERTEXATTRIBP3UIVPROC glVertexAttribP3uiv;
1105 PFNGLVERTEXATTRIBP4UIPROC glVertexAttribP4ui;
1106 PFNGLVERTEXATTRIBP4UIVPROC glVertexAttribP4uiv;
1107
1108public: //! @name OpenGL 3.3
1109
1110 PFNGLVERTEXATTRIBDIVISORPROC glVertexAttribDivisor;
1111
1112public: //! @name GL_ARB_draw_indirect (added to OpenGL 4.0 core)
1113
1114 PFNGLDRAWARRAYSINDIRECTPROC glDrawArraysIndirect;
1115 PFNGLDRAWELEMENTSINDIRECTPROC glDrawElementsIndirect;
1116
1117public: //! @name GL_ARB_gpu_shader_fp64 (added to OpenGL 4.0 core)
1118
1119 PFNGLUNIFORM1DPROC glUniform1d;
1120 PFNGLUNIFORM2DPROC glUniform2d;
1121 PFNGLUNIFORM3DPROC glUniform3d;
1122 PFNGLUNIFORM4DPROC glUniform4d;
1123 PFNGLUNIFORM1DVPROC glUniform1dv;
1124 PFNGLUNIFORM2DVPROC glUniform2dv;
1125 PFNGLUNIFORM3DVPROC glUniform3dv;
1126 PFNGLUNIFORM4DVPROC glUniform4dv;
1127 PFNGLUNIFORMMATRIX2DVPROC glUniformMatrix2dv;
1128 PFNGLUNIFORMMATRIX3DVPROC glUniformMatrix3dv;
1129 PFNGLUNIFORMMATRIX4DVPROC glUniformMatrix4dv;
1130 PFNGLUNIFORMMATRIX2X3DVPROC glUniformMatrix2x3dv;
1131 PFNGLUNIFORMMATRIX2X4DVPROC glUniformMatrix2x4dv;
1132 PFNGLUNIFORMMATRIX3X2DVPROC glUniformMatrix3x2dv;
1133 PFNGLUNIFORMMATRIX3X4DVPROC glUniformMatrix3x4dv;
1134 PFNGLUNIFORMMATRIX4X2DVPROC glUniformMatrix4x2dv;
1135 PFNGLUNIFORMMATRIX4X3DVPROC glUniformMatrix4x3dv;
1136 PFNGLGETUNIFORMDVPROC glGetUniformdv;
1137
1138public: //! @name GL_ARB_shader_subroutine (added to OpenGL 4.0 core)
1139
1140 PFNGLGETSUBROUTINEUNIFORMLOCATIONPROC glGetSubroutineUniformLocation;
1141 PFNGLGETSUBROUTINEINDEXPROC glGetSubroutineIndex;
1142 PFNGLGETACTIVESUBROUTINEUNIFORMIVPROC glGetActiveSubroutineUniformiv;
1143 PFNGLGETACTIVESUBROUTINEUNIFORMNAMEPROC glGetActiveSubroutineUniformName;
1144 PFNGLGETACTIVESUBROUTINENAMEPROC glGetActiveSubroutineName;
1145 PFNGLUNIFORMSUBROUTINESUIVPROC glUniformSubroutinesuiv;
1146 PFNGLGETUNIFORMSUBROUTINEUIVPROC glGetUniformSubroutineuiv;
1147 PFNGLGETPROGRAMSTAGEIVPROC glGetProgramStageiv;
1148
1149public: //! @name GL_ARB_tessellation_shader (added to OpenGL 4.0 core)
1150
1151 PFNGLPATCHPARAMETERIPROC glPatchParameteri;
1152 PFNGLPATCHPARAMETERFVPROC glPatchParameterfv;
1153
1154public: //! @name GL_ARB_transform_feedback2 (added to OpenGL 4.0 core)
1155
1156 PFNGLBINDTRANSFORMFEEDBACKPROC glBindTransformFeedback;
1157 PFNGLDELETETRANSFORMFEEDBACKSPROC glDeleteTransformFeedbacks;
1158 PFNGLGENTRANSFORMFEEDBACKSPROC glGenTransformFeedbacks;
1159 PFNGLISTRANSFORMFEEDBACKPROC glIsTransformFeedback;
1160 PFNGLPAUSETRANSFORMFEEDBACKPROC glPauseTransformFeedback;
1161 PFNGLRESUMETRANSFORMFEEDBACKPROC glResumeTransformFeedback;
1162 PFNGLDRAWTRANSFORMFEEDBACKPROC glDrawTransformFeedback;
1163
1164public: //! @name GL_ARB_transform_feedback3 (added to OpenGL 4.0 core)
1165
1166 PFNGLDRAWTRANSFORMFEEDBACKSTREAMPROC glDrawTransformFeedbackStream;
1167 PFNGLBEGINQUERYINDEXEDPROC glBeginQueryIndexed;
1168 PFNGLENDQUERYINDEXEDPROC glEndQueryIndexed;
1169 PFNGLGETQUERYINDEXEDIVPROC glGetQueryIndexediv;
1170
1171public: //! @name OpenGL 4.0
1172
1173 PFNGLMINSAMPLESHADINGPROC glMinSampleShading;
1174 PFNGLBLENDEQUATIONIPROC glBlendEquationi;
1175 PFNGLBLENDEQUATIONSEPARATEIPROC glBlendEquationSeparatei;
1176 PFNGLBLENDFUNCIPROC glBlendFunci;
1177 PFNGLBLENDFUNCSEPARATEIPROC glBlendFuncSeparatei;
1178
1179public: //! @name GL_ARB_ES2_compatibility (added to OpenGL 4.1 core)
1180
1181 PFNGLRELEASESHADERCOMPILERPROC glReleaseShaderCompiler;
1182 PFNGLSHADERBINARYPROC glShaderBinary;
1183 PFNGLGETSHADERPRECISIONFORMATPROC glGetShaderPrecisionFormat;
1184 PFNGLDEPTHRANGEFPROC glDepthRangef;
1185 PFNGLCLEARDEPTHFPROC glClearDepthf;
1186
1187public: //! @name GL_ARB_get_program_binary (added to OpenGL 4.1 core)
1188
1189 PFNGLGETPROGRAMBINARYPROC glGetProgramBinary;
1190 PFNGLPROGRAMBINARYPROC glProgramBinary;
1191 PFNGLPROGRAMPARAMETERIPROC glProgramParameteri;
1192
1193public: //! @name GL_ARB_separate_shader_objects (added to OpenGL 4.1 core)
1194
1195 PFNGLUSEPROGRAMSTAGESPROC glUseProgramStages;
1196 PFNGLACTIVESHADERPROGRAMPROC glActiveShaderProgram;
1197 PFNGLCREATESHADERPROGRAMVPROC glCreateShaderProgramv;
1198 PFNGLBINDPROGRAMPIPELINEPROC glBindProgramPipeline;
1199 PFNGLDELETEPROGRAMPIPELINESPROC glDeleteProgramPipelines;
1200 PFNGLGENPROGRAMPIPELINESPROC glGenProgramPipelines;
1201 PFNGLISPROGRAMPIPELINEPROC glIsProgramPipeline;
1202 PFNGLGETPROGRAMPIPELINEIVPROC glGetProgramPipelineiv;
1203 PFNGLPROGRAMUNIFORM1IPROC glProgramUniform1i;
1204 PFNGLPROGRAMUNIFORM1IVPROC glProgramUniform1iv;
1205 PFNGLPROGRAMUNIFORM1FPROC glProgramUniform1f;
1206 PFNGLPROGRAMUNIFORM1FVPROC glProgramUniform1fv;
1207 PFNGLPROGRAMUNIFORM1DPROC glProgramUniform1d;
1208 PFNGLPROGRAMUNIFORM1DVPROC glProgramUniform1dv;
1209 PFNGLPROGRAMUNIFORM1UIPROC glProgramUniform1ui;
1210 PFNGLPROGRAMUNIFORM1UIVPROC glProgramUniform1uiv;
1211 PFNGLPROGRAMUNIFORM2IPROC glProgramUniform2i;
1212 PFNGLPROGRAMUNIFORM2IVPROC glProgramUniform2iv;
1213 PFNGLPROGRAMUNIFORM2FPROC glProgramUniform2f;
1214 PFNGLPROGRAMUNIFORM2FVPROC glProgramUniform2fv;
1215 PFNGLPROGRAMUNIFORM2DPROC glProgramUniform2d;
1216 PFNGLPROGRAMUNIFORM2DVPROC glProgramUniform2dv;
1217 PFNGLPROGRAMUNIFORM2UIPROC glProgramUniform2ui;
1218 PFNGLPROGRAMUNIFORM2UIVPROC glProgramUniform2uiv;
1219 PFNGLPROGRAMUNIFORM3IPROC glProgramUniform3i;
1220 PFNGLPROGRAMUNIFORM3IVPROC glProgramUniform3iv;
1221 PFNGLPROGRAMUNIFORM3FPROC glProgramUniform3f;
1222 PFNGLPROGRAMUNIFORM3FVPROC glProgramUniform3fv;
1223 PFNGLPROGRAMUNIFORM3DPROC glProgramUniform3d;
1224 PFNGLPROGRAMUNIFORM3DVPROC glProgramUniform3dv;
1225 PFNGLPROGRAMUNIFORM3UIPROC glProgramUniform3ui;
1226 PFNGLPROGRAMUNIFORM3UIVPROC glProgramUniform3uiv;
1227 PFNGLPROGRAMUNIFORM4IPROC glProgramUniform4i;
1228 PFNGLPROGRAMUNIFORM4IVPROC glProgramUniform4iv;
1229 PFNGLPROGRAMUNIFORM4FPROC glProgramUniform4f;
1230 PFNGLPROGRAMUNIFORM4FVPROC glProgramUniform4fv;
1231 PFNGLPROGRAMUNIFORM4DPROC glProgramUniform4d;
1232 PFNGLPROGRAMUNIFORM4DVPROC glProgramUniform4dv;
1233 PFNGLPROGRAMUNIFORM4UIPROC glProgramUniform4ui;
1234 PFNGLPROGRAMUNIFORM4UIVPROC glProgramUniform4uiv;
1235 PFNGLPROGRAMUNIFORMMATRIX2FVPROC glProgramUniformMatrix2fv;
1236 PFNGLPROGRAMUNIFORMMATRIX3FVPROC glProgramUniformMatrix3fv;
1237 PFNGLPROGRAMUNIFORMMATRIX4FVPROC glProgramUniformMatrix4fv;
1238 PFNGLPROGRAMUNIFORMMATRIX2DVPROC glProgramUniformMatrix2dv;
1239 PFNGLPROGRAMUNIFORMMATRIX3DVPROC glProgramUniformMatrix3dv;
1240 PFNGLPROGRAMUNIFORMMATRIX4DVPROC glProgramUniformMatrix4dv;
1241 PFNGLPROGRAMUNIFORMMATRIX2X3FVPROC glProgramUniformMatrix2x3fv;
1242 PFNGLPROGRAMUNIFORMMATRIX3X2FVPROC glProgramUniformMatrix3x2fv;
1243 PFNGLPROGRAMUNIFORMMATRIX2X4FVPROC glProgramUniformMatrix2x4fv;
1244 PFNGLPROGRAMUNIFORMMATRIX4X2FVPROC glProgramUniformMatrix4x2fv;
1245 PFNGLPROGRAMUNIFORMMATRIX3X4FVPROC glProgramUniformMatrix3x4fv;
1246 PFNGLPROGRAMUNIFORMMATRIX4X3FVPROC glProgramUniformMatrix4x3fv;
1247 PFNGLPROGRAMUNIFORMMATRIX2X3DVPROC glProgramUniformMatrix2x3dv;
1248 PFNGLPROGRAMUNIFORMMATRIX3X2DVPROC glProgramUniformMatrix3x2dv;
1249 PFNGLPROGRAMUNIFORMMATRIX2X4DVPROC glProgramUniformMatrix2x4dv;
1250 PFNGLPROGRAMUNIFORMMATRIX4X2DVPROC glProgramUniformMatrix4x2dv;
1251 PFNGLPROGRAMUNIFORMMATRIX3X4DVPROC glProgramUniformMatrix3x4dv;
1252 PFNGLPROGRAMUNIFORMMATRIX4X3DVPROC glProgramUniformMatrix4x3dv;
1253 PFNGLVALIDATEPROGRAMPIPELINEPROC glValidateProgramPipeline;
1254 PFNGLGETPROGRAMPIPELINEINFOLOGPROC glGetProgramPipelineInfoLog;
1255
1256public: //! @name GL_ARB_vertex_attrib_64bit (added to OpenGL 4.1 core)
1257
1258 PFNGLVERTEXATTRIBL1DPROC glVertexAttribL1d;
1259 PFNGLVERTEXATTRIBL2DPROC glVertexAttribL2d;
1260 PFNGLVERTEXATTRIBL3DPROC glVertexAttribL3d;
1261 PFNGLVERTEXATTRIBL4DPROC glVertexAttribL4d;
1262 PFNGLVERTEXATTRIBL1DVPROC glVertexAttribL1dv;
1263 PFNGLVERTEXATTRIBL2DVPROC glVertexAttribL2dv;
1264 PFNGLVERTEXATTRIBL3DVPROC glVertexAttribL3dv;
1265 PFNGLVERTEXATTRIBL4DVPROC glVertexAttribL4dv;
1266 PFNGLVERTEXATTRIBLPOINTERPROC glVertexAttribLPointer;
1267 PFNGLGETVERTEXATTRIBLDVPROC glGetVertexAttribLdv;
1268
1269public: //! @name GL_ARB_viewport_array (added to OpenGL 4.1 core)
1270
1271 PFNGLVIEWPORTARRAYVPROC glViewportArrayv;
1272 PFNGLVIEWPORTINDEXEDFPROC glViewportIndexedf;
1273 PFNGLVIEWPORTINDEXEDFVPROC glViewportIndexedfv;
1274 PFNGLSCISSORARRAYVPROC glScissorArrayv;
1275 PFNGLSCISSORINDEXEDPROC glScissorIndexed;
1276 PFNGLSCISSORINDEXEDVPROC glScissorIndexedv;
1277 PFNGLDEPTHRANGEARRAYVPROC glDepthRangeArrayv;
1278 PFNGLDEPTHRANGEINDEXEDPROC glDepthRangeIndexed;
1279 PFNGLGETFLOATI_VPROC glGetFloati_v;
1280 PFNGLGETDOUBLEI_VPROC glGetDoublei_v;
1281
1282public: //! @name OpenGL 4.1
1283
1284 //
1285
1286public: //! @name GL_ARB_base_instance (added to OpenGL 4.2 core)
1287
1288 PFNGLDRAWARRAYSINSTANCEDBASEINSTANCEPROC glDrawArraysInstancedBaseInstance;
1289 PFNGLDRAWELEMENTSINSTANCEDBASEINSTANCEPROC glDrawElementsInstancedBaseInstance;
1290 PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXBASEINSTANCEPROC glDrawElementsInstancedBaseVertexBaseInstance;
1291
1292public: //! @name GL_ARB_transform_feedback_instanced (added to OpenGL 4.2 core)
1293
1294 PFNGLDRAWTRANSFORMFEEDBACKINSTANCEDPROC glDrawTransformFeedbackInstanced;
1295 PFNGLDRAWTRANSFORMFEEDBACKSTREAMINSTANCEDPROC glDrawTransformFeedbackStreamInstanced;
1296
1297public: //! @name GL_ARB_internalformat_query (added to OpenGL 4.2 core)
1298
1299 PFNGLGETINTERNALFORMATIVPROC glGetInternalformativ;
1300
1301public: //! @name GL_ARB_shader_atomic_counters (added to OpenGL 4.2 core)
1302
1303 PFNGLGETACTIVEATOMICCOUNTERBUFFERIVPROC glGetActiveAtomicCounterBufferiv;
1304
1305public: //! @name GL_ARB_shader_image_load_store (added to OpenGL 4.2 core)
1306
1307 PFNGLBINDIMAGETEXTUREPROC glBindImageTexture;
1308 PFNGLMEMORYBARRIERPROC glMemoryBarrier;
1309
1310public: //! @name GL_ARB_texture_storage (added to OpenGL 4.2 core)
1311
1312 PFNGLTEXSTORAGE1DPROC glTexStorage1D;
1313 PFNGLTEXSTORAGE2DPROC glTexStorage2D;
1314 PFNGLTEXSTORAGE3DPROC glTexStorage3D;
1315 PFNGLTEXTURESTORAGE1DEXTPROC glTextureStorage1DEXT;
1316 PFNGLTEXTURESTORAGE2DEXTPROC glTextureStorage2DEXT;
1317 PFNGLTEXTURESTORAGE3DEXTPROC glTextureStorage3DEXT;
1318
1319public: //! @name OpenGL 4.2
1320
1321public: //! @name OpenGL 4.3
1322
1323 PFNGLCLEARBUFFERDATAPROC glClearBufferData;
1324 PFNGLCLEARBUFFERSUBDATAPROC glClearBufferSubData;
1325 PFNGLDISPATCHCOMPUTEPROC glDispatchCompute;
1326 PFNGLDISPATCHCOMPUTEINDIRECTPROC glDispatchComputeIndirect;
1327 PFNGLCOPYIMAGESUBDATAPROC glCopyImageSubData;
1328 PFNGLFRAMEBUFFERPARAMETERIPROC glFramebufferParameteri;
1329 PFNGLGETFRAMEBUFFERPARAMETERIVPROC glGetFramebufferParameteriv;
1330 PFNGLGETINTERNALFORMATI64VPROC glGetInternalformati64v;
1331 PFNGLINVALIDATETEXSUBIMAGEPROC glInvalidateTexSubImage;
1332 PFNGLINVALIDATETEXIMAGEPROC glInvalidateTexImage;
1333 PFNGLINVALIDATEBUFFERSUBDATAPROC glInvalidateBufferSubData;
1334 PFNGLINVALIDATEBUFFERDATAPROC glInvalidateBufferData;
1335 PFNGLINVALIDATEFRAMEBUFFERPROC glInvalidateFramebuffer;
1336 PFNGLINVALIDATESUBFRAMEBUFFERPROC glInvalidateSubFramebuffer;
1337 PFNGLMULTIDRAWARRAYSINDIRECTPROC glMultiDrawArraysIndirect;
1338 PFNGLMULTIDRAWELEMENTSINDIRECTPROC glMultiDrawElementsIndirect;
1339 PFNGLGETPROGRAMINTERFACEIVPROC glGetProgramInterfaceiv;
1340 PFNGLGETPROGRAMRESOURCEINDEXPROC glGetProgramResourceIndex;
1341 PFNGLGETPROGRAMRESOURCENAMEPROC glGetProgramResourceName;
1342 PFNGLGETPROGRAMRESOURCEIVPROC glGetProgramResourceiv;
1343 PFNGLGETPROGRAMRESOURCELOCATIONPROC glGetProgramResourceLocation;
1344 PFNGLGETPROGRAMRESOURCELOCATIONINDEXPROC glGetProgramResourceLocationIndex;
1345 PFNGLSHADERSTORAGEBLOCKBINDINGPROC glShaderStorageBlockBinding;
1346 PFNGLTEXBUFFERRANGEPROC glTexBufferRange;
1347 PFNGLTEXSTORAGE2DMULTISAMPLEPROC glTexStorage2DMultisample;
1348 PFNGLTEXSTORAGE3DMULTISAMPLEPROC glTexStorage3DMultisample;
1349 PFNGLTEXTUREVIEWPROC glTextureView;
1350 PFNGLBINDVERTEXBUFFERPROC glBindVertexBuffer;
1351 PFNGLVERTEXATTRIBFORMATPROC glVertexAttribFormat;
1352 PFNGLVERTEXATTRIBIFORMATPROC glVertexAttribIFormat;
1353 PFNGLVERTEXATTRIBLFORMATPROC glVertexAttribLFormat;
1354 PFNGLVERTEXATTRIBBINDINGPROC glVertexAttribBinding;
1355 PFNGLVERTEXBINDINGDIVISORPROC glVertexBindingDivisor;
1356 PFNGLDEBUGMESSAGECONTROLPROC glDebugMessageControl;
1357 PFNGLDEBUGMESSAGEINSERTPROC glDebugMessageInsert;
1358 PFNGLDEBUGMESSAGECALLBACKPROC glDebugMessageCallback;
1359 PFNGLGETDEBUGMESSAGELOGPROC glGetDebugMessageLog;
1360 PFNGLPUSHDEBUGGROUPPROC glPushDebugGroup;
1361 PFNGLPOPDEBUGGROUPPROC glPopDebugGroup;
1362 PFNGLOBJECTLABELPROC glObjectLabel;
1363 PFNGLGETOBJECTLABELPROC glGetObjectLabel;
1364 PFNGLOBJECTPTRLABELPROC glObjectPtrLabel;
1365 PFNGLGETOBJECTPTRLABELPROC glGetObjectPtrLabel;
1366
1367public: //! @name OpenGL 4.4
1368
1369 PFNGLBUFFERSTORAGEPROC glBufferStorage;
1370 PFNGLCLEARTEXIMAGEPROC glClearTexImage;
1371 PFNGLCLEARTEXSUBIMAGEPROC glClearTexSubImage;
1372 PFNGLBINDBUFFERSBASEPROC glBindBuffersBase;
1373 PFNGLBINDBUFFERSRANGEPROC glBindBuffersRange;
1374 PFNGLBINDTEXTURESPROC glBindTextures;
1375 PFNGLBINDSAMPLERSPROC glBindSamplers;
1376 PFNGLBINDIMAGETEXTURESPROC glBindImageTextures;
1377 PFNGLBINDVERTEXBUFFERSPROC glBindVertexBuffers;
1378
1379public: //! @name GL_ARB_debug_output (optional)
1380
1381 PFNGLDEBUGMESSAGECONTROLARBPROC glDebugMessageControlARB;
1382 PFNGLDEBUGMESSAGEINSERTARBPROC glDebugMessageInsertARB;
1383 PFNGLDEBUGMESSAGECALLBACKARBPROC glDebugMessageCallbackARB;
1384 PFNGLGETDEBUGMESSAGELOGARBPROC glGetDebugMessageLogARB;
1385
1386public: //! @name GL_EXT_geometry_shader4
1387
1388 PFNGLPROGRAMPARAMETERIEXTPROC glProgramParameteriEXT;
1389
25ef750e 1390public: //! @name GL_ARB_bindless_texture
1391
1392 PFNGLGETTEXTUREHANDLEARBPROC glGetTextureHandleARB;
1393 PFNGLGETTEXTURESAMPLERHANDLEARBPROC glGetTextureSamplerHandleARB;
1394 PFNGLMAKETEXTUREHANDLERESIDENTARBPROC glMakeTextureHandleResidentARB;
1395 PFNGLMAKETEXTUREHANDLENONRESIDENTARBPROC glMakeTextureHandleNonResidentARB;
1396 PFNGLGETIMAGEHANDLEARBPROC glGetImageHandleARB;
1397 PFNGLMAKEIMAGEHANDLERESIDENTARBPROC glMakeImageHandleResidentARB;
1398 PFNGLMAKEIMAGEHANDLENONRESIDENTARBPROC glMakeImageHandleNonResidentARB;
1399 PFNGLUNIFORMHANDLEUI64ARBPROC glUniformHandleui64ARB;
1400 PFNGLUNIFORMHANDLEUI64VARBPROC glUniformHandleui64vARB;
1401 PFNGLPROGRAMUNIFORMHANDLEUI64ARBPROC glProgramUniformHandleui64ARB;
1402 PFNGLPROGRAMUNIFORMHANDLEUI64VARBPROC glProgramUniformHandleui64vARB;
1403 PFNGLISTEXTUREHANDLERESIDENTARBPROC glIsTextureHandleResidentARB;
1404 PFNGLISIMAGEHANDLERESIDENTARBPROC glIsImageHandleResidentARB;
1405 PFNGLVERTEXATTRIBL1UI64ARBPROC glVertexAttribL1ui64ARB;
1406 PFNGLVERTEXATTRIBL1UI64VARBPROC glVertexAttribL1ui64vARB;
1407 PFNGLGETVERTEXATTRIBLUI64VARBPROC glGetVertexAttribLui64vARB;
1408
01ca42b2 1409#if defined(_WIN32)
1410public: //! @name wgl extensions
1411
1412 typedef const char* (WINAPI *wglGetExtensionsStringARB_t)(HDC theDeviceContext);
1413 wglGetExtensionsStringARB_t wglGetExtensionsStringARB;
1414
1415 typedef BOOL (WINAPI *wglSwapIntervalEXT_t)(int theInterval);
1416 wglSwapIntervalEXT_t wglSwapIntervalEXT;
1417
1418 // WGL_ARB_pixel_format
1419
1420#ifndef WGL_NUMBER_PIXEL_FORMATS_ARB
1421 #define WGL_NUMBER_PIXEL_FORMATS_ARB 0x2000
1422 #define WGL_DRAW_TO_WINDOW_ARB 0x2001
1423 #define WGL_DRAW_TO_BITMAP_ARB 0x2002
1424 #define WGL_ACCELERATION_ARB 0x2003
1425 #define WGL_NEED_PALETTE_ARB 0x2004
1426 #define WGL_NEED_SYSTEM_PALETTE_ARB 0x2005
1427 #define WGL_SWAP_LAYER_BUFFERS_ARB 0x2006
1428 #define WGL_SWAP_METHOD_ARB 0x2007
1429 #define WGL_NUMBER_OVERLAYS_ARB 0x2008
1430 #define WGL_NUMBER_UNDERLAYS_ARB 0x2009
1431 #define WGL_TRANSPARENT_ARB 0x200A
1432 #define WGL_TRANSPARENT_RED_VALUE_ARB 0x2037
1433 #define WGL_TRANSPARENT_GREEN_VALUE_ARB 0x2038
1434 #define WGL_TRANSPARENT_BLUE_VALUE_ARB 0x2039
1435 #define WGL_TRANSPARENT_ALPHA_VALUE_ARB 0x203A
1436 #define WGL_TRANSPARENT_INDEX_VALUE_ARB 0x203B
1437 #define WGL_SHARE_DEPTH_ARB 0x200C
1438 #define WGL_SHARE_STENCIL_ARB 0x200D
1439 #define WGL_SHARE_ACCUM_ARB 0x200E
1440 #define WGL_SUPPORT_GDI_ARB 0x200F
1441 #define WGL_SUPPORT_OPENGL_ARB 0x2010
1442 #define WGL_DOUBLE_BUFFER_ARB 0x2011
1443 #define WGL_STEREO_ARB 0x2012
1444 #define WGL_PIXEL_TYPE_ARB 0x2013
1445 #define WGL_COLOR_BITS_ARB 0x2014
1446 #define WGL_RED_BITS_ARB 0x2015
1447 #define WGL_RED_SHIFT_ARB 0x2016
1448 #define WGL_GREEN_BITS_ARB 0x2017
1449 #define WGL_GREEN_SHIFT_ARB 0x2018
1450 #define WGL_BLUE_BITS_ARB 0x2019
1451 #define WGL_BLUE_SHIFT_ARB 0x201A
1452 #define WGL_ALPHA_BITS_ARB 0x201B
1453 #define WGL_ALPHA_SHIFT_ARB 0x201C
1454 #define WGL_ACCUM_BITS_ARB 0x201D
1455 #define WGL_ACCUM_RED_BITS_ARB 0x201E
1456 #define WGL_ACCUM_GREEN_BITS_ARB 0x201F
1457 #define WGL_ACCUM_BLUE_BITS_ARB 0x2020
1458 #define WGL_ACCUM_ALPHA_BITS_ARB 0x2021
1459 #define WGL_DEPTH_BITS_ARB 0x2022
1460 #define WGL_STENCIL_BITS_ARB 0x2023
1461 #define WGL_AUX_BUFFERS_ARB 0x2024
1462
1463 #define WGL_NO_ACCELERATION_ARB 0x2025
1464 #define WGL_GENERIC_ACCELERATION_ARB 0x2026
1465 #define WGL_FULL_ACCELERATION_ARB 0x2027
1466
1467 #define WGL_SWAP_EXCHANGE_ARB 0x2028
1468 #define WGL_SWAP_COPY_ARB 0x2029
1469 #define WGL_SWAP_UNDEFINED_ARB 0x202A
1470
1471 #define WGL_TYPE_RGBA_ARB 0x202B
1472 #define WGL_TYPE_COLORINDEX_ARB 0x202C
1473
1474#endif // WGL_NUMBER_PIXEL_FORMATS_ARB
1475
1476 // WGL_ARB_multisample
1477#ifndef WGL_SAMPLE_BUFFERS_ARB
1478 #define WGL_SAMPLE_BUFFERS_ARB 0x2041
1479 #define WGL_SAMPLES_ARB 0x2042
1480#endif
1481
1482 // WGL_ARB_create_context_robustness
1483#ifndef WGL_CONTEXT_ROBUST_ACCESS_BIT_ARB
1484 #define WGL_CONTEXT_ROBUST_ACCESS_BIT_ARB 0x00000004
1485 #define WGL_CONTEXT_RESET_NOTIFICATION_STRATEGY_ARB 0x8256
1486 #define WGL_NO_RESET_NOTIFICATION_ARB 0x8261
1487 #define WGL_LOSE_CONTEXT_ON_RESET_ARB 0x8252
1488#endif
1489
1490 typedef BOOL (WINAPI *wglChoosePixelFormatARB_t)
1491 (HDC theDevCtx,
1492 const int* theIntAttribs,
1493 const float* theFloatAttribs,
1494 unsigned int theMaxFormats,
1495 int* theFormatsOut,
1496 unsigned int* theNumFormatsOut);
1497 wglChoosePixelFormatARB_t wglChoosePixelFormatARB;
1498
1499 // WGL_ARB_create_context_profile
1500
1501#ifndef WGL_CONTEXT_MAJOR_VERSION_ARB
1502 #define WGL_CONTEXT_MAJOR_VERSION_ARB 0x2091
1503 #define WGL_CONTEXT_MINOR_VERSION_ARB 0x2092
1504 #define WGL_CONTEXT_LAYER_PLANE_ARB 0x2093
1505 #define WGL_CONTEXT_FLAGS_ARB 0x2094
1506 #define WGL_CONTEXT_PROFILE_MASK_ARB 0x9126
1507
1508 // WGL_CONTEXT_FLAGS bits
1509 #define WGL_CONTEXT_DEBUG_BIT_ARB 0x0001
1510 #define WGL_CONTEXT_FORWARD_COMPATIBLE_BIT_ARB 0x0002
1511
1512 // WGL_CONTEXT_PROFILE_MASK_ARB bits
1513 #define WGL_CONTEXT_CORE_PROFILE_BIT_ARB 0x00000001
1514 #define WGL_CONTEXT_COMPATIBILITY_PROFILE_BIT_ARB 0x00000002
1515#endif // WGL_CONTEXT_MAJOR_VERSION_ARB
1516
1517 typedef HGLRC (WINAPI *wglCreateContextAttribsARB_t)(HDC theDevCtx,
1518 HGLRC theShareContext,
1519 const int* theAttribs);
1520 wglCreateContextAttribsARB_t wglCreateContextAttribsARB;
1521
1522 // WGL_NV_DX_interop
1523
1524 typedef BOOL (WINAPI *wglDXSetResourceShareHandleNV_t)(void* theObjectD3d, HANDLE theShareHandle);
1525 typedef HANDLE (WINAPI *wglDXOpenDeviceNV_t )(void* theDeviceD3d);
1526 typedef BOOL (WINAPI *wglDXCloseDeviceNV_t )(HANDLE theDeviceIOP);
1527 typedef HANDLE (WINAPI *wglDXRegisterObjectNV_t )(HANDLE theDeviceIOP,
1528 void* theObjectD3d,
1529 GLuint theName,
1530 GLenum theType,
1531 GLenum theAccess);
1532 typedef BOOL (WINAPI *wglDXUnregisterObjectNV_t)(HANDLE theDeviceIOP,
1533 HANDLE theObject);
1534 typedef BOOL (WINAPI *wglDXObjectAccessNV_t )(HANDLE theObject,
1535 GLenum theAccess);
1536 typedef BOOL (WINAPI *wglDXLockObjectsNV_t )(HANDLE theDeviceIOP,
1537 GLint theCount,
1538 HANDLE* theObjects);
1539 typedef BOOL (WINAPI *wglDXUnlockObjectsNV_t )(HANDLE theDeviceIOP,
1540 GLint theCount,
1541 HANDLE* theObjects);
1542
1543 wglDXSetResourceShareHandleNV_t wglDXSetResourceShareHandleNV;
1544 wglDXOpenDeviceNV_t wglDXOpenDeviceNV;
1545 wglDXCloseDeviceNV_t wglDXCloseDeviceNV;
1546 wglDXRegisterObjectNV_t wglDXRegisterObjectNV;
1547 wglDXUnregisterObjectNV_t wglDXUnregisterObjectNV;
1548 wglDXObjectAccessNV_t wglDXObjectAccessNV;
1549 wglDXLockObjectsNV_t wglDXLockObjectsNV;
1550 wglDXUnlockObjectsNV_t wglDXUnlockObjectsNV;
1551
1552#ifndef WGL_ACCESS_READ_WRITE_NV
1553 #define WGL_ACCESS_READ_ONLY_NV 0x0000
1554 #define WGL_ACCESS_READ_WRITE_NV 0x0001
1555 #define WGL_ACCESS_WRITE_DISCARD_NV 0x0002
1556#endif
1557
1558#elif defined(__APPLE__)
1559public: //! @name CGL extensions
1560
1561#else
1562public: //! @name glX extensions
1563
1564 // GLX_EXT_swap_control
1565 //typedef int (*glXSwapIntervalEXT_t)(Display* theDisplay, GLXDrawable theDrawable, int theInterval);
1566 typedef int (*glXSwapIntervalEXT_t)();
1567 glXSwapIntervalEXT_t glXSwapIntervalEXT;
1568
1569 typedef int (*glXSwapIntervalSGI_t)(int theInterval);
1570 glXSwapIntervalSGI_t glXSwapIntervalSGI;
1571#endif
1572
ca3c13d1 1573#endif // OpenGL ES vs. desktop
1574
01ca42b2 1575};
1576
1577#endif // _OpenGl_GlFunctions_Header