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