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