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