0032217: Visualization, TKOpenGl - drop propagation of unused FFP functions
[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>
42451ec0 49 // macOS 10.4 deprecated OpenGL framework - suppress useless warnings
50 #define GL_SILENCE_DEPRECATION
a2e4f780 51 #if defined(TARGET_OS_IPHONE) && TARGET_OS_IPHONE
c68c346d 52 #include <OpenGLES/ES3/gl.h>
a2e4f780 53 #else
54 #include <OpenGL/gl.h>
a2e4f780 55 #endif
01ca42b2 56 #define __X_GL_H // prevent chaotic gl.h inclusions to avoid compile errors
565baee6 57#elif defined(HAVE_GLES2) || defined(OCCT_UWP) || defined(__ANDROID__) || defined(__QNX__) || defined(__EMSCRIPTEN__)
1ce0716b 58 #if defined(_WIN32)
59 // Angle OpenGL ES headers do not define function prototypes even for core functions,
60 // however OCCT is expected to be linked against libGLESv2
61 #define GL_GLEXT_PROTOTYPES
62 #endif
c68c346d 63 #include <GLES3/gl3.h>
a2e4f780 64#else
65 #include <GL/gl.h>
a2e4f780 66#endif
ca3c13d1 67
565baee6 68#if !defined(HAVE_EGL) && (defined(__ANDROID__) || defined(__QNX__) || defined(__EMSCRIPTEN__) || defined(HAVE_GLES2) || defined(OCCT_UWP))
da8bb41d 69 #define HAVE_EGL
70#endif
71
01ca42b2 72#include <InterfaceGraphic.hxx>
01ca42b2 73
872f98d9 74#if defined(GL_ES_VERSION_2_0)
75 #include <OpenGl_GLESExtensions.hxx>
76#else
77 // GL version can be defined by system gl.h header
ca3c13d1 78 #undef GL_VERSION_1_2
79 #undef GL_VERSION_1_3
80 #undef GL_VERSION_1_4
81 #undef GL_VERSION_1_5
82 #undef GL_VERSION_2_0
83 #undef GL_VERSION_2_1
84 #undef GL_VERSION_3_0
85 #undef GL_VERSION_3_1
86 #undef GL_VERSION_3_2
87 #undef GL_VERSION_3_3
88 #undef GL_VERSION_4_0
89 #undef GL_VERSION_4_1
90 #undef GL_VERSION_4_2
91 #undef GL_VERSION_4_3
92 #undef GL_VERSION_4_4
00ea319b 93 #undef GL_VERSION_4_5
ca3c13d1 94
95 // include glext.h provided by Khronos group
96 #include <glext.h>
97#endif
01ca42b2 98
e44b849d 99class OpenGl_Context;
100
01ca42b2 101//! Mega structure defines the complete list of OpenGL functions.
102struct OpenGl_GlFunctions
103{
104
a46ab511 105 //! Check glGetError(); defined for debugging purposes.
106 //! @return TRUE on error
107 Standard_EXPORT bool debugPrintError (const char* theName) const;
108
e44b849d 109 //! Load functions.
110 Standard_EXPORT void load (OpenGl_Context& theCtx,
111 Standard_Boolean theIsCoreProfile);
112
a46ab511 113 // This debug macros can be enabled to help debugging OpenGL implementations
114 // without solid / working debugging capabilities.
115 //#define OpenGl_TRACE(theName) {OpenGl_GlFunctions::debugPrintError(#theName);}
116 #define OpenGl_TRACE(theName)
117
ca3c13d1 118public: //! @name OpenGL ES 1.1
119
120#if defined(GL_ES_VERSION_2_0)
121
faff3767 122 inline void glActiveTexture (GLenum texture) const
ca3c13d1 123 {
124 ::glActiveTexture (texture);
a46ab511 125 OpenGl_TRACE(glActiveTexture)
ca3c13d1 126 }
127
faff3767 128 inline void glCompressedTexImage2D (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data) const
ca3c13d1 129 {
130 ::glCompressedTexImage2D (target, level, internalformat, width, height, border, imageSize, data);
a46ab511 131 OpenGl_TRACE(glCompressedTexImage2D)
ca3c13d1 132 }
133
faff3767 134 inline void glCompressedTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data) const
ca3c13d1 135 {
136 ::glCompressedTexSubImage2D (target, level, xoffset, yoffset, width, height, format, imageSize, data);
a46ab511 137 OpenGl_TRACE(glCompressedTexSubImage2D)
ca3c13d1 138 }
139
faff3767 140 inline void glBindBuffer (GLenum target, GLuint buffer) const
ca3c13d1 141 {
142 ::glBindBuffer (target, buffer);
a46ab511 143 OpenGl_TRACE(glBindBuffer)
ca3c13d1 144 }
145
faff3767 146 inline void glBufferData (GLenum target, GLsizeiptr size, const void* data, GLenum usage) const
ca3c13d1 147 {
148 ::glBufferData (target, size, data, usage);
a46ab511 149 OpenGl_TRACE(glBufferData)
ca3c13d1 150 }
151
faff3767 152 inline void glBufferSubData (GLenum target, GLintptr offset, GLsizeiptr size, const void* data) const
ca3c13d1 153 {
154 ::glBufferSubData (target, offset, size, data);
a46ab511 155 OpenGl_TRACE(glBufferSubData)
ca3c13d1 156 }
157
faff3767 158 inline void glDeleteBuffers (GLsizei n, const GLuint *buffers) const
ca3c13d1 159 {
160 ::glDeleteBuffers (n, buffers);
a46ab511 161 OpenGl_TRACE(glDeleteBuffers)
ca3c13d1 162 }
163
faff3767 164 inline void glDeleteTextures (GLsizei n, const GLuint *textures) const
ca3c13d1 165 {
166 ::glDeleteTextures (n, textures);
a46ab511 167 OpenGl_TRACE(glDeleteTextures)
ca3c13d1 168 }
169
faff3767 170 inline void glDepthFunc (GLenum func) const
ca3c13d1 171 {
172 ::glDepthFunc (func);
a46ab511 173 OpenGl_TRACE(glDepthFunc)
ca3c13d1 174 }
175
faff3767 176 inline void glDepthMask (GLboolean flag) const
ca3c13d1 177 {
178 ::glDepthMask (flag);
a46ab511 179 OpenGl_TRACE(glDepthMask)
ca3c13d1 180 }
181
faff3767 182 inline void glDepthRangef (GLfloat n, GLfloat f) const
ca3c13d1 183 {
184 ::glDepthRangef (n, f);
a46ab511 185 OpenGl_TRACE(glDepthRangef)
ca3c13d1 186 }
187
faff3767 188 inline void glGenBuffers (GLsizei n, GLuint *buffers) const
ca3c13d1 189 {
190 ::glGenBuffers (n, buffers);
a46ab511 191 OpenGl_TRACE(glGenBuffers)
ca3c13d1 192 }
193
faff3767 194 inline void glGenTextures (GLsizei n, GLuint *textures) const
ca3c13d1 195 {
196 ::glGenTextures (n, textures);
a46ab511 197 OpenGl_TRACE(glGenTextures)
ca3c13d1 198 }
199
faff3767 200 inline void glGetBufferParameteriv (GLenum target, GLenum pname, GLint* params) const
ca3c13d1 201 {
202 ::glGetBufferParameteriv (target, pname, params);
a46ab511 203 OpenGl_TRACE(glGetBufferParameteriv)
ca3c13d1 204 }
205
faff3767 206 inline GLboolean glIsBuffer (GLuint buffer) const
ca3c13d1 207 {
208 return ::glIsBuffer (buffer);
209 }
210
faff3767 211 inline void glSampleCoverage (GLfloat value, GLboolean invert) const
ca3c13d1 212 {
213 ::glSampleCoverage (value, invert);
a46ab511 214 OpenGl_TRACE(glSampleCoverage)
ca3c13d1 215 }
216
faff3767 217 inline void glMultiDrawElements (GLenum theMode, const GLsizei* theCount, GLenum theType, const void* const* theIndices, GLsizei theDrawCount) const
ca3c13d1 218 {
219 if (theCount == NULL
220 || theIndices == NULL)
221 {
222 return;
223 }
224
225 for (GLsizei aBatchIter = 0; aBatchIter < theDrawCount; ++aBatchIter)
226 {
227 ::glDrawElements (theMode, theCount[aBatchIter], theType, theIndices[aBatchIter]);
228 }
a46ab511 229 OpenGl_TRACE(glMultiDrawElements)
ca3c13d1 230 }
231
232#endif
233
234public: //! @name OpenGL ES 2.0
235
236#if defined(GL_ES_VERSION_2_0)
faff3767 237 inline void glBlendColor (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) const
ca3c13d1 238 {
239 ::glBlendColor (red, green, blue, alpha);
a46ab511 240 OpenGl_TRACE(glBlendColor)
ca3c13d1 241 }
242
faff3767 243 inline void glBlendEquation (GLenum mode) const
ca3c13d1 244 {
245 ::glBlendEquation (mode);
a46ab511 246 OpenGl_TRACE(glBlendEquation)
ca3c13d1 247 }
248
faff3767 249 inline void glBlendFuncSeparate (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha) const
ca3c13d1 250 {
251 ::glBlendFuncSeparate (sfactorRGB, dfactorRGB, sfactorAlpha, dfactorAlpha);
a46ab511 252 OpenGl_TRACE(glBlendFuncSeparate)
ca3c13d1 253 }
254
faff3767 255 inline void glBlendEquationSeparate (GLenum modeRGB, GLenum modeAlpha) const
ca3c13d1 256 {
257 ::glBlendEquationSeparate (modeRGB, modeAlpha);
a46ab511 258 OpenGl_TRACE(glBlendEquationSeparate)
ca3c13d1 259 }
260
faff3767 261 inline void glStencilOpSeparate (GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass) const
ca3c13d1 262 {
263 ::glStencilOpSeparate (face, sfail, dpfail, dppass);
a46ab511 264 OpenGl_TRACE(glStencilOpSeparate)
ca3c13d1 265 }
266
faff3767 267 inline void glStencilFuncSeparate (GLenum face, GLenum func, GLint ref, GLuint mask) const
ca3c13d1 268 {
269 ::glStencilFuncSeparate (face, func, ref, mask);
a46ab511 270 OpenGl_TRACE(glStencilFuncSeparate)
ca3c13d1 271 }
272
faff3767 273 inline void glStencilMaskSeparate (GLenum face, GLuint mask) const
ca3c13d1 274 {
275 ::glStencilMaskSeparate (face, mask);
a46ab511 276 OpenGl_TRACE(glStencilMaskSeparate)
ca3c13d1 277 }
278
faff3767 279 inline void glAttachShader (GLuint program, GLuint shader) const
ca3c13d1 280 {
281 ::glAttachShader (program, shader);
a46ab511 282 OpenGl_TRACE(glAttachShader)
ca3c13d1 283 }
284
faff3767 285 inline void glBindAttribLocation (GLuint program, GLuint index, const GLchar *name) const
ca3c13d1 286 {
287 ::glBindAttribLocation (program, index, name);
a46ab511 288 OpenGl_TRACE(glBindAttribLocation)
ca3c13d1 289 }
290
faff3767 291 inline void glBindFramebuffer (GLenum target, GLuint framebuffer) const
ca3c13d1 292 {
293 ::glBindFramebuffer (target, framebuffer);
a46ab511 294 OpenGl_TRACE(glBindFramebuffer)
ca3c13d1 295 }
296
faff3767 297 inline void glBindRenderbuffer (GLenum target, GLuint renderbuffer) const
ca3c13d1 298 {
299 ::glBindRenderbuffer (target, renderbuffer);
a46ab511 300 OpenGl_TRACE(glBindRenderbuffer)
ca3c13d1 301 }
302
faff3767 303 inline GLenum glCheckFramebufferStatus (GLenum target) const
ca3c13d1 304 {
305 return ::glCheckFramebufferStatus (target);
306 }
307
faff3767 308 inline void glCompileShader (GLuint shader) const
ca3c13d1 309 {
310 ::glCompileShader (shader);
a46ab511 311 OpenGl_TRACE(glCompileShader)
ca3c13d1 312 }
313
faff3767 314 inline GLuint glCreateProgram() const
ca3c13d1 315 {
316 return ::glCreateProgram();
317 }
318
faff3767 319 inline GLuint glCreateShader (GLenum type) const
ca3c13d1 320 {
321 return ::glCreateShader (type);
322 }
323
faff3767 324 inline void glDeleteFramebuffers (GLsizei n, const GLuint *framebuffers) const
ca3c13d1 325 {
326 ::glDeleteFramebuffers (n, framebuffers);
a46ab511 327 OpenGl_TRACE(glDeleteFramebuffers)
ca3c13d1 328 }
329
faff3767 330 inline void glDeleteProgram (GLuint program) const
ca3c13d1 331 {
332 ::glDeleteProgram (program);
a46ab511 333 OpenGl_TRACE(glDeleteProgram)
ca3c13d1 334 }
335
faff3767 336 inline void glDeleteRenderbuffers (GLsizei n, const GLuint *renderbuffers) const
ca3c13d1 337 {
338 ::glDeleteRenderbuffers (n, renderbuffers);
a46ab511 339 OpenGl_TRACE(glDeleteRenderbuffers)
ca3c13d1 340 }
341
faff3767 342 inline void glDeleteShader (GLuint shader) const
ca3c13d1 343 {
344 ::glDeleteShader (shader);
a46ab511 345 OpenGl_TRACE(glDeleteShader)
ca3c13d1 346 }
347
faff3767 348 inline void glDetachShader (GLuint program, GLuint shader) const
ca3c13d1 349 {
350 ::glDetachShader (program, shader);
a46ab511 351 OpenGl_TRACE(glDetachShader)
ca3c13d1 352 }
353
faff3767 354 inline void glDisableVertexAttribArray (GLuint index) const
ca3c13d1 355 {
356 ::glDisableVertexAttribArray (index);
a46ab511 357 OpenGl_TRACE(glDisableVertexAttribArray)
ca3c13d1 358 }
359
faff3767 360 inline void glEnableVertexAttribArray (GLuint index) const
ca3c13d1 361 {
362 ::glEnableVertexAttribArray (index);
a46ab511 363 OpenGl_TRACE(glEnableVertexAttribArray)
ca3c13d1 364 }
365
faff3767 366 inline void glFramebufferRenderbuffer (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer) const
ca3c13d1 367 {
368 ::glFramebufferRenderbuffer (target, attachment, renderbuffertarget, renderbuffer);
a46ab511 369 OpenGl_TRACE(glFramebufferRenderbuffer)
ca3c13d1 370 }
371
faff3767 372 inline void glFramebufferTexture2D (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level) const
ca3c13d1 373 {
374 ::glFramebufferTexture2D (target, attachment, textarget, texture, level);
a46ab511 375 OpenGl_TRACE(glFramebufferTexture2D)
ca3c13d1 376 }
377
faff3767 378 inline void glGenerateMipmap (GLenum target) const
ca3c13d1 379 {
380 ::glGenerateMipmap (target);
a46ab511 381 OpenGl_TRACE(glGenerateMipmap)
ca3c13d1 382 }
383
faff3767 384 inline void glGenFramebuffers (GLsizei n, GLuint *framebuffers) const
ca3c13d1 385 {
386 ::glGenFramebuffers (n, framebuffers);
a46ab511 387 OpenGl_TRACE(glGenFramebuffers)
ca3c13d1 388 }
389
faff3767 390 inline void glGenRenderbuffers (GLsizei n, GLuint *renderbuffers) const
ca3c13d1 391 {
392 ::glGenRenderbuffers (n, renderbuffers);
a46ab511 393 OpenGl_TRACE(glGenRenderbuffers)
ca3c13d1 394 }
395
faff3767 396 inline void glGetActiveAttrib (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint* size, GLenum *type, GLchar *name) const
ca3c13d1 397 {
398 ::glGetActiveAttrib (program, index, bufSize, length, size, type, name);
a46ab511 399 OpenGl_TRACE(glGetActiveAttrib)
ca3c13d1 400 }
401
faff3767 402 inline void glGetActiveUniform (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint* size, GLenum *type, GLchar *name) const
ca3c13d1 403 {
404 ::glGetActiveUniform (program, index, bufSize, length, size, type, name);
a46ab511 405 OpenGl_TRACE(glGetActiveUniform)
ca3c13d1 406 }
407
faff3767 408 inline void glGetAttachedShaders (GLuint program, GLsizei maxCount, GLsizei *count, GLuint *shaders) const
ca3c13d1 409 {
410 ::glGetAttachedShaders (program, maxCount, count, shaders);
a46ab511 411 OpenGl_TRACE(glGetAttachedShaders)
ca3c13d1 412 }
413
faff3767 414 inline GLint glGetAttribLocation (GLuint program, const GLchar *name) const
ca3c13d1 415 {
a46ab511 416 const GLint aRes = ::glGetAttribLocation (program, name);
417 OpenGl_TRACE(glGetAttribLocation)
418 return aRes;
ca3c13d1 419 }
420
faff3767 421 inline void glGetFramebufferAttachmentParameteriv (GLenum target, GLenum attachment, GLenum pname, GLint* params) const
ca3c13d1 422 {
423 ::glGetFramebufferAttachmentParameteriv (target, attachment, pname, params);
a46ab511 424 OpenGl_TRACE(glGetFramebufferAttachmentParameteriv)
ca3c13d1 425 }
426
faff3767 427 inline void glGetProgramiv (GLuint program, GLenum pname, GLint* params) const
ca3c13d1 428 {
429 ::glGetProgramiv (program, pname, params);
a46ab511 430 OpenGl_TRACE(glGetProgramiv)
ca3c13d1 431 }
432
faff3767 433 inline void glGetProgramInfoLog (GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog) const
ca3c13d1 434 {
435 ::glGetProgramInfoLog (program, bufSize, length, infoLog);
a46ab511 436 OpenGl_TRACE(glGetProgramInfoLog)
ca3c13d1 437 }
438
faff3767 439 inline void glGetRenderbufferParameteriv (GLenum target, GLenum pname, GLint* params) const
ca3c13d1 440 {
441 ::glGetRenderbufferParameteriv (target, pname, params);
a46ab511 442 OpenGl_TRACE(glGetRenderbufferParameteriv)
ca3c13d1 443 }
444
faff3767 445 inline void glGetShaderiv (GLuint shader, GLenum pname, GLint* params) const
ca3c13d1 446 {
447 ::glGetShaderiv (shader, pname, params);
a46ab511 448 OpenGl_TRACE(glGetShaderiv)
ca3c13d1 449 }
450
faff3767 451 inline void glGetShaderInfoLog (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog) const
ca3c13d1 452 {
453 ::glGetShaderInfoLog (shader, bufSize, length, infoLog);
a46ab511 454 OpenGl_TRACE(glGetShaderInfoLog)
ca3c13d1 455 }
456
faff3767 457 inline void glGetShaderPrecisionFormat (GLenum shadertype, GLenum precisiontype, GLint* range, GLint* precision) const
ca3c13d1 458 {
459 ::glGetShaderPrecisionFormat (shadertype, precisiontype, range, precision);
a46ab511 460 OpenGl_TRACE(glGetShaderPrecisionFormat)
ca3c13d1 461 }
462
faff3767 463 inline void glGetShaderSource (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source) const
ca3c13d1 464 {
465 ::glGetShaderSource (shader, bufSize, length, source);
a46ab511 466 OpenGl_TRACE(glGetShaderSource)
ca3c13d1 467 }
468
faff3767 469 inline void glGetUniformfv (GLuint program, GLint location, GLfloat* params) const
ca3c13d1 470 {
471 ::glGetUniformfv (program, location, params);
a46ab511 472 OpenGl_TRACE(glGetUniformfv)
ca3c13d1 473 }
474
faff3767 475 inline void glGetUniformiv (GLuint program, GLint location, GLint* params) const
ca3c13d1 476 {
477 ::glGetUniformiv (program, location, params);
a46ab511 478 OpenGl_TRACE(glGetUniformiv)
ca3c13d1 479 }
480
faff3767 481 GLint glGetUniformLocation (GLuint program, const GLchar *name) const
ca3c13d1 482 {
a46ab511 483 const GLint aRes = ::glGetUniformLocation (program, name);
484 OpenGl_TRACE(glGetUniformLocation)
485 return aRes;
ca3c13d1 486 }
487
faff3767 488 inline void glGetVertexAttribfv (GLuint index, GLenum pname, GLfloat* params) const
ca3c13d1 489 {
490 ::glGetVertexAttribfv (index, pname, params);
a46ab511 491 OpenGl_TRACE(glGetVertexAttribfv)
ca3c13d1 492 }
493
faff3767 494 inline void glGetVertexAttribiv (GLuint index, GLenum pname, GLint* params) const
ca3c13d1 495 {
496 ::glGetVertexAttribiv (index, pname, params);
a46ab511 497 OpenGl_TRACE(glGetVertexAttribiv)
ca3c13d1 498 }
499
faff3767 500 inline void glGetVertexAttribPointerv (GLuint index, GLenum pname, void* *pointer) const
ca3c13d1 501 {
502 ::glGetVertexAttribPointerv (index, pname, pointer);
a46ab511 503 OpenGl_TRACE(glGetVertexAttribPointerv)
ca3c13d1 504 }
505
faff3767 506 inline GLboolean glIsFramebuffer (GLuint framebuffer) const
ca3c13d1 507 {
508 return ::glIsFramebuffer (framebuffer);
509 }
510
faff3767 511 inline GLboolean glIsProgram (GLuint program) const
ca3c13d1 512 {
513 return ::glIsProgram (program);
514 }
515
faff3767 516 inline GLboolean glIsRenderbuffer (GLuint renderbuffer) const
ca3c13d1 517 {
518 return ::glIsRenderbuffer (renderbuffer);
519 }
520
faff3767 521 inline GLboolean glIsShader (GLuint shader) const
ca3c13d1 522 {
523 return ::glIsShader (shader);
524 }
525
faff3767 526 inline void glLinkProgram (GLuint program) const
ca3c13d1 527 {
528 ::glLinkProgram (program);
a46ab511 529 OpenGl_TRACE(glLinkProgram)
ca3c13d1 530 }
531
faff3767 532 inline void glReleaseShaderCompiler() const
ca3c13d1 533 {
534 ::glReleaseShaderCompiler();
a46ab511 535 OpenGl_TRACE(glReleaseShaderCompiler)
ca3c13d1 536 }
537
faff3767 538 inline void glRenderbufferStorage (GLenum target, GLenum internalformat, GLsizei width, GLsizei height) const
ca3c13d1 539 {
540 ::glRenderbufferStorage (target, internalformat, width, height);
a46ab511 541 OpenGl_TRACE(glRenderbufferStorage)
ca3c13d1 542 }
543
faff3767 544 inline void glShaderBinary (GLsizei count, const GLuint *shaders, GLenum binaryformat, const void* binary, GLsizei length) const
ca3c13d1 545 {
546 ::glShaderBinary (count, shaders, binaryformat, binary, length);
a46ab511 547 OpenGl_TRACE(glShaderBinary)
ca3c13d1 548 }
549
faff3767 550 inline void glShaderSource (GLuint shader, GLsizei count, const GLchar** string, const GLint* length) const
ca3c13d1 551 {
552 ::glShaderSource (shader, count, string, length);
a46ab511 553 OpenGl_TRACE(glShaderSource)
ca3c13d1 554 }
555
faff3767 556 inline void glUniform1f (GLint location, GLfloat v0) const
ca3c13d1 557 {
558 ::glUniform1f (location, v0);
a46ab511 559 OpenGl_TRACE(glUniform1f)
ca3c13d1 560 }
561
faff3767 562 inline void glUniform1fv (GLint location, GLsizei count, const GLfloat* value) const
ca3c13d1 563 {
564 ::glUniform1fv (location, count, value);
a46ab511 565 OpenGl_TRACE(glUniform1fv)
ca3c13d1 566 }
567
faff3767 568 inline void glUniform1i (GLint location, GLint v0) const
ca3c13d1 569 {
570 ::glUniform1i (location, v0);
a46ab511 571 OpenGl_TRACE(glUniform1i)
ca3c13d1 572 }
573
faff3767 574 inline void glUniform1iv (GLint location, GLsizei count, const GLint* value) const
ca3c13d1 575 {
576 ::glUniform1iv (location, count, value);
a46ab511 577 OpenGl_TRACE(glUniform1iv)
ca3c13d1 578 }
579
faff3767 580 inline void glUniform2f (GLint location, GLfloat v0, GLfloat v1) const
ca3c13d1 581 {
582 ::glUniform2f (location, v0, v1);
a46ab511 583 OpenGl_TRACE(glUniform2f)
ca3c13d1 584 }
585
faff3767 586 inline void glUniform2fv (GLint location, GLsizei count, const GLfloat* value) const
ca3c13d1 587 {
588 ::glUniform2fv (location, count, value);
a46ab511 589 OpenGl_TRACE(glUniform2fv)
ca3c13d1 590 }
591
faff3767 592 inline void glUniform2i (GLint location, GLint v0, GLint v1) const
ca3c13d1 593 {
594 ::glUniform2i (location, v0, v1);
a46ab511 595 OpenGl_TRACE(glUniform2i)
ca3c13d1 596 }
597
faff3767 598 inline void glUniform2iv (GLint location, GLsizei count, const GLint* value) const
ca3c13d1 599 {
600 ::glUniform2iv (location, count, value);
a46ab511 601 OpenGl_TRACE(glUniform2iv)
ca3c13d1 602 }
603
faff3767 604 inline void glUniform3f (GLint location, GLfloat v0, GLfloat v1, GLfloat v2) const
ca3c13d1 605 {
606 ::glUniform3f (location, v0, v1, v2);
a46ab511 607 OpenGl_TRACE(glUniform3f)
ca3c13d1 608 }
609
faff3767 610 inline void glUniform3fv (GLint location, GLsizei count, const GLfloat* value) const
ca3c13d1 611 {
612 ::glUniform3fv (location, count, value);
a46ab511 613 OpenGl_TRACE(glUniform3fv)
ca3c13d1 614 }
615
faff3767 616 inline void glUniform3i (GLint location, GLint v0, GLint v1, GLint v2) const
ca3c13d1 617 {
618 ::glUniform3i (location, v0, v1, v2);
a46ab511 619 OpenGl_TRACE(glUniform3i)
ca3c13d1 620 }
621
faff3767 622 inline void glUniform3iv (GLint location, GLsizei count, const GLint* value) const
ca3c13d1 623 {
624 ::glUniform3iv (location, count, value);
a46ab511 625 OpenGl_TRACE(glUniform3iv)
ca3c13d1 626 }
627
faff3767 628 inline void glUniform4f (GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3) const
ca3c13d1 629 {
630 ::glUniform4f (location, v0, v1, v2, v3);
a46ab511 631 OpenGl_TRACE(glUniform4f)
ca3c13d1 632 }
633
faff3767 634 inline void glUniform4fv (GLint location, GLsizei count, const GLfloat* value) const
ca3c13d1 635 {
636 ::glUniform4fv (location, count, value);
a46ab511 637 OpenGl_TRACE(glUniform4fv)
ca3c13d1 638 }
639
faff3767 640 inline void glUniform4i (GLint location, GLint v0, GLint v1, GLint v2, GLint v3) const
ca3c13d1 641 {
642 ::glUniform4i (location, v0, v1, v2, v3);
a46ab511 643 OpenGl_TRACE(glUniform4i)
ca3c13d1 644 }
645
faff3767 646 inline void glUniform4iv (GLint location, GLsizei count, const GLint* value) const
ca3c13d1 647 {
648 ::glUniform4iv (location, count, value);
a46ab511 649 OpenGl_TRACE(glUniform4iv)
ca3c13d1 650 }
651
faff3767 652 inline void glUniformMatrix2fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value) const
ca3c13d1 653 {
654 ::glUniformMatrix2fv (location, count, transpose, value);
a46ab511 655 OpenGl_TRACE(glUniformMatrix2fv)
ca3c13d1 656 }
657
faff3767 658 inline void glUniformMatrix3fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value) const
ca3c13d1 659 {
660 ::glUniformMatrix3fv (location, count, transpose, value);
a46ab511 661 OpenGl_TRACE(glUniformMatrix3fv)
ca3c13d1 662 }
663
faff3767 664 inline void glUniformMatrix4fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value) const
ca3c13d1 665 {
666 ::glUniformMatrix4fv (location, count, transpose, value);
a46ab511 667 OpenGl_TRACE(glUniformMatrix4fv)
ca3c13d1 668 }
669
faff3767 670 inline void glUseProgram (GLuint program) const
ca3c13d1 671 {
672 ::glUseProgram (program);
a46ab511 673 OpenGl_TRACE(glUseProgram)
ca3c13d1 674 }
675
faff3767 676 inline void glValidateProgram (GLuint program) const
ca3c13d1 677 {
678 ::glValidateProgram (program);
a46ab511 679 OpenGl_TRACE(glValidateProgram)
ca3c13d1 680 }
681
faff3767 682 inline void glVertexAttrib1f (GLuint index, GLfloat x) const
ca3c13d1 683 {
684 ::glVertexAttrib1f (index, x);
a46ab511 685 OpenGl_TRACE(glVertexAttrib1f)
ca3c13d1 686 }
687
faff3767 688 inline void glVertexAttrib1fv (GLuint index, const GLfloat* v) const
ca3c13d1 689 {
690 ::glVertexAttrib1fv (index, v);
a46ab511 691 OpenGl_TRACE(glVertexAttrib1fv)
ca3c13d1 692 }
693
faff3767 694 inline void glVertexAttrib2f (GLuint index, GLfloat x, GLfloat y) const
ca3c13d1 695 {
696 ::glVertexAttrib2f (index, x, y);
a46ab511 697 OpenGl_TRACE(glVertexAttrib2f)
ca3c13d1 698 }
699
faff3767 700 inline void glVertexAttrib2fv (GLuint index, const GLfloat* v) const
ca3c13d1 701 {
702 ::glVertexAttrib2fv (index, v);
a46ab511 703 OpenGl_TRACE(glVertexAttrib2fv)
ca3c13d1 704 }
705
faff3767 706 inline void glVertexAttrib3f (GLuint index, GLfloat x, GLfloat y, GLfloat z) const
ca3c13d1 707 {
708 ::glVertexAttrib3f (index, x, y, z);
a46ab511 709 OpenGl_TRACE(glVertexAttrib3f)
ca3c13d1 710 }
711
faff3767 712 inline void glVertexAttrib3fv (GLuint index, const GLfloat* v) const
ca3c13d1 713 {
714 ::glVertexAttrib3fv (index, v);
a46ab511 715 OpenGl_TRACE(glVertexAttrib3fv)
ca3c13d1 716 }
717
faff3767 718 inline void glVertexAttrib4f (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w) const
ca3c13d1 719 {
720 ::glVertexAttrib4f (index, x, y, z, w);
a46ab511 721 OpenGl_TRACE(glVertexAttrib4f)
ca3c13d1 722 }
723
faff3767 724 inline void glVertexAttrib4fv (GLuint index, const GLfloat* v) const
ca3c13d1 725 {
726 ::glVertexAttrib4fv (index, v);
a46ab511 727 OpenGl_TRACE(glVertexAttrib4fv)
ca3c13d1 728 }
729
faff3767 730 inline void glVertexAttribPointer (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void* pointer) const
ca3c13d1 731 {
732 ::glVertexAttribPointer (index, size, type, normalized, stride, pointer);
a46ab511 733 OpenGl_TRACE(glVertexAttribPointer)
ca3c13d1 734 }
735
b86bb3df 736public: //! @name OpenGL ES 3.0
737
872f98d9 738 opencascade::PFNGLREADBUFFERPROC glReadBuffer;
739 opencascade::PFNGLDRAWRANGEELEMENTSPROC glDrawRangeElements;
740 opencascade::PFNGLTEXIMAGE3DPROC glTexImage3D;
741 opencascade::PFNGLTEXSUBIMAGE3DPROC glTexSubImage3D;
742 opencascade::PFNGLCOPYTEXSUBIMAGE3DPROC glCopyTexSubImage3D;
743 opencascade::PFNGLCOMPRESSEDTEXIMAGE3DPROC glCompressedTexImage3D;
744 opencascade::PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC glCompressedTexSubImage3D;
745 opencascade::PFNGLGENQUERIESPROC glGenQueries;
746 opencascade::PFNGLDELETEQUERIESPROC glDeleteQueries;
747 opencascade::PFNGLISQUERYPROC glIsQuery;
748 opencascade::PFNGLBEGINQUERYPROC glBeginQuery;
749 opencascade::PFNGLENDQUERYPROC glEndQuery;
750 opencascade::PFNGLGETQUERYIVPROC glGetQueryiv;
751 opencascade::PFNGLGETQUERYOBJECTUIVPROC glGetQueryObjectuiv;
752 opencascade::PFNGLUNMAPBUFFERPROC glUnmapBuffer;
753 opencascade::PFNGLGETBUFFERPOINTERVPROC glGetBufferPointerv;
754 opencascade::PFNGLDRAWBUFFERSPROC glDrawBuffers;
755 opencascade::PFNGLUNIFORMMATRIX2X3FVPROC glUniformMatrix2x3fv;
756 opencascade::PFNGLUNIFORMMATRIX3X2FVPROC glUniformMatrix3x2fv;
757 opencascade::PFNGLUNIFORMMATRIX2X4FVPROC glUniformMatrix2x4fv;
758 opencascade::PFNGLUNIFORMMATRIX4X2FVPROC glUniformMatrix4x2fv;
759 opencascade::PFNGLUNIFORMMATRIX3X4FVPROC glUniformMatrix3x4fv;
760 opencascade::PFNGLUNIFORMMATRIX4X3FVPROC glUniformMatrix4x3fv;
761 opencascade::PFNGLBLITFRAMEBUFFERPROC glBlitFramebuffer;
762 opencascade::PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC glRenderbufferStorageMultisample;
763 opencascade::PFNGLFRAMEBUFFERTEXTURELAYERPROC glFramebufferTextureLayer;
764 opencascade::PFNGLMAPBUFFERRANGEPROC glMapBufferRange;
765 opencascade::PFNGLFLUSHMAPPEDBUFFERRANGEPROC glFlushMappedBufferRange;
766 opencascade::PFNGLBINDVERTEXARRAYPROC glBindVertexArray;
767 opencascade::PFNGLDELETEVERTEXARRAYSPROC glDeleteVertexArrays;
768 opencascade::PFNGLGENVERTEXARRAYSPROC glGenVertexArrays;
769 opencascade::PFNGLISVERTEXARRAYPROC glIsVertexArray;
770 opencascade::PFNGLGETINTEGERI_VPROC glGetIntegeri_v;
771 opencascade::PFNGLBEGINTRANSFORMFEEDBACKPROC glBeginTransformFeedback;
772 opencascade::PFNGLENDTRANSFORMFEEDBACKPROC glEndTransformFeedback;
773 opencascade::PFNGLBINDBUFFERRANGEPROC glBindBufferRange;
774 opencascade::PFNGLBINDBUFFERBASEPROC glBindBufferBase;
775 opencascade::PFNGLTRANSFORMFEEDBACKVARYINGSPROC glTransformFeedbackVaryings;
776 opencascade::PFNGLGETTRANSFORMFEEDBACKVARYINGPROC glGetTransformFeedbackVarying;
777 opencascade::PFNGLVERTEXATTRIBIPOINTERPROC glVertexAttribIPointer;
778 opencascade::PFNGLGETVERTEXATTRIBIIVPROC glGetVertexAttribIiv;
779 opencascade::PFNGLGETVERTEXATTRIBIUIVPROC glGetVertexAttribIuiv;
780 opencascade::PFNGLVERTEXATTRIBI4IPROC glVertexAttribI4i;
781 opencascade::PFNGLVERTEXATTRIBI4UIPROC glVertexAttribI4ui;
782 opencascade::PFNGLVERTEXATTRIBI4IVPROC glVertexAttribI4iv;
783 opencascade::PFNGLVERTEXATTRIBI4UIVPROC glVertexAttribI4uiv;
784 opencascade::PFNGLGETUNIFORMUIVPROC glGetUniformuiv;
785 opencascade::PFNGLGETFRAGDATALOCATIONPROC glGetFragDataLocation;
786 opencascade::PFNGLUNIFORM1UIPROC glUniform1ui;
787 opencascade::PFNGLUNIFORM2UIPROC glUniform2ui;
788 opencascade::PFNGLUNIFORM3UIPROC glUniform3ui;
789 opencascade::PFNGLUNIFORM4UIPROC glUniform4ui;
790 opencascade::PFNGLUNIFORM1UIVPROC glUniform1uiv;
791 opencascade::PFNGLUNIFORM2UIVPROC glUniform2uiv;
792 opencascade::PFNGLUNIFORM3UIVPROC glUniform3uiv;
793 opencascade::PFNGLUNIFORM4UIVPROC glUniform4uiv;
794 opencascade::PFNGLCLEARBUFFERIVPROC glClearBufferiv;
795 opencascade::PFNGLCLEARBUFFERUIVPROC glClearBufferuiv;
796 opencascade::PFNGLCLEARBUFFERFVPROC glClearBufferfv;
797 opencascade::PFNGLCLEARBUFFERFIPROC glClearBufferfi;
798 opencascade::PFNGLGETSTRINGIPROC glGetStringi;
799 opencascade::PFNGLCOPYBUFFERSUBDATAPROC glCopyBufferSubData;
800 opencascade::PFNGLGETUNIFORMINDICESPROC glGetUniformIndices;
801 opencascade::PFNGLGETACTIVEUNIFORMSIVPROC glGetActiveUniformsiv;
802 opencascade::PFNGLGETUNIFORMBLOCKINDEXPROC glGetUniformBlockIndex;
803 opencascade::PFNGLGETACTIVEUNIFORMBLOCKIVPROC glGetActiveUniformBlockiv;
804 opencascade::PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC glGetActiveUniformBlockName;
805 opencascade::PFNGLUNIFORMBLOCKBINDINGPROC glUniformBlockBinding;
806 opencascade::PFNGLDRAWARRAYSINSTANCEDPROC glDrawArraysInstanced;
807 opencascade::PFNGLDRAWELEMENTSINSTANCEDPROC glDrawElementsInstanced;
808 opencascade::PFNGLFENCESYNCPROC glFenceSync;
809 opencascade::PFNGLISSYNCPROC glIsSync;
810 opencascade::PFNGLDELETESYNCPROC glDeleteSync;
811 opencascade::PFNGLCLIENTWAITSYNCPROC glClientWaitSync;
812 opencascade::PFNGLWAITSYNCPROC glWaitSync;
813 opencascade::PFNGLGETINTEGER64VPROC glGetInteger64v;
814 opencascade::PFNGLGETSYNCIVPROC glGetSynciv;
815 opencascade::PFNGLGETINTEGER64I_VPROC glGetInteger64i_v;
816 opencascade::PFNGLGETBUFFERPARAMETERI64VPROC glGetBufferParameteri64v;
817 opencascade::PFNGLGENSAMPLERSPROC glGenSamplers;
818 opencascade::PFNGLDELETESAMPLERSPROC glDeleteSamplers;
819 opencascade::PFNGLISSAMPLERPROC glIsSampler;
820 opencascade::PFNGLBINDSAMPLERPROC glBindSampler;
821 opencascade::PFNGLSAMPLERPARAMETERIPROC glSamplerParameteri;
822 opencascade::PFNGLSAMPLERPARAMETERIVPROC glSamplerParameteriv;
823 opencascade::PFNGLSAMPLERPARAMETERFPROC glSamplerParameterf;
824 opencascade::PFNGLSAMPLERPARAMETERFVPROC glSamplerParameterfv;
825 opencascade::PFNGLGETSAMPLERPARAMETERIVPROC glGetSamplerParameteriv;
826 opencascade::PFNGLGETSAMPLERPARAMETERFVPROC glGetSamplerParameterfv;
827 opencascade::PFNGLVERTEXATTRIBDIVISORPROC glVertexAttribDivisor;
828 opencascade::PFNGLBINDTRANSFORMFEEDBACKPROC glBindTransformFeedback;
829 opencascade::PFNGLDELETETRANSFORMFEEDBACKSPROC glDeleteTransformFeedbacks;
830 opencascade::PFNGLGENTRANSFORMFEEDBACKSPROC glGenTransformFeedbacks;
831 opencascade::PFNGLISTRANSFORMFEEDBACKPROC glIsTransformFeedback;
832 opencascade::PFNGLPAUSETRANSFORMFEEDBACKPROC glPauseTransformFeedback;
833 opencascade::PFNGLRESUMETRANSFORMFEEDBACKPROC glResumeTransformFeedback;
834 opencascade::PFNGLGETPROGRAMBINARYPROC glGetProgramBinary;
835 opencascade::PFNGLPROGRAMBINARYPROC glProgramBinary;
836 opencascade::PFNGLPROGRAMPARAMETERIPROC glProgramParameteri;
837 opencascade::PFNGLINVALIDATEFRAMEBUFFERPROC glInvalidateFramebuffer;
838 opencascade::PFNGLINVALIDATESUBFRAMEBUFFERPROC glInvalidateSubFramebuffer;
839 opencascade::PFNGLTEXSTORAGE2DPROC glTexStorage2D;
840 opencascade::PFNGLTEXSTORAGE3DPROC glTexStorage3D;
841 opencascade::PFNGLGETINTERNALFORMATIVPROC glGetInternalformativ;
cc8cbabe 842
3c4b62a4 843public: //! @name OpenGL ES 3.1
844
872f98d9 845 opencascade::PFNGLDISPATCHCOMPUTEPROC glDispatchCompute;
846 opencascade::PFNGLDISPATCHCOMPUTEINDIRECTPROC glDispatchComputeIndirect;
847 opencascade::PFNGLDRAWARRAYSINDIRECTPROC glDrawArraysIndirect;
848 opencascade::PFNGLDRAWELEMENTSINDIRECTPROC glDrawElementsIndirect;
849 opencascade::PFNGLFRAMEBUFFERPARAMETERIPROC glFramebufferParameteri;
850 opencascade::PFNGLGETFRAMEBUFFERPARAMETERIVPROC glGetFramebufferParameteriv;
851 opencascade::PFNGLGETPROGRAMINTERFACEIVPROC glGetProgramInterfaceiv;
852 opencascade::PFNGLGETPROGRAMRESOURCEINDEXPROC glGetProgramResourceIndex;
853 opencascade::PFNGLGETPROGRAMRESOURCENAMEPROC glGetProgramResourceName;
854 opencascade::PFNGLGETPROGRAMRESOURCEIVPROC glGetProgramResourceiv;
855 opencascade::PFNGLGETPROGRAMRESOURCELOCATIONPROC glGetProgramResourceLocation;
856 opencascade::PFNGLUSEPROGRAMSTAGESPROC glUseProgramStages;
857 opencascade::PFNGLACTIVESHADERPROGRAMPROC glActiveShaderProgram;
858 opencascade::PFNGLCREATESHADERPROGRAMVPROC glCreateShaderProgramv;
859 opencascade::PFNGLBINDPROGRAMPIPELINEPROC glBindProgramPipeline;
860 opencascade::PFNGLDELETEPROGRAMPIPELINESPROC glDeleteProgramPipelines;
861 opencascade::PFNGLGENPROGRAMPIPELINESPROC glGenProgramPipelines;
862 opencascade::PFNGLISPROGRAMPIPELINEPROC glIsProgramPipeline;
863 opencascade::PFNGLGETPROGRAMPIPELINEIVPROC glGetProgramPipelineiv;
864 opencascade::PFNGLPROGRAMUNIFORM1IPROC glProgramUniform1i;
865 opencascade::PFNGLPROGRAMUNIFORM2IPROC glProgramUniform2i;
866 opencascade::PFNGLPROGRAMUNIFORM3IPROC glProgramUniform3i;
867 opencascade::PFNGLPROGRAMUNIFORM4IPROC glProgramUniform4i;
868 opencascade::PFNGLPROGRAMUNIFORM1UIPROC glProgramUniform1ui;
869 opencascade::PFNGLPROGRAMUNIFORM2UIPROC glProgramUniform2ui;
870 opencascade::PFNGLPROGRAMUNIFORM3UIPROC glProgramUniform3ui;
871 opencascade::PFNGLPROGRAMUNIFORM4UIPROC glProgramUniform4ui;
872 opencascade::PFNGLPROGRAMUNIFORM1FPROC glProgramUniform1f;
873 opencascade::PFNGLPROGRAMUNIFORM2FPROC glProgramUniform2f;
874 opencascade::PFNGLPROGRAMUNIFORM3FPROC glProgramUniform3f;
875 opencascade::PFNGLPROGRAMUNIFORM4FPROC glProgramUniform4f;
876 opencascade::PFNGLPROGRAMUNIFORM1IVPROC glProgramUniform1iv;
877 opencascade::PFNGLPROGRAMUNIFORM2IVPROC glProgramUniform2iv;
878 opencascade::PFNGLPROGRAMUNIFORM3IVPROC glProgramUniform3iv;
879 opencascade::PFNGLPROGRAMUNIFORM4IVPROC glProgramUniform4iv;
880 opencascade::PFNGLPROGRAMUNIFORM1UIVPROC glProgramUniform1uiv;
881 opencascade::PFNGLPROGRAMUNIFORM2UIVPROC glProgramUniform2uiv;
882 opencascade::PFNGLPROGRAMUNIFORM3UIVPROC glProgramUniform3uiv;
883 opencascade::PFNGLPROGRAMUNIFORM4UIVPROC glProgramUniform4uiv;
884 opencascade::PFNGLPROGRAMUNIFORM1FVPROC glProgramUniform1fv;
885 opencascade::PFNGLPROGRAMUNIFORM2FVPROC glProgramUniform2fv;
886 opencascade::PFNGLPROGRAMUNIFORM3FVPROC glProgramUniform3fv;
887 opencascade::PFNGLPROGRAMUNIFORM4FVPROC glProgramUniform4fv;
888 opencascade::PFNGLPROGRAMUNIFORMMATRIX2FVPROC glProgramUniformMatrix2fv;
889 opencascade::PFNGLPROGRAMUNIFORMMATRIX3FVPROC glProgramUniformMatrix3fv;
890 opencascade::PFNGLPROGRAMUNIFORMMATRIX4FVPROC glProgramUniformMatrix4fv;
891 opencascade::PFNGLPROGRAMUNIFORMMATRIX2X3FVPROC glProgramUniformMatrix2x3fv;
892 opencascade::PFNGLPROGRAMUNIFORMMATRIX3X2FVPROC glProgramUniformMatrix3x2fv;
893 opencascade::PFNGLPROGRAMUNIFORMMATRIX2X4FVPROC glProgramUniformMatrix2x4fv;
894 opencascade::PFNGLPROGRAMUNIFORMMATRIX4X2FVPROC glProgramUniformMatrix4x2fv;
895 opencascade::PFNGLPROGRAMUNIFORMMATRIX3X4FVPROC glProgramUniformMatrix3x4fv;
896 opencascade::PFNGLPROGRAMUNIFORMMATRIX4X3FVPROC glProgramUniformMatrix4x3fv;
897 opencascade::PFNGLVALIDATEPROGRAMPIPELINEPROC glValidateProgramPipeline;
898 opencascade::PFNGLGETPROGRAMPIPELINEINFOLOGPROC glGetProgramPipelineInfoLog;
899 opencascade::PFNGLBINDIMAGETEXTUREPROC glBindImageTexture;
900 opencascade::PFNGLGETBOOLEANI_VPROC glGetBooleani_v;
901 opencascade::PFNGLMEMORYBARRIERPROC glMemoryBarrier;
902 opencascade::PFNGLMEMORYBARRIERBYREGIONPROC glMemoryBarrierByRegion;
903 opencascade::PFNGLTEXSTORAGE2DMULTISAMPLEPROC glTexStorage2DMultisample;
904 opencascade::PFNGLGETMULTISAMPLEFVPROC glGetMultisamplefv;
905 opencascade::PFNGLSAMPLEMASKIPROC glSampleMaski;
906 opencascade::PFNGLGETTEXLEVELPARAMETERIVPROC glGetTexLevelParameteriv;
907 opencascade::PFNGLGETTEXLEVELPARAMETERFVPROC glGetTexLevelParameterfv;
908 opencascade::PFNGLBINDVERTEXBUFFERPROC glBindVertexBuffer;
909 opencascade::PFNGLVERTEXATTRIBFORMATPROC glVertexAttribFormat;
910 opencascade::PFNGLVERTEXATTRIBIFORMATPROC glVertexAttribIFormat;
911 opencascade::PFNGLVERTEXATTRIBBINDINGPROC glVertexAttribBinding;
912 opencascade::PFNGLVERTEXBINDINGDIVISORPROC glVertexBindingDivisor;
3c4b62a4 913
20aeeb7b 914public: //! @name OpenGL ES 3.2
915
872f98d9 916 opencascade::PFNGLBLENDBARRIERPROC glBlendBarrier;
917 opencascade::PFNGLCOPYIMAGESUBDATAPROC glCopyImageSubData;
918 opencascade::PFNGLPUSHDEBUGGROUPPROC glPushDebugGroup;
919 opencascade::PFNGLPOPDEBUGGROUPPROC glPopDebugGroup;
920 opencascade::PFNGLOBJECTLABELPROC glObjectLabel;
921 opencascade::PFNGLGETOBJECTLABELPROC glGetObjectLabel;
922 opencascade::PFNGLOBJECTPTRLABELPROC glObjectPtrLabel;
923 opencascade::PFNGLGETOBJECTPTRLABELPROC glGetObjectPtrLabel;
924 opencascade::PFNGLGETPOINTERVPROC glGetPointerv;
925 opencascade::PFNGLENABLEIPROC glEnablei;
926 opencascade::PFNGLDISABLEIPROC glDisablei;
927 opencascade::PFNGLBLENDEQUATIONIPROC glBlendEquationi;
928 opencascade::PFNGLBLENDEQUATIONSEPARATEIPROC glBlendEquationSeparatei;
929 opencascade::PFNGLBLENDFUNCIPROC glBlendFunci;
930 opencascade::PFNGLBLENDFUNCSEPARATEIPROC glBlendFuncSeparatei;
931 opencascade::PFNGLCOLORMASKIPROC glColorMaski;
932 opencascade::PFNGLISENABLEDIPROC glIsEnabledi;
933 opencascade::PFNGLDRAWELEMENTSBASEVERTEXPROC glDrawElementsBaseVertex;
934 opencascade::PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC glDrawRangeElementsBaseVertex;
935 opencascade::PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC glDrawElementsInstancedBaseVertex;
936 opencascade::PFNGLFRAMEBUFFERTEXTUREPROC glFramebufferTexture;
937 opencascade::PFNGLPRIMITIVEBOUNDINGBOXPROC glPrimitiveBoundingBox;
938 opencascade::PFNGLGETGRAPHICSRESETSTATUSPROC glGetGraphicsResetStatus;
939 opencascade::PFNGLREADNPIXELSPROC glReadnPixels;
940 opencascade::PFNGLGETNUNIFORMFVPROC glGetnUniformfv;
941 opencascade::PFNGLGETNUNIFORMIVPROC glGetnUniformiv;
942 opencascade::PFNGLGETNUNIFORMUIVPROC glGetnUniformuiv;
943 opencascade::PFNGLMINSAMPLESHADINGPROC glMinSampleShading;
944 opencascade::PFNGLPATCHPARAMETERIPROC glPatchParameteri;
945 opencascade::PFNGLTEXPARAMETERIIVPROC glTexParameterIiv;
946 opencascade::PFNGLTEXPARAMETERIUIVPROC glTexParameterIuiv;
947 opencascade::PFNGLGETTEXPARAMETERIIVPROC glGetTexParameterIiv;
948 opencascade::PFNGLGETTEXPARAMETERIUIVPROC glGetTexParameterIuiv;
949 opencascade::PFNGLSAMPLERPARAMETERIIVPROC glSamplerParameterIiv;
950 opencascade::PFNGLSAMPLERPARAMETERIUIVPROC glSamplerParameterIuiv;
951 opencascade::PFNGLGETSAMPLERPARAMETERIIVPROC glGetSamplerParameterIiv;
952 opencascade::PFNGLGETSAMPLERPARAMETERIUIVPROC glGetSamplerParameterIuiv;
953 opencascade::PFNGLTEXBUFFERPROC glTexBuffer;
954 opencascade::PFNGLTEXBUFFERRANGEPROC glTexBufferRange;
955 opencascade::PFNGLTEXSTORAGE3DMULTISAMPLEPROC glTexStorage3DMultisample;
956
957public: //! @name GL_KHR_debug (optional) or OpenGL ES 3.2+
958
959 opencascade::PFNGLDEBUGMESSAGECONTROLPROC glDebugMessageControl;
960 opencascade::PFNGLDEBUGMESSAGEINSERTPROC glDebugMessageInsert;
961 opencascade::PFNGLDEBUGMESSAGECALLBACKPROC glDebugMessageCallback;
962 opencascade::PFNGLGETDEBUGMESSAGELOGPROC glGetDebugMessageLog;
0deb6f04 963
ca3c13d1 964#else // OpenGL ES vs. desktop
965
01ca42b2 966public: //! @name OpenGL 1.2
967
968 PFNGLBLENDCOLORPROC glBlendColor;
969 PFNGLBLENDEQUATIONPROC glBlendEquation;
970 PFNGLDRAWRANGEELEMENTSPROC glDrawRangeElements;
971 PFNGLTEXIMAGE3DPROC glTexImage3D;
972 PFNGLTEXSUBIMAGE3DPROC glTexSubImage3D;
973 PFNGLCOPYTEXSUBIMAGE3DPROC glCopyTexSubImage3D;
974
975public: //! @name OpenGL 1.3
976
977 PFNGLACTIVETEXTUREPROC glActiveTexture;
978 PFNGLSAMPLECOVERAGEPROC glSampleCoverage;
979 PFNGLCOMPRESSEDTEXIMAGE3DPROC glCompressedTexImage3D;
980 PFNGLCOMPRESSEDTEXIMAGE2DPROC glCompressedTexImage2D;
981 PFNGLCOMPRESSEDTEXIMAGE1DPROC glCompressedTexImage1D;
982 PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC glCompressedTexSubImage3D;
983 PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC glCompressedTexSubImage2D;
984 PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC glCompressedTexSubImage1D;
985 PFNGLGETCOMPRESSEDTEXIMAGEPROC glGetCompressedTexImage;
986
01ca42b2 987public: //! @name OpenGL 1.4
988
989 PFNGLBLENDFUNCSEPARATEPROC glBlendFuncSeparate;
990 PFNGLMULTIDRAWARRAYSPROC glMultiDrawArrays;
991 PFNGLMULTIDRAWELEMENTSPROC glMultiDrawElements;
992 PFNGLPOINTPARAMETERFPROC glPointParameterf;
993 PFNGLPOINTPARAMETERFVPROC glPointParameterfv;
994 PFNGLPOINTPARAMETERIPROC glPointParameteri;
995 PFNGLPOINTPARAMETERIVPROC glPointParameteriv;
996
997public: //! @name OpenGL 1.5
998
999 PFNGLGENQUERIESPROC glGenQueries;
1000 PFNGLDELETEQUERIESPROC glDeleteQueries;
1001 PFNGLISQUERYPROC glIsQuery;
1002 PFNGLBEGINQUERYPROC glBeginQuery;
1003 PFNGLENDQUERYPROC glEndQuery;
1004 PFNGLGETQUERYIVPROC glGetQueryiv;
1005 PFNGLGETQUERYOBJECTIVPROC glGetQueryObjectiv;
1006 PFNGLGETQUERYOBJECTUIVPROC glGetQueryObjectuiv;
1007 PFNGLBINDBUFFERPROC glBindBuffer;
1008 PFNGLDELETEBUFFERSPROC glDeleteBuffers;
1009 PFNGLGENBUFFERSPROC glGenBuffers;
1010 PFNGLISBUFFERPROC glIsBuffer;
1011 PFNGLBUFFERDATAPROC glBufferData;
1012 PFNGLBUFFERSUBDATAPROC glBufferSubData;
1013 PFNGLGETBUFFERSUBDATAPROC glGetBufferSubData;
1014 PFNGLMAPBUFFERPROC glMapBuffer;
1015 PFNGLUNMAPBUFFERPROC glUnmapBuffer;
1016 PFNGLGETBUFFERPARAMETERIVPROC glGetBufferParameteriv;
1017 PFNGLGETBUFFERPOINTERVPROC glGetBufferPointerv;
1018
1019public: //! @name OpenGL 2.0
1020
1021 PFNGLBLENDEQUATIONSEPARATEPROC glBlendEquationSeparate;
1022 PFNGLDRAWBUFFERSPROC glDrawBuffers;
1023 PFNGLSTENCILOPSEPARATEPROC glStencilOpSeparate;
1024 PFNGLSTENCILFUNCSEPARATEPROC glStencilFuncSeparate;
1025 PFNGLSTENCILMASKSEPARATEPROC glStencilMaskSeparate;
1026 PFNGLATTACHSHADERPROC glAttachShader;
1027 PFNGLBINDATTRIBLOCATIONPROC glBindAttribLocation;
1028 PFNGLCOMPILESHADERPROC glCompileShader;
1029 PFNGLCREATEPROGRAMPROC glCreateProgram;
1030 PFNGLCREATESHADERPROC glCreateShader;
1031 PFNGLDELETEPROGRAMPROC glDeleteProgram;
1032 PFNGLDELETESHADERPROC glDeleteShader;
1033 PFNGLDETACHSHADERPROC glDetachShader;
1034 PFNGLDISABLEVERTEXATTRIBARRAYPROC glDisableVertexAttribArray;
1035 PFNGLENABLEVERTEXATTRIBARRAYPROC glEnableVertexAttribArray;
1036 PFNGLGETACTIVEATTRIBPROC glGetActiveAttrib;
1037 PFNGLGETACTIVEUNIFORMPROC glGetActiveUniform;
1038 PFNGLGETATTACHEDSHADERSPROC glGetAttachedShaders;
1039 PFNGLGETATTRIBLOCATIONPROC glGetAttribLocation;
1040 PFNGLGETPROGRAMIVPROC glGetProgramiv;
1041 PFNGLGETPROGRAMINFOLOGPROC glGetProgramInfoLog;
1042 PFNGLGETSHADERIVPROC glGetShaderiv;
1043 PFNGLGETSHADERINFOLOGPROC glGetShaderInfoLog;
1044 PFNGLGETSHADERSOURCEPROC glGetShaderSource;
1045 PFNGLGETUNIFORMLOCATIONPROC glGetUniformLocation;
1046 PFNGLGETUNIFORMFVPROC glGetUniformfv;
1047 PFNGLGETUNIFORMIVPROC glGetUniformiv;
1048 PFNGLGETVERTEXATTRIBDVPROC glGetVertexAttribdv;
1049 PFNGLGETVERTEXATTRIBFVPROC glGetVertexAttribfv;
1050 PFNGLGETVERTEXATTRIBIVPROC glGetVertexAttribiv;
1051 PFNGLGETVERTEXATTRIBPOINTERVPROC glGetVertexAttribPointerv;
1052 PFNGLISPROGRAMPROC glIsProgram;
1053 PFNGLISSHADERPROC glIsShader;
1054 PFNGLLINKPROGRAMPROC glLinkProgram;
1055 PFNGLSHADERSOURCEPROC glShaderSource;
1056 PFNGLUSEPROGRAMPROC glUseProgram;
1057 PFNGLUNIFORM1FPROC glUniform1f;
1058 PFNGLUNIFORM2FPROC glUniform2f;
1059 PFNGLUNIFORM3FPROC glUniform3f;
1060 PFNGLUNIFORM4FPROC glUniform4f;
1061 PFNGLUNIFORM1IPROC glUniform1i;
1062 PFNGLUNIFORM2IPROC glUniform2i;
1063 PFNGLUNIFORM3IPROC glUniform3i;
1064 PFNGLUNIFORM4IPROC glUniform4i;
1065 PFNGLUNIFORM1FVPROC glUniform1fv;
1066 PFNGLUNIFORM2FVPROC glUniform2fv;
1067 PFNGLUNIFORM3FVPROC glUniform3fv;
1068 PFNGLUNIFORM4FVPROC glUniform4fv;
1069 PFNGLUNIFORM1IVPROC glUniform1iv;
1070 PFNGLUNIFORM2IVPROC glUniform2iv;
1071 PFNGLUNIFORM3IVPROC glUniform3iv;
1072 PFNGLUNIFORM4IVPROC glUniform4iv;
1073 PFNGLUNIFORMMATRIX2FVPROC glUniformMatrix2fv;
1074 PFNGLUNIFORMMATRIX3FVPROC glUniformMatrix3fv;
1075 PFNGLUNIFORMMATRIX4FVPROC glUniformMatrix4fv;
1076 PFNGLVALIDATEPROGRAMPROC glValidateProgram;
1077 PFNGLVERTEXATTRIB1DPROC glVertexAttrib1d;
1078 PFNGLVERTEXATTRIB1DVPROC glVertexAttrib1dv;
1079 PFNGLVERTEXATTRIB1FPROC glVertexAttrib1f;
1080 PFNGLVERTEXATTRIB1FVPROC glVertexAttrib1fv;
1081 PFNGLVERTEXATTRIB1SPROC glVertexAttrib1s;
1082 PFNGLVERTEXATTRIB1SVPROC glVertexAttrib1sv;
1083 PFNGLVERTEXATTRIB2DPROC glVertexAttrib2d;
1084 PFNGLVERTEXATTRIB2DVPROC glVertexAttrib2dv;
1085 PFNGLVERTEXATTRIB2FPROC glVertexAttrib2f;
1086 PFNGLVERTEXATTRIB2FVPROC glVertexAttrib2fv;
1087 PFNGLVERTEXATTRIB2SPROC glVertexAttrib2s;
1088 PFNGLVERTEXATTRIB2SVPROC glVertexAttrib2sv;
1089 PFNGLVERTEXATTRIB3DPROC glVertexAttrib3d;
1090 PFNGLVERTEXATTRIB3DVPROC glVertexAttrib3dv;
1091 PFNGLVERTEXATTRIB3FPROC glVertexAttrib3f;
1092 PFNGLVERTEXATTRIB3FVPROC glVertexAttrib3fv;
1093 PFNGLVERTEXATTRIB3SPROC glVertexAttrib3s;
1094 PFNGLVERTEXATTRIB3SVPROC glVertexAttrib3sv;
1095 PFNGLVERTEXATTRIB4NBVPROC glVertexAttrib4Nbv;
1096 PFNGLVERTEXATTRIB4NIVPROC glVertexAttrib4Niv;
1097 PFNGLVERTEXATTRIB4NSVPROC glVertexAttrib4Nsv;
1098 PFNGLVERTEXATTRIB4NUBPROC glVertexAttrib4Nub;
1099 PFNGLVERTEXATTRIB4NUBVPROC glVertexAttrib4Nubv;
1100 PFNGLVERTEXATTRIB4NUIVPROC glVertexAttrib4Nuiv;
1101 PFNGLVERTEXATTRIB4NUSVPROC glVertexAttrib4Nusv;
1102 PFNGLVERTEXATTRIB4BVPROC glVertexAttrib4bv;
1103 PFNGLVERTEXATTRIB4DPROC glVertexAttrib4d;
1104 PFNGLVERTEXATTRIB4DVPROC glVertexAttrib4dv;
1105 PFNGLVERTEXATTRIB4FPROC glVertexAttrib4f;
1106 PFNGLVERTEXATTRIB4FVPROC glVertexAttrib4fv;
1107 PFNGLVERTEXATTRIB4IVPROC glVertexAttrib4iv;
1108 PFNGLVERTEXATTRIB4SPROC glVertexAttrib4s;
1109 PFNGLVERTEXATTRIB4SVPROC glVertexAttrib4sv;
1110 PFNGLVERTEXATTRIB4UBVPROC glVertexAttrib4ubv;
1111 PFNGLVERTEXATTRIB4UIVPROC glVertexAttrib4uiv;
1112 PFNGLVERTEXATTRIB4USVPROC glVertexAttrib4usv;
1113 PFNGLVERTEXATTRIBPOINTERPROC glVertexAttribPointer;
1114
1115public: //! @name OpenGL 2.1
1116
1117 PFNGLUNIFORMMATRIX2X3FVPROC glUniformMatrix2x3fv;
1118 PFNGLUNIFORMMATRIX3X2FVPROC glUniformMatrix3x2fv;
1119 PFNGLUNIFORMMATRIX2X4FVPROC glUniformMatrix2x4fv;
1120 PFNGLUNIFORMMATRIX4X2FVPROC glUniformMatrix4x2fv;
1121 PFNGLUNIFORMMATRIX3X4FVPROC glUniformMatrix3x4fv;
1122 PFNGLUNIFORMMATRIX4X3FVPROC glUniformMatrix4x3fv;
1123
1124public: //! @name GL_ARB_framebuffer_object (added to OpenGL 3.0 core)
1125
1126 PFNGLISRENDERBUFFERPROC glIsRenderbuffer;
1127 PFNGLBINDRENDERBUFFERPROC glBindRenderbuffer;
1128 PFNGLDELETERENDERBUFFERSPROC glDeleteRenderbuffers;
1129 PFNGLGENRENDERBUFFERSPROC glGenRenderbuffers;
1130 PFNGLRENDERBUFFERSTORAGEPROC glRenderbufferStorage;
1131 PFNGLGETRENDERBUFFERPARAMETERIVPROC glGetRenderbufferParameteriv;
1132 PFNGLISFRAMEBUFFERPROC glIsFramebuffer;
1133 PFNGLBINDFRAMEBUFFERPROC glBindFramebuffer;
1134 PFNGLDELETEFRAMEBUFFERSPROC glDeleteFramebuffers;
1135 PFNGLGENFRAMEBUFFERSPROC glGenFramebuffers;
1136 PFNGLCHECKFRAMEBUFFERSTATUSPROC glCheckFramebufferStatus;
1137 PFNGLFRAMEBUFFERTEXTURE1DPROC glFramebufferTexture1D;
1138 PFNGLFRAMEBUFFERTEXTURE2DPROC glFramebufferTexture2D;
1139 PFNGLFRAMEBUFFERTEXTURE3DPROC glFramebufferTexture3D;
1140 PFNGLFRAMEBUFFERRENDERBUFFERPROC glFramebufferRenderbuffer;
1141 PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC glGetFramebufferAttachmentParameteriv;
1142 PFNGLGENERATEMIPMAPPROC glGenerateMipmap;
1143 PFNGLBLITFRAMEBUFFERPROC glBlitFramebuffer;
1144 PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC glRenderbufferStorageMultisample;
1145 PFNGLFRAMEBUFFERTEXTURELAYERPROC glFramebufferTextureLayer;
1146
1147public: //! @name GL_ARB_vertex_array_object (added to OpenGL 3.0 core)
1148
1149 PFNGLBINDVERTEXARRAYPROC glBindVertexArray;
1150 PFNGLDELETEVERTEXARRAYSPROC glDeleteVertexArrays;
1151 PFNGLGENVERTEXARRAYSPROC glGenVertexArrays;
1152 PFNGLISVERTEXARRAYPROC glIsVertexArray;
1153
1154public: //! @name GL_ARB_map_buffer_range (added to OpenGL 3.0 core)
1155
1156 PFNGLMAPBUFFERRANGEPROC glMapBufferRange;
1157 PFNGLFLUSHMAPPEDBUFFERRANGEPROC glFlushMappedBufferRange;
1158
1159public: //! @name OpenGL 3.0
1160
1161 PFNGLCOLORMASKIPROC glColorMaski;
1162 PFNGLGETBOOLEANI_VPROC glGetBooleani_v;
1163 PFNGLGETINTEGERI_VPROC glGetIntegeri_v;
1164 PFNGLENABLEIPROC glEnablei;
1165 PFNGLDISABLEIPROC glDisablei;
1166 PFNGLISENABLEDIPROC glIsEnabledi;
1167 PFNGLBEGINTRANSFORMFEEDBACKPROC glBeginTransformFeedback;
1168 PFNGLENDTRANSFORMFEEDBACKPROC glEndTransformFeedback;
1169 PFNGLBINDBUFFERRANGEPROC glBindBufferRange;
1170 PFNGLBINDBUFFERBASEPROC glBindBufferBase;
1171 PFNGLTRANSFORMFEEDBACKVARYINGSPROC glTransformFeedbackVaryings;
1172 PFNGLGETTRANSFORMFEEDBACKVARYINGPROC glGetTransformFeedbackVarying;
1173 PFNGLCLAMPCOLORPROC glClampColor;
1174 PFNGLBEGINCONDITIONALRENDERPROC glBeginConditionalRender;
1175 PFNGLENDCONDITIONALRENDERPROC glEndConditionalRender;
1176 PFNGLVERTEXATTRIBIPOINTERPROC glVertexAttribIPointer;
1177 PFNGLGETVERTEXATTRIBIIVPROC glGetVertexAttribIiv;
1178 PFNGLGETVERTEXATTRIBIUIVPROC glGetVertexAttribIuiv;
1179 PFNGLVERTEXATTRIBI1IPROC glVertexAttribI1i;
1180 PFNGLVERTEXATTRIBI2IPROC glVertexAttribI2i;
1181 PFNGLVERTEXATTRIBI3IPROC glVertexAttribI3i;
1182 PFNGLVERTEXATTRIBI4IPROC glVertexAttribI4i;
1183 PFNGLVERTEXATTRIBI1UIPROC glVertexAttribI1ui;
1184 PFNGLVERTEXATTRIBI2UIPROC glVertexAttribI2ui;
1185 PFNGLVERTEXATTRIBI3UIPROC glVertexAttribI3ui;
1186 PFNGLVERTEXATTRIBI4UIPROC glVertexAttribI4ui;
1187 PFNGLVERTEXATTRIBI1IVPROC glVertexAttribI1iv;
1188 PFNGLVERTEXATTRIBI2IVPROC glVertexAttribI2iv;
1189 PFNGLVERTEXATTRIBI3IVPROC glVertexAttribI3iv;
1190 PFNGLVERTEXATTRIBI4IVPROC glVertexAttribI4iv;
1191 PFNGLVERTEXATTRIBI1UIVPROC glVertexAttribI1uiv;
1192 PFNGLVERTEXATTRIBI2UIVPROC glVertexAttribI2uiv;
1193 PFNGLVERTEXATTRIBI3UIVPROC glVertexAttribI3uiv;
1194 PFNGLVERTEXATTRIBI4UIVPROC glVertexAttribI4uiv;
1195 PFNGLVERTEXATTRIBI4BVPROC glVertexAttribI4bv;
1196 PFNGLVERTEXATTRIBI4SVPROC glVertexAttribI4sv;
1197 PFNGLVERTEXATTRIBI4UBVPROC glVertexAttribI4ubv;
1198 PFNGLVERTEXATTRIBI4USVPROC glVertexAttribI4usv;
1199 PFNGLGETUNIFORMUIVPROC glGetUniformuiv;
1200 PFNGLBINDFRAGDATALOCATIONPROC glBindFragDataLocation;
1201 PFNGLGETFRAGDATALOCATIONPROC glGetFragDataLocation;
1202 PFNGLUNIFORM1UIPROC glUniform1ui;
1203 PFNGLUNIFORM2UIPROC glUniform2ui;
1204 PFNGLUNIFORM3UIPROC glUniform3ui;
1205 PFNGLUNIFORM4UIPROC glUniform4ui;
1206 PFNGLUNIFORM1UIVPROC glUniform1uiv;
1207 PFNGLUNIFORM2UIVPROC glUniform2uiv;
1208 PFNGLUNIFORM3UIVPROC glUniform3uiv;
1209 PFNGLUNIFORM4UIVPROC glUniform4uiv;
1210 PFNGLTEXPARAMETERIIVPROC glTexParameterIiv;
1211 PFNGLTEXPARAMETERIUIVPROC glTexParameterIuiv;
1212 PFNGLGETTEXPARAMETERIIVPROC glGetTexParameterIiv;
1213 PFNGLGETTEXPARAMETERIUIVPROC glGetTexParameterIuiv;
1214 PFNGLCLEARBUFFERIVPROC glClearBufferiv;
1215 PFNGLCLEARBUFFERUIVPROC glClearBufferuiv;
1216 PFNGLCLEARBUFFERFVPROC glClearBufferfv;
1217 PFNGLCLEARBUFFERFIPROC glClearBufferfi;
1218 PFNGLGETSTRINGIPROC glGetStringi;
1219
1220public: //! @name GL_ARB_uniform_buffer_object (added to OpenGL 3.1 core)
1221
1222 PFNGLGETUNIFORMINDICESPROC glGetUniformIndices;
1223 PFNGLGETACTIVEUNIFORMSIVPROC glGetActiveUniformsiv;
1224 PFNGLGETACTIVEUNIFORMNAMEPROC glGetActiveUniformName;
1225 PFNGLGETUNIFORMBLOCKINDEXPROC glGetUniformBlockIndex;
1226 PFNGLGETACTIVEUNIFORMBLOCKIVPROC glGetActiveUniformBlockiv;
1227 PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC glGetActiveUniformBlockName;
1228 PFNGLUNIFORMBLOCKBINDINGPROC glUniformBlockBinding;
1229
1230public: //! @name GL_ARB_copy_buffer (added to OpenGL 3.1 core)
1231
1232 PFNGLCOPYBUFFERSUBDATAPROC glCopyBufferSubData;
1233
1234public: //! @name OpenGL 3.1
1235
1236 PFNGLDRAWARRAYSINSTANCEDPROC glDrawArraysInstanced;
1237 PFNGLDRAWELEMENTSINSTANCEDPROC glDrawElementsInstanced;
1238 PFNGLTEXBUFFERPROC glTexBuffer;
1239 PFNGLPRIMITIVERESTARTINDEXPROC glPrimitiveRestartIndex;
1240
1241public: //! @name GL_ARB_draw_elements_base_vertex (added to OpenGL 3.2 core)
1242
1243 PFNGLDRAWELEMENTSBASEVERTEXPROC glDrawElementsBaseVertex;
1244 PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC glDrawRangeElementsBaseVertex;
1245 PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC glDrawElementsInstancedBaseVertex;
1246 PFNGLMULTIDRAWELEMENTSBASEVERTEXPROC glMultiDrawElementsBaseVertex;
1247
1248public: //! @name GL_ARB_provoking_vertex (added to OpenGL 3.2 core)
1249
1250 PFNGLPROVOKINGVERTEXPROC glProvokingVertex;
1251
1252public: //! @name GL_ARB_sync (added to OpenGL 3.2 core)
1253
1254 PFNGLFENCESYNCPROC glFenceSync;
1255 PFNGLISSYNCPROC glIsSync;
1256 PFNGLDELETESYNCPROC glDeleteSync;
1257 PFNGLCLIENTWAITSYNCPROC glClientWaitSync;
1258 PFNGLWAITSYNCPROC glWaitSync;
1259 PFNGLGETINTEGER64VPROC glGetInteger64v;
1260 PFNGLGETSYNCIVPROC glGetSynciv;
1261
1262public: //! @name GL_ARB_texture_multisample (added to OpenGL 3.2 core)
1263
1264 PFNGLTEXIMAGE2DMULTISAMPLEPROC glTexImage2DMultisample;
1265 PFNGLTEXIMAGE3DMULTISAMPLEPROC glTexImage3DMultisample;
1266 PFNGLGETMULTISAMPLEFVPROC glGetMultisamplefv;
1267 PFNGLSAMPLEMASKIPROC glSampleMaski;
1268
1269public: //! @name OpenGL 3.2
1270
1271 PFNGLGETINTEGER64I_VPROC glGetInteger64i_v;
1272 PFNGLGETBUFFERPARAMETERI64VPROC glGetBufferParameteri64v;
1273 PFNGLFRAMEBUFFERTEXTUREPROC glFramebufferTexture;
1274
1275public: //! @name GL_ARB_blend_func_extended (added to OpenGL 3.3 core)
1276
1277 PFNGLBINDFRAGDATALOCATIONINDEXEDPROC glBindFragDataLocationIndexed;
1278 PFNGLGETFRAGDATAINDEXPROC glGetFragDataIndex;
1279
1280public: //! @name GL_ARB_sampler_objects (added to OpenGL 3.3 core)
1281
1282 PFNGLGENSAMPLERSPROC glGenSamplers;
1283 PFNGLDELETESAMPLERSPROC glDeleteSamplers;
1284 PFNGLISSAMPLERPROC glIsSampler;
1285 PFNGLBINDSAMPLERPROC glBindSampler;
1286 PFNGLSAMPLERPARAMETERIPROC glSamplerParameteri;
1287 PFNGLSAMPLERPARAMETERIVPROC glSamplerParameteriv;
1288 PFNGLSAMPLERPARAMETERFPROC glSamplerParameterf;
1289 PFNGLSAMPLERPARAMETERFVPROC glSamplerParameterfv;
1290 PFNGLSAMPLERPARAMETERIIVPROC glSamplerParameterIiv;
1291 PFNGLSAMPLERPARAMETERIUIVPROC glSamplerParameterIuiv;
1292 PFNGLGETSAMPLERPARAMETERIVPROC glGetSamplerParameteriv;
1293 PFNGLGETSAMPLERPARAMETERIIVPROC glGetSamplerParameterIiv;
1294 PFNGLGETSAMPLERPARAMETERFVPROC glGetSamplerParameterfv;
1295 PFNGLGETSAMPLERPARAMETERIUIVPROC glGetSamplerParameterIuiv;
1296
1297public: //! @name GL_ARB_timer_query (added to OpenGL 3.3 core)
1298
1299 PFNGLQUERYCOUNTERPROC glQueryCounter;
1300 PFNGLGETQUERYOBJECTI64VPROC glGetQueryObjecti64v;
1301 PFNGLGETQUERYOBJECTUI64VPROC glGetQueryObjectui64v;
1302
1303public: //! @name GL_ARB_vertex_type_2_10_10_10_rev (added to OpenGL 3.3 core)
1304
01ca42b2 1305 PFNGLVERTEXATTRIBP1UIPROC glVertexAttribP1ui;
1306 PFNGLVERTEXATTRIBP1UIVPROC glVertexAttribP1uiv;
1307 PFNGLVERTEXATTRIBP2UIPROC glVertexAttribP2ui;
1308 PFNGLVERTEXATTRIBP2UIVPROC glVertexAttribP2uiv;
1309 PFNGLVERTEXATTRIBP3UIPROC glVertexAttribP3ui;
1310 PFNGLVERTEXATTRIBP3UIVPROC glVertexAttribP3uiv;
1311 PFNGLVERTEXATTRIBP4UIPROC glVertexAttribP4ui;
1312 PFNGLVERTEXATTRIBP4UIVPROC glVertexAttribP4uiv;
1313
1314public: //! @name OpenGL 3.3
1315
1316 PFNGLVERTEXATTRIBDIVISORPROC glVertexAttribDivisor;
1317
1318public: //! @name GL_ARB_draw_indirect (added to OpenGL 4.0 core)
1319
1320 PFNGLDRAWARRAYSINDIRECTPROC glDrawArraysIndirect;
1321 PFNGLDRAWELEMENTSINDIRECTPROC glDrawElementsIndirect;
1322
1323public: //! @name GL_ARB_gpu_shader_fp64 (added to OpenGL 4.0 core)
1324
1325 PFNGLUNIFORM1DPROC glUniform1d;
1326 PFNGLUNIFORM2DPROC glUniform2d;
1327 PFNGLUNIFORM3DPROC glUniform3d;
1328 PFNGLUNIFORM4DPROC glUniform4d;
1329 PFNGLUNIFORM1DVPROC glUniform1dv;
1330 PFNGLUNIFORM2DVPROC glUniform2dv;
1331 PFNGLUNIFORM3DVPROC glUniform3dv;
1332 PFNGLUNIFORM4DVPROC glUniform4dv;
1333 PFNGLUNIFORMMATRIX2DVPROC glUniformMatrix2dv;
1334 PFNGLUNIFORMMATRIX3DVPROC glUniformMatrix3dv;
1335 PFNGLUNIFORMMATRIX4DVPROC glUniformMatrix4dv;
1336 PFNGLUNIFORMMATRIX2X3DVPROC glUniformMatrix2x3dv;
1337 PFNGLUNIFORMMATRIX2X4DVPROC glUniformMatrix2x4dv;
1338 PFNGLUNIFORMMATRIX3X2DVPROC glUniformMatrix3x2dv;
1339 PFNGLUNIFORMMATRIX3X4DVPROC glUniformMatrix3x4dv;
1340 PFNGLUNIFORMMATRIX4X2DVPROC glUniformMatrix4x2dv;
1341 PFNGLUNIFORMMATRIX4X3DVPROC glUniformMatrix4x3dv;
1342 PFNGLGETUNIFORMDVPROC glGetUniformdv;
1343
1344public: //! @name GL_ARB_shader_subroutine (added to OpenGL 4.0 core)
1345
1346 PFNGLGETSUBROUTINEUNIFORMLOCATIONPROC glGetSubroutineUniformLocation;
1347 PFNGLGETSUBROUTINEINDEXPROC glGetSubroutineIndex;
1348 PFNGLGETACTIVESUBROUTINEUNIFORMIVPROC glGetActiveSubroutineUniformiv;
1349 PFNGLGETACTIVESUBROUTINEUNIFORMNAMEPROC glGetActiveSubroutineUniformName;
1350 PFNGLGETACTIVESUBROUTINENAMEPROC glGetActiveSubroutineName;
1351 PFNGLUNIFORMSUBROUTINESUIVPROC glUniformSubroutinesuiv;
1352 PFNGLGETUNIFORMSUBROUTINEUIVPROC glGetUniformSubroutineuiv;
1353 PFNGLGETPROGRAMSTAGEIVPROC glGetProgramStageiv;
1354
1355public: //! @name GL_ARB_tessellation_shader (added to OpenGL 4.0 core)
1356
1357 PFNGLPATCHPARAMETERIPROC glPatchParameteri;
1358 PFNGLPATCHPARAMETERFVPROC glPatchParameterfv;
1359
1360public: //! @name GL_ARB_transform_feedback2 (added to OpenGL 4.0 core)
1361
1362 PFNGLBINDTRANSFORMFEEDBACKPROC glBindTransformFeedback;
1363 PFNGLDELETETRANSFORMFEEDBACKSPROC glDeleteTransformFeedbacks;
1364 PFNGLGENTRANSFORMFEEDBACKSPROC glGenTransformFeedbacks;
1365 PFNGLISTRANSFORMFEEDBACKPROC glIsTransformFeedback;
1366 PFNGLPAUSETRANSFORMFEEDBACKPROC glPauseTransformFeedback;
1367 PFNGLRESUMETRANSFORMFEEDBACKPROC glResumeTransformFeedback;
1368 PFNGLDRAWTRANSFORMFEEDBACKPROC glDrawTransformFeedback;
1369
1370public: //! @name GL_ARB_transform_feedback3 (added to OpenGL 4.0 core)
1371
1372 PFNGLDRAWTRANSFORMFEEDBACKSTREAMPROC glDrawTransformFeedbackStream;
1373 PFNGLBEGINQUERYINDEXEDPROC glBeginQueryIndexed;
1374 PFNGLENDQUERYINDEXEDPROC glEndQueryIndexed;
1375 PFNGLGETQUERYINDEXEDIVPROC glGetQueryIndexediv;
1376
1377public: //! @name OpenGL 4.0
1378
1379 PFNGLMINSAMPLESHADINGPROC glMinSampleShading;
1380 PFNGLBLENDEQUATIONIPROC glBlendEquationi;
1381 PFNGLBLENDEQUATIONSEPARATEIPROC glBlendEquationSeparatei;
1382 PFNGLBLENDFUNCIPROC glBlendFunci;
1383 PFNGLBLENDFUNCSEPARATEIPROC glBlendFuncSeparatei;
1384
1385public: //! @name GL_ARB_ES2_compatibility (added to OpenGL 4.1 core)
1386
1387 PFNGLRELEASESHADERCOMPILERPROC glReleaseShaderCompiler;
1388 PFNGLSHADERBINARYPROC glShaderBinary;
1389 PFNGLGETSHADERPRECISIONFORMATPROC glGetShaderPrecisionFormat;
1390 PFNGLDEPTHRANGEFPROC glDepthRangef;
1391 PFNGLCLEARDEPTHFPROC glClearDepthf;
1392
1393public: //! @name GL_ARB_get_program_binary (added to OpenGL 4.1 core)
1394
1395 PFNGLGETPROGRAMBINARYPROC glGetProgramBinary;
1396 PFNGLPROGRAMBINARYPROC glProgramBinary;
1397 PFNGLPROGRAMPARAMETERIPROC glProgramParameteri;
1398
1399public: //! @name GL_ARB_separate_shader_objects (added to OpenGL 4.1 core)
1400
1401 PFNGLUSEPROGRAMSTAGESPROC glUseProgramStages;
1402 PFNGLACTIVESHADERPROGRAMPROC glActiveShaderProgram;
1403 PFNGLCREATESHADERPROGRAMVPROC glCreateShaderProgramv;
1404 PFNGLBINDPROGRAMPIPELINEPROC glBindProgramPipeline;
1405 PFNGLDELETEPROGRAMPIPELINESPROC glDeleteProgramPipelines;
1406 PFNGLGENPROGRAMPIPELINESPROC glGenProgramPipelines;
1407 PFNGLISPROGRAMPIPELINEPROC glIsProgramPipeline;
1408 PFNGLGETPROGRAMPIPELINEIVPROC glGetProgramPipelineiv;
1409 PFNGLPROGRAMUNIFORM1IPROC glProgramUniform1i;
1410 PFNGLPROGRAMUNIFORM1IVPROC glProgramUniform1iv;
1411 PFNGLPROGRAMUNIFORM1FPROC glProgramUniform1f;
1412 PFNGLPROGRAMUNIFORM1FVPROC glProgramUniform1fv;
1413 PFNGLPROGRAMUNIFORM1DPROC glProgramUniform1d;
1414 PFNGLPROGRAMUNIFORM1DVPROC glProgramUniform1dv;
1415 PFNGLPROGRAMUNIFORM1UIPROC glProgramUniform1ui;
1416 PFNGLPROGRAMUNIFORM1UIVPROC glProgramUniform1uiv;
1417 PFNGLPROGRAMUNIFORM2IPROC glProgramUniform2i;
1418 PFNGLPROGRAMUNIFORM2IVPROC glProgramUniform2iv;
1419 PFNGLPROGRAMUNIFORM2FPROC glProgramUniform2f;
1420 PFNGLPROGRAMUNIFORM2FVPROC glProgramUniform2fv;
1421 PFNGLPROGRAMUNIFORM2DPROC glProgramUniform2d;
1422 PFNGLPROGRAMUNIFORM2DVPROC glProgramUniform2dv;
1423 PFNGLPROGRAMUNIFORM2UIPROC glProgramUniform2ui;
1424 PFNGLPROGRAMUNIFORM2UIVPROC glProgramUniform2uiv;
1425 PFNGLPROGRAMUNIFORM3IPROC glProgramUniform3i;
1426 PFNGLPROGRAMUNIFORM3IVPROC glProgramUniform3iv;
1427 PFNGLPROGRAMUNIFORM3FPROC glProgramUniform3f;
1428 PFNGLPROGRAMUNIFORM3FVPROC glProgramUniform3fv;
1429 PFNGLPROGRAMUNIFORM3DPROC glProgramUniform3d;
1430 PFNGLPROGRAMUNIFORM3DVPROC glProgramUniform3dv;
1431 PFNGLPROGRAMUNIFORM3UIPROC glProgramUniform3ui;
1432 PFNGLPROGRAMUNIFORM3UIVPROC glProgramUniform3uiv;
1433 PFNGLPROGRAMUNIFORM4IPROC glProgramUniform4i;
1434 PFNGLPROGRAMUNIFORM4IVPROC glProgramUniform4iv;
1435 PFNGLPROGRAMUNIFORM4FPROC glProgramUniform4f;
1436 PFNGLPROGRAMUNIFORM4FVPROC glProgramUniform4fv;
1437 PFNGLPROGRAMUNIFORM4DPROC glProgramUniform4d;
1438 PFNGLPROGRAMUNIFORM4DVPROC glProgramUniform4dv;
1439 PFNGLPROGRAMUNIFORM4UIPROC glProgramUniform4ui;
1440 PFNGLPROGRAMUNIFORM4UIVPROC glProgramUniform4uiv;
1441 PFNGLPROGRAMUNIFORMMATRIX2FVPROC glProgramUniformMatrix2fv;
1442 PFNGLPROGRAMUNIFORMMATRIX3FVPROC glProgramUniformMatrix3fv;
1443 PFNGLPROGRAMUNIFORMMATRIX4FVPROC glProgramUniformMatrix4fv;
1444 PFNGLPROGRAMUNIFORMMATRIX2DVPROC glProgramUniformMatrix2dv;
1445 PFNGLPROGRAMUNIFORMMATRIX3DVPROC glProgramUniformMatrix3dv;
1446 PFNGLPROGRAMUNIFORMMATRIX4DVPROC glProgramUniformMatrix4dv;
1447 PFNGLPROGRAMUNIFORMMATRIX2X3FVPROC glProgramUniformMatrix2x3fv;
1448 PFNGLPROGRAMUNIFORMMATRIX3X2FVPROC glProgramUniformMatrix3x2fv;
1449 PFNGLPROGRAMUNIFORMMATRIX2X4FVPROC glProgramUniformMatrix2x4fv;
1450 PFNGLPROGRAMUNIFORMMATRIX4X2FVPROC glProgramUniformMatrix4x2fv;
1451 PFNGLPROGRAMUNIFORMMATRIX3X4FVPROC glProgramUniformMatrix3x4fv;
1452 PFNGLPROGRAMUNIFORMMATRIX4X3FVPROC glProgramUniformMatrix4x3fv;
1453 PFNGLPROGRAMUNIFORMMATRIX2X3DVPROC glProgramUniformMatrix2x3dv;
1454 PFNGLPROGRAMUNIFORMMATRIX3X2DVPROC glProgramUniformMatrix3x2dv;
1455 PFNGLPROGRAMUNIFORMMATRIX2X4DVPROC glProgramUniformMatrix2x4dv;
1456 PFNGLPROGRAMUNIFORMMATRIX4X2DVPROC glProgramUniformMatrix4x2dv;
1457 PFNGLPROGRAMUNIFORMMATRIX3X4DVPROC glProgramUniformMatrix3x4dv;
1458 PFNGLPROGRAMUNIFORMMATRIX4X3DVPROC glProgramUniformMatrix4x3dv;
1459 PFNGLVALIDATEPROGRAMPIPELINEPROC glValidateProgramPipeline;
1460 PFNGLGETPROGRAMPIPELINEINFOLOGPROC glGetProgramPipelineInfoLog;
1461
1462public: //! @name GL_ARB_vertex_attrib_64bit (added to OpenGL 4.1 core)
1463
1464 PFNGLVERTEXATTRIBL1DPROC glVertexAttribL1d;
1465 PFNGLVERTEXATTRIBL2DPROC glVertexAttribL2d;
1466 PFNGLVERTEXATTRIBL3DPROC glVertexAttribL3d;
1467 PFNGLVERTEXATTRIBL4DPROC glVertexAttribL4d;
1468 PFNGLVERTEXATTRIBL1DVPROC glVertexAttribL1dv;
1469 PFNGLVERTEXATTRIBL2DVPROC glVertexAttribL2dv;
1470 PFNGLVERTEXATTRIBL3DVPROC glVertexAttribL3dv;
1471 PFNGLVERTEXATTRIBL4DVPROC glVertexAttribL4dv;
1472 PFNGLVERTEXATTRIBLPOINTERPROC glVertexAttribLPointer;
1473 PFNGLGETVERTEXATTRIBLDVPROC glGetVertexAttribLdv;
1474
1475public: //! @name GL_ARB_viewport_array (added to OpenGL 4.1 core)
1476
1477 PFNGLVIEWPORTARRAYVPROC glViewportArrayv;
1478 PFNGLVIEWPORTINDEXEDFPROC glViewportIndexedf;
1479 PFNGLVIEWPORTINDEXEDFVPROC glViewportIndexedfv;
1480 PFNGLSCISSORARRAYVPROC glScissorArrayv;
1481 PFNGLSCISSORINDEXEDPROC glScissorIndexed;
1482 PFNGLSCISSORINDEXEDVPROC glScissorIndexedv;
1483 PFNGLDEPTHRANGEARRAYVPROC glDepthRangeArrayv;
1484 PFNGLDEPTHRANGEINDEXEDPROC glDepthRangeIndexed;
1485 PFNGLGETFLOATI_VPROC glGetFloati_v;
1486 PFNGLGETDOUBLEI_VPROC glGetDoublei_v;
1487
1488public: //! @name OpenGL 4.1
1489
1490 //
1491
1492public: //! @name GL_ARB_base_instance (added to OpenGL 4.2 core)
1493
1494 PFNGLDRAWARRAYSINSTANCEDBASEINSTANCEPROC glDrawArraysInstancedBaseInstance;
1495 PFNGLDRAWELEMENTSINSTANCEDBASEINSTANCEPROC glDrawElementsInstancedBaseInstance;
1496 PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXBASEINSTANCEPROC glDrawElementsInstancedBaseVertexBaseInstance;
1497
1498public: //! @name GL_ARB_transform_feedback_instanced (added to OpenGL 4.2 core)
1499
1500 PFNGLDRAWTRANSFORMFEEDBACKINSTANCEDPROC glDrawTransformFeedbackInstanced;
1501 PFNGLDRAWTRANSFORMFEEDBACKSTREAMINSTANCEDPROC glDrawTransformFeedbackStreamInstanced;
1502
1503public: //! @name GL_ARB_internalformat_query (added to OpenGL 4.2 core)
1504
1505 PFNGLGETINTERNALFORMATIVPROC glGetInternalformativ;
1506
1507public: //! @name GL_ARB_shader_atomic_counters (added to OpenGL 4.2 core)
1508
1509 PFNGLGETACTIVEATOMICCOUNTERBUFFERIVPROC glGetActiveAtomicCounterBufferiv;
1510
1511public: //! @name GL_ARB_shader_image_load_store (added to OpenGL 4.2 core)
1512
1513 PFNGLBINDIMAGETEXTUREPROC glBindImageTexture;
1514 PFNGLMEMORYBARRIERPROC glMemoryBarrier;
1515
1516public: //! @name GL_ARB_texture_storage (added to OpenGL 4.2 core)
1517
1518 PFNGLTEXSTORAGE1DPROC glTexStorage1D;
1519 PFNGLTEXSTORAGE2DPROC glTexStorage2D;
1520 PFNGLTEXSTORAGE3DPROC glTexStorage3D;
01ca42b2 1521
1522public: //! @name OpenGL 4.2
1523
1524public: //! @name OpenGL 4.3
1525
1526 PFNGLCLEARBUFFERDATAPROC glClearBufferData;
1527 PFNGLCLEARBUFFERSUBDATAPROC glClearBufferSubData;
1528 PFNGLDISPATCHCOMPUTEPROC glDispatchCompute;
1529 PFNGLDISPATCHCOMPUTEINDIRECTPROC glDispatchComputeIndirect;
1530 PFNGLCOPYIMAGESUBDATAPROC glCopyImageSubData;
1531 PFNGLFRAMEBUFFERPARAMETERIPROC glFramebufferParameteri;
1532 PFNGLGETFRAMEBUFFERPARAMETERIVPROC glGetFramebufferParameteriv;
1533 PFNGLGETINTERNALFORMATI64VPROC glGetInternalformati64v;
1534 PFNGLINVALIDATETEXSUBIMAGEPROC glInvalidateTexSubImage;
1535 PFNGLINVALIDATETEXIMAGEPROC glInvalidateTexImage;
1536 PFNGLINVALIDATEBUFFERSUBDATAPROC glInvalidateBufferSubData;
1537 PFNGLINVALIDATEBUFFERDATAPROC glInvalidateBufferData;
1538 PFNGLINVALIDATEFRAMEBUFFERPROC glInvalidateFramebuffer;
1539 PFNGLINVALIDATESUBFRAMEBUFFERPROC glInvalidateSubFramebuffer;
1540 PFNGLMULTIDRAWARRAYSINDIRECTPROC glMultiDrawArraysIndirect;
1541 PFNGLMULTIDRAWELEMENTSINDIRECTPROC glMultiDrawElementsIndirect;
1542 PFNGLGETPROGRAMINTERFACEIVPROC glGetProgramInterfaceiv;
1543 PFNGLGETPROGRAMRESOURCEINDEXPROC glGetProgramResourceIndex;
1544 PFNGLGETPROGRAMRESOURCENAMEPROC glGetProgramResourceName;
1545 PFNGLGETPROGRAMRESOURCEIVPROC glGetProgramResourceiv;
1546 PFNGLGETPROGRAMRESOURCELOCATIONPROC glGetProgramResourceLocation;
1547 PFNGLGETPROGRAMRESOURCELOCATIONINDEXPROC glGetProgramResourceLocationIndex;
1548 PFNGLSHADERSTORAGEBLOCKBINDINGPROC glShaderStorageBlockBinding;
1549 PFNGLTEXBUFFERRANGEPROC glTexBufferRange;
1550 PFNGLTEXSTORAGE2DMULTISAMPLEPROC glTexStorage2DMultisample;
1551 PFNGLTEXSTORAGE3DMULTISAMPLEPROC glTexStorage3DMultisample;
1552 PFNGLTEXTUREVIEWPROC glTextureView;
1553 PFNGLBINDVERTEXBUFFERPROC glBindVertexBuffer;
1554 PFNGLVERTEXATTRIBFORMATPROC glVertexAttribFormat;
1555 PFNGLVERTEXATTRIBIFORMATPROC glVertexAttribIFormat;
1556 PFNGLVERTEXATTRIBLFORMATPROC glVertexAttribLFormat;
1557 PFNGLVERTEXATTRIBBINDINGPROC glVertexAttribBinding;
1558 PFNGLVERTEXBINDINGDIVISORPROC glVertexBindingDivisor;
1559 PFNGLDEBUGMESSAGECONTROLPROC glDebugMessageControl;
1560 PFNGLDEBUGMESSAGEINSERTPROC glDebugMessageInsert;
1561 PFNGLDEBUGMESSAGECALLBACKPROC glDebugMessageCallback;
1562 PFNGLGETDEBUGMESSAGELOGPROC glGetDebugMessageLog;
1563 PFNGLPUSHDEBUGGROUPPROC glPushDebugGroup;
1564 PFNGLPOPDEBUGGROUPPROC glPopDebugGroup;
1565 PFNGLOBJECTLABELPROC glObjectLabel;
1566 PFNGLGETOBJECTLABELPROC glGetObjectLabel;
1567 PFNGLOBJECTPTRLABELPROC glObjectPtrLabel;
1568 PFNGLGETOBJECTPTRLABELPROC glGetObjectPtrLabel;
1569
1570public: //! @name OpenGL 4.4
1571
1572 PFNGLBUFFERSTORAGEPROC glBufferStorage;
1573 PFNGLCLEARTEXIMAGEPROC glClearTexImage;
1574 PFNGLCLEARTEXSUBIMAGEPROC glClearTexSubImage;
1575 PFNGLBINDBUFFERSBASEPROC glBindBuffersBase;
1576 PFNGLBINDBUFFERSRANGEPROC glBindBuffersRange;
1577 PFNGLBINDTEXTURESPROC glBindTextures;
1578 PFNGLBINDSAMPLERSPROC glBindSamplers;
1579 PFNGLBINDIMAGETEXTURESPROC glBindImageTextures;
1580 PFNGLBINDVERTEXBUFFERSPROC glBindVertexBuffers;
1581
9491df8c 1582public: //! @name OpenGL 4.5
1583
1584 PFNGLCLIPCONTROLPROC glClipControl;
1585 PFNGLCREATETRANSFORMFEEDBACKSPROC glCreateTransformFeedbacks;
1586 PFNGLTRANSFORMFEEDBACKBUFFERBASEPROC glTransformFeedbackBufferBase;
1587 PFNGLTRANSFORMFEEDBACKBUFFERRANGEPROC glTransformFeedbackBufferRange;
1588 PFNGLGETTRANSFORMFEEDBACKIVPROC glGetTransformFeedbackiv;
1589 PFNGLGETTRANSFORMFEEDBACKI_VPROC glGetTransformFeedbacki_v;
1590 PFNGLGETTRANSFORMFEEDBACKI64_VPROC glGetTransformFeedbacki64_v;
1591 PFNGLCREATEBUFFERSPROC glCreateBuffers;
1592 PFNGLNAMEDBUFFERSTORAGEPROC glNamedBufferStorage;
1593 PFNGLNAMEDBUFFERDATAPROC glNamedBufferData;
1594 PFNGLNAMEDBUFFERSUBDATAPROC glNamedBufferSubData;
1595 PFNGLCOPYNAMEDBUFFERSUBDATAPROC glCopyNamedBufferSubData;
1596 PFNGLCLEARNAMEDBUFFERDATAPROC glClearNamedBufferData;
1597 PFNGLCLEARNAMEDBUFFERSUBDATAPROC glClearNamedBufferSubData;
1598 PFNGLMAPNAMEDBUFFERPROC glMapNamedBuffer;
1599 PFNGLMAPNAMEDBUFFERRANGEPROC glMapNamedBufferRange;
1600 PFNGLUNMAPNAMEDBUFFERPROC glUnmapNamedBuffer;
1601 PFNGLFLUSHMAPPEDNAMEDBUFFERRANGEPROC glFlushMappedNamedBufferRange;
1602 PFNGLGETNAMEDBUFFERPARAMETERIVPROC glGetNamedBufferParameteriv;
1603 PFNGLGETNAMEDBUFFERPARAMETERI64VPROC glGetNamedBufferParameteri64v;
1604 PFNGLGETNAMEDBUFFERPOINTERVPROC glGetNamedBufferPointerv;
1605 PFNGLGETNAMEDBUFFERSUBDATAPROC glGetNamedBufferSubData;
1606 PFNGLCREATEFRAMEBUFFERSPROC glCreateFramebuffers;
1607 PFNGLNAMEDFRAMEBUFFERRENDERBUFFERPROC glNamedFramebufferRenderbuffer;
1608 PFNGLNAMEDFRAMEBUFFERPARAMETERIPROC glNamedFramebufferParameteri;
1609 PFNGLNAMEDFRAMEBUFFERTEXTUREPROC glNamedFramebufferTexture;
1610 PFNGLNAMEDFRAMEBUFFERTEXTURELAYERPROC glNamedFramebufferTextureLayer;
1611 PFNGLNAMEDFRAMEBUFFERDRAWBUFFERPROC glNamedFramebufferDrawBuffer;
1612 PFNGLNAMEDFRAMEBUFFERDRAWBUFFERSPROC glNamedFramebufferDrawBuffers;
1613 PFNGLNAMEDFRAMEBUFFERREADBUFFERPROC glNamedFramebufferReadBuffer;
1614 PFNGLINVALIDATENAMEDFRAMEBUFFERDATAPROC glInvalidateNamedFramebufferData;
1615 PFNGLINVALIDATENAMEDFRAMEBUFFERSUBDATAPROC glInvalidateNamedFramebufferSubData;
1616 PFNGLCLEARNAMEDFRAMEBUFFERIVPROC glClearNamedFramebufferiv;
1617 PFNGLCLEARNAMEDFRAMEBUFFERUIVPROC glClearNamedFramebufferuiv;
1618 PFNGLCLEARNAMEDFRAMEBUFFERFVPROC glClearNamedFramebufferfv;
1619 PFNGLCLEARNAMEDFRAMEBUFFERFIPROC glClearNamedFramebufferfi;
1620 PFNGLBLITNAMEDFRAMEBUFFERPROC glBlitNamedFramebuffer;
1621 PFNGLCHECKNAMEDFRAMEBUFFERSTATUSPROC glCheckNamedFramebufferStatus;
1622 PFNGLGETNAMEDFRAMEBUFFERPARAMETERIVPROC glGetNamedFramebufferParameteriv;
1623 PFNGLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVPROC glGetNamedFramebufferAttachmentParameteriv;
1624 PFNGLCREATERENDERBUFFERSPROC glCreateRenderbuffers;
1625 PFNGLNAMEDRENDERBUFFERSTORAGEPROC glNamedRenderbufferStorage;
1626 PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEPROC glNamedRenderbufferStorageMultisample;
1627 PFNGLGETNAMEDRENDERBUFFERPARAMETERIVPROC glGetNamedRenderbufferParameteriv;
1628 PFNGLCREATETEXTURESPROC glCreateTextures;
1629 PFNGLTEXTUREBUFFERPROC glTextureBuffer;
1630 PFNGLTEXTUREBUFFERRANGEPROC glTextureBufferRange;
1631 PFNGLTEXTURESTORAGE1DPROC glTextureStorage1D;
1632 PFNGLTEXTURESTORAGE2DPROC glTextureStorage2D;
1633 PFNGLTEXTURESTORAGE3DPROC glTextureStorage3D;
1634 PFNGLTEXTURESTORAGE2DMULTISAMPLEPROC glTextureStorage2DMultisample;
1635 PFNGLTEXTURESTORAGE3DMULTISAMPLEPROC glTextureStorage3DMultisample;
1636 PFNGLTEXTURESUBIMAGE1DPROC glTextureSubImage1D;
1637 PFNGLTEXTURESUBIMAGE2DPROC glTextureSubImage2D;
1638 PFNGLTEXTURESUBIMAGE3DPROC glTextureSubImage3D;
1639 PFNGLCOMPRESSEDTEXTURESUBIMAGE1DPROC glCompressedTextureSubImage1D;
1640 PFNGLCOMPRESSEDTEXTURESUBIMAGE2DPROC glCompressedTextureSubImage2D;
1641 PFNGLCOMPRESSEDTEXTURESUBIMAGE3DPROC glCompressedTextureSubImage3D;
1642 PFNGLCOPYTEXTURESUBIMAGE1DPROC glCopyTextureSubImage1D;
1643 PFNGLCOPYTEXTURESUBIMAGE2DPROC glCopyTextureSubImage2D;
1644 PFNGLCOPYTEXTURESUBIMAGE3DPROC glCopyTextureSubImage3D;
1645 PFNGLTEXTUREPARAMETERFPROC glTextureParameterf;
1646 PFNGLTEXTUREPARAMETERFVPROC glTextureParameterfv;
1647 PFNGLTEXTUREPARAMETERIPROC glTextureParameteri;
1648 PFNGLTEXTUREPARAMETERIIVPROC glTextureParameterIiv;
1649 PFNGLTEXTUREPARAMETERIUIVPROC glTextureParameterIuiv;
1650 PFNGLTEXTUREPARAMETERIVPROC glTextureParameteriv;
1651 PFNGLGENERATETEXTUREMIPMAPPROC glGenerateTextureMipmap;
1652 PFNGLBINDTEXTUREUNITPROC glBindTextureUnit;
1653 PFNGLGETTEXTUREIMAGEPROC glGetTextureImage;
1654 PFNGLGETCOMPRESSEDTEXTUREIMAGEPROC glGetCompressedTextureImage;
1655 PFNGLGETTEXTURELEVELPARAMETERFVPROC glGetTextureLevelParameterfv;
1656 PFNGLGETTEXTURELEVELPARAMETERIVPROC glGetTextureLevelParameteriv;
1657 PFNGLGETTEXTUREPARAMETERFVPROC glGetTextureParameterfv;
1658 PFNGLGETTEXTUREPARAMETERIIVPROC glGetTextureParameterIiv;
1659 PFNGLGETTEXTUREPARAMETERIUIVPROC glGetTextureParameterIuiv;
1660 PFNGLGETTEXTUREPARAMETERIVPROC glGetTextureParameteriv;
1661 PFNGLCREATEVERTEXARRAYSPROC glCreateVertexArrays;
1662 PFNGLDISABLEVERTEXARRAYATTRIBPROC glDisableVertexArrayAttrib;
1663 PFNGLENABLEVERTEXARRAYATTRIBPROC glEnableVertexArrayAttrib;
1664 PFNGLVERTEXARRAYELEMENTBUFFERPROC glVertexArrayElementBuffer;
1665 PFNGLVERTEXARRAYVERTEXBUFFERPROC glVertexArrayVertexBuffer;
1666 PFNGLVERTEXARRAYVERTEXBUFFERSPROC glVertexArrayVertexBuffers;
1667 PFNGLVERTEXARRAYATTRIBBINDINGPROC glVertexArrayAttribBinding;
1668 PFNGLVERTEXARRAYATTRIBFORMATPROC glVertexArrayAttribFormat;
1669 PFNGLVERTEXARRAYATTRIBIFORMATPROC glVertexArrayAttribIFormat;
1670 PFNGLVERTEXARRAYATTRIBLFORMATPROC glVertexArrayAttribLFormat;
1671 PFNGLVERTEXARRAYBINDINGDIVISORPROC glVertexArrayBindingDivisor;
1672 PFNGLGETVERTEXARRAYIVPROC glGetVertexArrayiv;
1673 PFNGLGETVERTEXARRAYINDEXEDIVPROC glGetVertexArrayIndexediv;
1674 PFNGLGETVERTEXARRAYINDEXED64IVPROC glGetVertexArrayIndexed64iv;
1675 PFNGLCREATESAMPLERSPROC glCreateSamplers;
1676 PFNGLCREATEPROGRAMPIPELINESPROC glCreateProgramPipelines;
1677 PFNGLCREATEQUERIESPROC glCreateQueries;
1678 PFNGLGETQUERYBUFFEROBJECTI64VPROC glGetQueryBufferObjecti64v;
1679 PFNGLGETQUERYBUFFEROBJECTIVPROC glGetQueryBufferObjectiv;
1680 PFNGLGETQUERYBUFFEROBJECTUI64VPROC glGetQueryBufferObjectui64v;
1681 PFNGLGETQUERYBUFFEROBJECTUIVPROC glGetQueryBufferObjectuiv;
1682 PFNGLMEMORYBARRIERBYREGIONPROC glMemoryBarrierByRegion;
1683 PFNGLGETTEXTURESUBIMAGEPROC glGetTextureSubImage;
1684 PFNGLGETCOMPRESSEDTEXTURESUBIMAGEPROC glGetCompressedTextureSubImage;
1685 PFNGLGETGRAPHICSRESETSTATUSPROC glGetGraphicsResetStatus;
1686 PFNGLGETNCOMPRESSEDTEXIMAGEPROC glGetnCompressedTexImage;
1687 PFNGLGETNTEXIMAGEPROC glGetnTexImage;
1688 PFNGLGETNUNIFORMDVPROC glGetnUniformdv;
1689 PFNGLGETNUNIFORMFVPROC glGetnUniformfv;
1690 PFNGLGETNUNIFORMIVPROC glGetnUniformiv;
1691 PFNGLGETNUNIFORMUIVPROC glGetnUniformuiv;
1692 PFNGLREADNPIXELSPROC glReadnPixels;
1693 PFNGLGETNMAPDVPROC glGetnMapdv;
1694 PFNGLGETNMAPFVPROC glGetnMapfv;
1695 PFNGLGETNMAPIVPROC glGetnMapiv;
1696 PFNGLGETNPIXELMAPFVPROC glGetnPixelMapfv;
1697 PFNGLGETNPIXELMAPUIVPROC glGetnPixelMapuiv;
1698 PFNGLGETNPIXELMAPUSVPROC glGetnPixelMapusv;
1699 PFNGLGETNPOLYGONSTIPPLEPROC glGetnPolygonStipple;
1700 PFNGLGETNCOLORTABLEPROC glGetnColorTable;
1701 PFNGLGETNCONVOLUTIONFILTERPROC glGetnConvolutionFilter;
1702 PFNGLGETNSEPARABLEFILTERPROC glGetnSeparableFilter;
1703 PFNGLGETNHISTOGRAMPROC glGetnHistogram;
1704 PFNGLGETNMINMAXPROC glGetnMinmax;
1705 PFNGLTEXTUREBARRIERPROC glTextureBarrier;
1706
952a0565 1707public: //! @name OpenGL 4.6
1708
1709 PFNGLSPECIALIZESHADERPROC glSpecializeShader;
1710 PFNGLMULTIDRAWARRAYSINDIRECTCOUNTPROC glMultiDrawArraysIndirectCount;
1711 PFNGLMULTIDRAWELEMENTSINDIRECTCOUNTPROC glMultiDrawElementsIndirectCount;
1712 PFNGLPOLYGONOFFSETCLAMPPROC glPolygonOffsetClamp;
1713
01ca42b2 1714public: //! @name GL_EXT_geometry_shader4
1715
1716 PFNGLPROGRAMPARAMETERIEXTPROC glProgramParameteriEXT;
1717
25ef750e 1718public: //! @name GL_ARB_bindless_texture
1719
1720 PFNGLGETTEXTUREHANDLEARBPROC glGetTextureHandleARB;
1721 PFNGLGETTEXTURESAMPLERHANDLEARBPROC glGetTextureSamplerHandleARB;
1722 PFNGLMAKETEXTUREHANDLERESIDENTARBPROC glMakeTextureHandleResidentARB;
1723 PFNGLMAKETEXTUREHANDLENONRESIDENTARBPROC glMakeTextureHandleNonResidentARB;
1724 PFNGLGETIMAGEHANDLEARBPROC glGetImageHandleARB;
1725 PFNGLMAKEIMAGEHANDLERESIDENTARBPROC glMakeImageHandleResidentARB;
1726 PFNGLMAKEIMAGEHANDLENONRESIDENTARBPROC glMakeImageHandleNonResidentARB;
1727 PFNGLUNIFORMHANDLEUI64ARBPROC glUniformHandleui64ARB;
1728 PFNGLUNIFORMHANDLEUI64VARBPROC glUniformHandleui64vARB;
1729 PFNGLPROGRAMUNIFORMHANDLEUI64ARBPROC glProgramUniformHandleui64ARB;
1730 PFNGLPROGRAMUNIFORMHANDLEUI64VARBPROC glProgramUniformHandleui64vARB;
1731 PFNGLISTEXTUREHANDLERESIDENTARBPROC glIsTextureHandleResidentARB;
1732 PFNGLISIMAGEHANDLERESIDENTARBPROC glIsImageHandleResidentARB;
1733 PFNGLVERTEXATTRIBL1UI64ARBPROC glVertexAttribL1ui64ARB;
1734 PFNGLVERTEXATTRIBL1UI64VARBPROC glVertexAttribL1ui64vARB;
1735 PFNGLGETVERTEXATTRIBLUI64VARBPROC glGetVertexAttribLui64vARB;
1736
01ca42b2 1737#if defined(_WIN32)
1738public: //! @name wgl extensions
1739
1740 typedef const char* (WINAPI *wglGetExtensionsStringARB_t)(HDC theDeviceContext);
1741 wglGetExtensionsStringARB_t wglGetExtensionsStringARB;
1742
1743 typedef BOOL (WINAPI *wglSwapIntervalEXT_t)(int theInterval);
1744 wglSwapIntervalEXT_t wglSwapIntervalEXT;
1745
1746 // WGL_ARB_pixel_format
1747
1748#ifndef WGL_NUMBER_PIXEL_FORMATS_ARB
1749 #define WGL_NUMBER_PIXEL_FORMATS_ARB 0x2000
1750 #define WGL_DRAW_TO_WINDOW_ARB 0x2001
1751 #define WGL_DRAW_TO_BITMAP_ARB 0x2002
1752 #define WGL_ACCELERATION_ARB 0x2003
1753 #define WGL_NEED_PALETTE_ARB 0x2004
1754 #define WGL_NEED_SYSTEM_PALETTE_ARB 0x2005
1755 #define WGL_SWAP_LAYER_BUFFERS_ARB 0x2006
1756 #define WGL_SWAP_METHOD_ARB 0x2007
1757 #define WGL_NUMBER_OVERLAYS_ARB 0x2008
1758 #define WGL_NUMBER_UNDERLAYS_ARB 0x2009
1759 #define WGL_TRANSPARENT_ARB 0x200A
1760 #define WGL_TRANSPARENT_RED_VALUE_ARB 0x2037
1761 #define WGL_TRANSPARENT_GREEN_VALUE_ARB 0x2038
1762 #define WGL_TRANSPARENT_BLUE_VALUE_ARB 0x2039
1763 #define WGL_TRANSPARENT_ALPHA_VALUE_ARB 0x203A
1764 #define WGL_TRANSPARENT_INDEX_VALUE_ARB 0x203B
1765 #define WGL_SHARE_DEPTH_ARB 0x200C
1766 #define WGL_SHARE_STENCIL_ARB 0x200D
1767 #define WGL_SHARE_ACCUM_ARB 0x200E
1768 #define WGL_SUPPORT_GDI_ARB 0x200F
1769 #define WGL_SUPPORT_OPENGL_ARB 0x2010
1770 #define WGL_DOUBLE_BUFFER_ARB 0x2011
1771 #define WGL_STEREO_ARB 0x2012
1772 #define WGL_PIXEL_TYPE_ARB 0x2013
1773 #define WGL_COLOR_BITS_ARB 0x2014
1774 #define WGL_RED_BITS_ARB 0x2015
1775 #define WGL_RED_SHIFT_ARB 0x2016
1776 #define WGL_GREEN_BITS_ARB 0x2017
1777 #define WGL_GREEN_SHIFT_ARB 0x2018
1778 #define WGL_BLUE_BITS_ARB 0x2019
1779 #define WGL_BLUE_SHIFT_ARB 0x201A
1780 #define WGL_ALPHA_BITS_ARB 0x201B
1781 #define WGL_ALPHA_SHIFT_ARB 0x201C
1782 #define WGL_ACCUM_BITS_ARB 0x201D
1783 #define WGL_ACCUM_RED_BITS_ARB 0x201E
1784 #define WGL_ACCUM_GREEN_BITS_ARB 0x201F
1785 #define WGL_ACCUM_BLUE_BITS_ARB 0x2020
1786 #define WGL_ACCUM_ALPHA_BITS_ARB 0x2021
1787 #define WGL_DEPTH_BITS_ARB 0x2022
1788 #define WGL_STENCIL_BITS_ARB 0x2023
1789 #define WGL_AUX_BUFFERS_ARB 0x2024
1790
1791 #define WGL_NO_ACCELERATION_ARB 0x2025
1792 #define WGL_GENERIC_ACCELERATION_ARB 0x2026
1793 #define WGL_FULL_ACCELERATION_ARB 0x2027
1794
1795 #define WGL_SWAP_EXCHANGE_ARB 0x2028
1796 #define WGL_SWAP_COPY_ARB 0x2029
1797 #define WGL_SWAP_UNDEFINED_ARB 0x202A
1798
1799 #define WGL_TYPE_RGBA_ARB 0x202B
1800 #define WGL_TYPE_COLORINDEX_ARB 0x202C
1801
1802#endif // WGL_NUMBER_PIXEL_FORMATS_ARB
1803
1804 // WGL_ARB_multisample
1805#ifndef WGL_SAMPLE_BUFFERS_ARB
1806 #define WGL_SAMPLE_BUFFERS_ARB 0x2041
1807 #define WGL_SAMPLES_ARB 0x2042
1808#endif
1809
1810 // WGL_ARB_create_context_robustness
1811#ifndef WGL_CONTEXT_ROBUST_ACCESS_BIT_ARB
1812 #define WGL_CONTEXT_ROBUST_ACCESS_BIT_ARB 0x00000004
1813 #define WGL_CONTEXT_RESET_NOTIFICATION_STRATEGY_ARB 0x8256
1814 #define WGL_NO_RESET_NOTIFICATION_ARB 0x8261
1815 #define WGL_LOSE_CONTEXT_ON_RESET_ARB 0x8252
1816#endif
1817
1818 typedef BOOL (WINAPI *wglChoosePixelFormatARB_t)
1819 (HDC theDevCtx,
1820 const int* theIntAttribs,
1821 const float* theFloatAttribs,
1822 unsigned int theMaxFormats,
1823 int* theFormatsOut,
1824 unsigned int* theNumFormatsOut);
1825 wglChoosePixelFormatARB_t wglChoosePixelFormatARB;
1826
1827 // WGL_ARB_create_context_profile
1828
1829#ifndef WGL_CONTEXT_MAJOR_VERSION_ARB
1830 #define WGL_CONTEXT_MAJOR_VERSION_ARB 0x2091
1831 #define WGL_CONTEXT_MINOR_VERSION_ARB 0x2092
1832 #define WGL_CONTEXT_LAYER_PLANE_ARB 0x2093
1833 #define WGL_CONTEXT_FLAGS_ARB 0x2094
1834 #define WGL_CONTEXT_PROFILE_MASK_ARB 0x9126
1835
1836 // WGL_CONTEXT_FLAGS bits
1837 #define WGL_CONTEXT_DEBUG_BIT_ARB 0x0001
1838 #define WGL_CONTEXT_FORWARD_COMPATIBLE_BIT_ARB 0x0002
1839
1840 // WGL_CONTEXT_PROFILE_MASK_ARB bits
1841 #define WGL_CONTEXT_CORE_PROFILE_BIT_ARB 0x00000001
1842 #define WGL_CONTEXT_COMPATIBILITY_PROFILE_BIT_ARB 0x00000002
1843#endif // WGL_CONTEXT_MAJOR_VERSION_ARB
1844
1845 typedef HGLRC (WINAPI *wglCreateContextAttribsARB_t)(HDC theDevCtx,
1846 HGLRC theShareContext,
1847 const int* theAttribs);
1848 wglCreateContextAttribsARB_t wglCreateContextAttribsARB;
1849
1850 // WGL_NV_DX_interop
1851
1852 typedef BOOL (WINAPI *wglDXSetResourceShareHandleNV_t)(void* theObjectD3d, HANDLE theShareHandle);
1853 typedef HANDLE (WINAPI *wglDXOpenDeviceNV_t )(void* theDeviceD3d);
1854 typedef BOOL (WINAPI *wglDXCloseDeviceNV_t )(HANDLE theDeviceIOP);
1855 typedef HANDLE (WINAPI *wglDXRegisterObjectNV_t )(HANDLE theDeviceIOP,
1856 void* theObjectD3d,
1857 GLuint theName,
1858 GLenum theType,
1859 GLenum theAccess);
1860 typedef BOOL (WINAPI *wglDXUnregisterObjectNV_t)(HANDLE theDeviceIOP,
1861 HANDLE theObject);
1862 typedef BOOL (WINAPI *wglDXObjectAccessNV_t )(HANDLE theObject,
1863 GLenum theAccess);
1864 typedef BOOL (WINAPI *wglDXLockObjectsNV_t )(HANDLE theDeviceIOP,
1865 GLint theCount,
1866 HANDLE* theObjects);
1867 typedef BOOL (WINAPI *wglDXUnlockObjectsNV_t )(HANDLE theDeviceIOP,
1868 GLint theCount,
1869 HANDLE* theObjects);
1870
1871 wglDXSetResourceShareHandleNV_t wglDXSetResourceShareHandleNV;
1872 wglDXOpenDeviceNV_t wglDXOpenDeviceNV;
1873 wglDXCloseDeviceNV_t wglDXCloseDeviceNV;
1874 wglDXRegisterObjectNV_t wglDXRegisterObjectNV;
1875 wglDXUnregisterObjectNV_t wglDXUnregisterObjectNV;
1876 wglDXObjectAccessNV_t wglDXObjectAccessNV;
1877 wglDXLockObjectsNV_t wglDXLockObjectsNV;
1878 wglDXUnlockObjectsNV_t wglDXUnlockObjectsNV;
1879
1880#ifndef WGL_ACCESS_READ_WRITE_NV
1881 #define WGL_ACCESS_READ_ONLY_NV 0x0000
1882 #define WGL_ACCESS_READ_WRITE_NV 0x0001
1883 #define WGL_ACCESS_WRITE_DISCARD_NV 0x0002
1884#endif
1885
2eacd0b8 1886 // WGL_AMD_gpu_association
1887
1888#ifndef WGL_GPU_VENDOR_AMD
1889 #define WGL_GPU_VENDOR_AMD 0x1F00
1890 #define WGL_GPU_RENDERER_STRING_AMD 0x1F01
1891 #define WGL_GPU_OPENGL_VERSION_STRING_AMD 0x1F02
1892 #define WGL_GPU_FASTEST_TARGET_GPUS_AMD 0x21A2
1893 #define WGL_GPU_RAM_AMD 0x21A3
1894 #define WGL_GPU_CLOCK_AMD 0x21A4
1895 #define WGL_GPU_NUM_PIPES_AMD 0x21A5
1896 #define WGL_GPU_NUM_SIMD_AMD 0x21A6
1897 #define WGL_GPU_NUM_RB_AMD 0x21A7
1898 #define WGL_GPU_NUM_SPI_AMD 0x21A8
1899#endif
1900
1901 typedef UINT (WINAPI *wglGetGPUIDsAMD_t )(UINT theMaxCount, UINT* theIds);
1902 typedef INT (WINAPI *wglGetGPUInfoAMD_t )(UINT theId, INT theProperty, GLenum theDataType, UINT theSize, void* theData);
1903 typedef UINT (WINAPI *wglGetContextGPUIDAMD_t )(HGLRC theHglrc);
1904 wglGetGPUIDsAMD_t wglGetGPUIDsAMD;
1905 wglGetGPUInfoAMD_t wglGetGPUInfoAMD;
1906 wglGetContextGPUIDAMD_t wglGetContextGPUIDAMD;
1907
01ca42b2 1908#elif defined(__APPLE__)
1909public: //! @name CGL extensions
1910
1911#else
1912public: //! @name glX extensions
1913
1914 // GLX_EXT_swap_control
1915 //typedef int (*glXSwapIntervalEXT_t)(Display* theDisplay, GLXDrawable theDrawable, int theInterval);
1916 typedef int (*glXSwapIntervalEXT_t)();
1917 glXSwapIntervalEXT_t glXSwapIntervalEXT;
1918
1919 typedef int (*glXSwapIntervalSGI_t)(int theInterval);
1920 glXSwapIntervalSGI_t glXSwapIntervalSGI;
26d9c835 1921
1922 // GLX_MESA_query_renderer
1923#ifndef GLX_RENDERER_VENDOR_ID_MESA
1924 // for glXQueryRendererIntegerMESA() and glXQueryCurrentRendererIntegerMESA()
1925 #define GLX_RENDERER_VENDOR_ID_MESA 0x8183
1926 #define GLX_RENDERER_DEVICE_ID_MESA 0x8184
1927 #define GLX_RENDERER_VERSION_MESA 0x8185
1928 #define GLX_RENDERER_ACCELERATED_MESA 0x8186
1929 #define GLX_RENDERER_VIDEO_MEMORY_MESA 0x8187
1930 #define GLX_RENDERER_UNIFIED_MEMORY_ARCHITECTURE_MESA 0x8188
1931 #define GLX_RENDERER_PREFERRED_PROFILE_MESA 0x8189
1932 #define GLX_RENDERER_OPENGL_CORE_PROFILE_VERSION_MESA 0x818A
1933 #define GLX_RENDERER_OPENGL_COMPATIBILITY_PROFILE_VERSION_MESA 0x818B
1934 #define GLX_RENDERER_OPENGL_ES_PROFILE_VERSION_MESA 0x818C
1935 #define GLX_RENDERER_OPENGL_ES2_PROFILE_VERSION_MESA 0x818D
1936
1937 #define GLX_RENDERER_ID_MESA 0x818E
1938#endif // GLX_RENDERER_VENDOR_ID_MESA
1939
1940 typedef Bool (*glXQueryRendererIntegerMESA_t)(Display* theDisplay, int theScreen,
1941 int theRenderer, int theAttribute,
1942 unsigned int* theValue);
1943 typedef Bool (*glXQueryCurrentRendererIntegerMESA_t)(int theAttribute, unsigned int* theValue);
1944 typedef const char* (*glXQueryRendererStringMESA_t)(Display* theDisplay, int theScreen,
1945 int theRenderer, int theAttribute);
1946 typedef const char* (*glXQueryCurrentRendererStringMESA_t)(int theAttribute);
1947
1948 glXQueryRendererIntegerMESA_t glXQueryRendererIntegerMESA;
1949 glXQueryCurrentRendererIntegerMESA_t glXQueryCurrentRendererIntegerMESA;
1950 glXQueryRendererStringMESA_t glXQueryRendererStringMESA;
1951 glXQueryCurrentRendererStringMESA_t glXQueryCurrentRendererStringMESA;
01ca42b2 1952#endif
1953
ca3c13d1 1954#endif // OpenGL ES vs. desktop
1955
01ca42b2 1956};
1957
1958#endif // _OpenGl_GlFunctions_Header