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