1 /**************************************************************************** 2 ** 3 ** Copyright (C) 2015 The Qt Company Ltd. 4 ** Contact: http://www.qt.io/licensing/ 5 ** 6 ** This file is part of the QtOpenGL module of the Qt Toolkit. 7 ** 8 ** $QT_BEGIN_LICENSE:LGPL$ 9 ** Commercial License Usage 10 ** Licensees holding valid commercial Qt licenses may use this file in 11 ** accordance with the commercial license agreement provided with the 12 ** Software or, alternatively, in accordance with the terms contained in 13 ** a written agreement between you and The Qt Company. For licensing terms 14 ** and conditions see http://www.qt.io/terms-conditions. For further 15 ** information use the contact form at http://www.qt.io/contact-us. 16 ** 17 ** GNU Lesser General Public License Usage 18 ** Alternatively, this file may be used under the terms of the GNU Lesser 19 ** General Public License version 2.1 or version 3 as published by the Free 20 ** Software Foundation and appearing in the file LICENSE.LGPLv21 and 21 ** LICENSE.LGPLv3 included in the packaging of this file. Please review the 22 ** following information to ensure the GNU Lesser General Public License 23 ** requirements will be met: https://www.gnu.org/licenses/lgpl.html and 24 ** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. 25 ** 26 ** As a special exception, The Qt Company gives you certain additional 27 ** rights. These rights are described in The Qt Company LGPL Exception 28 ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. 29 ** 30 ** GNU General Public License Usage 31 ** Alternatively, this file may be used under the terms of the GNU 32 ** General Public License version 3.0 as published by the Free Software 33 ** Foundation and appearing in the file LICENSE.GPL included in the 34 ** packaging of this file. Please review the following information to 35 ** ensure the GNU General Public License version 3.0 requirements will be 36 ** met: http://www.gnu.org/copyleft/gpl.html. 37 ** 38 ** $QT_END_LICENSE$ 39 ** 40 ****************************************************************************/ 41 42 #ifndef QGL_EXTENSIONS_P_H 43 #define QGL_EXTENSIONS_P_H 44 45 // 46 // W A R N I N G 47 // ------------- 48 // 49 // This file is not part of the Qt API. It exists for the convenience 50 // of the Qt OpenGL classes. This header file may change from 51 // version to version without notice, or even be removed. 52 // 53 // We mean it. 54 // 55 56 // extension prototypes 57 #ifndef Q_WS_MAC 58 # ifndef APIENTRYP 59 # ifdef APIENTRY 60 # define APIENTRYP APIENTRY * 61 # else 62 # define APIENTRY 63 # define APIENTRYP * 64 # endif 65 # endif 66 #else 67 # define APIENTRY 68 # define APIENTRYP * 69 #endif 70 71 #ifndef QT_NO_EGL 72 // Needed for EGLImageKHR definition: 73 #include <QtGui/private/qegl_p.h> 74 #endif 75 76 #include <QtCore/qglobal.h> 77 78 #ifndef GL_ARB_vertex_buffer_object 79 typedef ptrdiff_t GLintptrARB; 80 typedef ptrdiff_t GLsizeiptrARB; 81 #endif 82 83 #ifndef GL_VERSION_2_0 84 typedef char GLchar; 85 #endif 86 87 // ARB_vertex_buffer_object 88 typedef void (APIENTRY *_glBindBuffer) (GLenum, GLuint); 89 typedef void (APIENTRY *_glDeleteBuffers) (GLsizei, const GLuint *); 90 typedef void (APIENTRY *_glGenBuffers) (GLsizei, GLuint *); 91 typedef void (APIENTRY *_glBufferData) (GLenum, GLsizeiptrARB, const GLvoid *, GLenum); 92 typedef void (APIENTRY *_glBufferSubData) (GLenum, GLintptrARB, GLsizeiptrARB, const GLvoid *); 93 typedef void (APIENTRY *_glGetBufferSubData) (GLenum, GLintptrARB, GLsizeiptrARB, GLvoid *); 94 typedef void (APIENTRY *_glGetBufferParameteriv) (GLenum, GLenum, GLint *); 95 typedef GLvoid* (APIENTRY *_glMapBufferARB) (GLenum, GLenum); 96 typedef GLboolean (APIENTRY *_glUnmapBufferARB) (GLenum); 97 // We can call the buffer functions directly in OpenGL/ES 1.1 or higher, 98 // but all other platforms need to resolve the extensions. 99 #if defined(QT_OPENGL_ES) 100 #if defined(GL_OES_VERSION_1_0) && !defined(GL_OES_VERSION_1_1) 101 #define QGL_RESOLVE_BUFFER_FUNCS 1 102 #endif 103 #else 104 #define QGL_RESOLVE_BUFFER_FUNCS 1 105 #endif 106 107 // ARB_fragment_program 108 typedef void (APIENTRY *_glProgramStringARB) (GLenum, GLenum, GLsizei, const GLvoid *); 109 typedef void (APIENTRY *_glBindProgramARB) (GLenum, GLuint); 110 typedef void (APIENTRY *_glDeleteProgramsARB) (GLsizei, const GLuint *); 111 typedef void (APIENTRY *_glGenProgramsARB) (GLsizei, GLuint *); 112 typedef void (APIENTRY *_glProgramLocalParameter4fvARB) (GLenum, GLuint, const GLfloat *); 113 114 // GLSL 115 typedef GLuint (APIENTRY *_glCreateShader) (GLenum); 116 typedef void (APIENTRY *_glShaderSource) (GLuint, GLsizei, const char **, const GLint *); 117 typedef void (APIENTRY *_glShaderBinary) (GLint, const GLuint*, GLenum, const void*, GLint); 118 typedef void (APIENTRY *_glCompileShader) (GLuint); 119 typedef void (APIENTRY *_glDeleteShader) (GLuint); 120 typedef GLboolean (APIENTRY *_glIsShader) (GLuint); 121 122 typedef GLuint (APIENTRY *_glCreateProgram) (); 123 typedef void (APIENTRY *_glAttachShader) (GLuint, GLuint); 124 typedef void (APIENTRY *_glDetachShader) (GLuint, GLuint); 125 typedef void (APIENTRY *_glLinkProgram) (GLuint); 126 typedef void (APIENTRY *_glUseProgram) (GLuint); 127 typedef void (APIENTRY *_glDeleteProgram) (GLuint); 128 typedef GLboolean (APIENTRY *_glIsProgram) (GLuint); 129 130 typedef void (APIENTRY *_glGetShaderInfoLog) (GLuint, GLsizei, GLsizei *, char *); 131 typedef void (APIENTRY *_glGetShaderiv) (GLuint, GLenum, GLint *); 132 typedef void (APIENTRY *_glGetShaderSource) (GLuint, GLsizei, GLsizei *, char *); 133 typedef void (APIENTRY *_glGetProgramiv) (GLuint, GLenum, GLint *); 134 typedef void (APIENTRY *_glGetProgramInfoLog) (GLuint, GLsizei, GLsizei *, char *); 135 136 typedef GLuint (APIENTRY *_glGetUniformLocation) (GLuint, const char*); 137 typedef void (APIENTRY *_glUniform4fv) (GLint, GLsizei, const GLfloat *); 138 typedef void (APIENTRY *_glUniform3fv) (GLint, GLsizei, const GLfloat *); 139 typedef void (APIENTRY *_glUniform2fv) (GLint, GLsizei, const GLfloat *); 140 typedef void (APIENTRY *_glUniform1fv) (GLint, GLsizei, const GLfloat *); 141 typedef void (APIENTRY *_glUniform1i) (GLint, GLint); 142 typedef void (APIENTRY *_glUniform1iv) (GLint, GLsizei, const GLint *); 143 typedef void (APIENTRY *_glUniformMatrix2fv) (GLint, GLsizei, GLboolean, const GLfloat *); 144 typedef void (APIENTRY *_glUniformMatrix3fv) (GLint, GLsizei, GLboolean, const GLfloat *); 145 typedef void (APIENTRY *_glUniformMatrix4fv) (GLint, GLsizei, GLboolean, const GLfloat *); 146 typedef void (APIENTRY *_glUniformMatrix2x3fv) (GLint, GLsizei, GLboolean, const GLfloat *); 147 typedef void (APIENTRY *_glUniformMatrix2x4fv) (GLint, GLsizei, GLboolean, const GLfloat *); 148 typedef void (APIENTRY *_glUniformMatrix3x2fv) (GLint, GLsizei, GLboolean, const GLfloat *); 149 typedef void (APIENTRY *_glUniformMatrix3x4fv) (GLint, GLsizei, GLboolean, const GLfloat *); 150 typedef void (APIENTRY *_glUniformMatrix4x2fv) (GLint, GLsizei, GLboolean, const GLfloat *); 151 typedef void (APIENTRY *_glUniformMatrix4x3fv) (GLint, GLsizei, GLboolean, const GLfloat *); 152 153 typedef void (APIENTRY *_glBindAttribLocation) (GLuint, GLuint, const char *); 154 typedef GLint (APIENTRY *_glGetAttribLocation) (GLuint, const char *); 155 typedef void (APIENTRY *_glVertexAttrib1fv) (GLuint, const GLfloat *); 156 typedef void (APIENTRY *_glVertexAttrib2fv) (GLuint, const GLfloat *); 157 typedef void (APIENTRY *_glVertexAttrib3fv) (GLuint, const GLfloat *); 158 typedef void (APIENTRY *_glVertexAttrib4fv) (GLuint, const GLfloat *); 159 typedef void (APIENTRY *_glVertexAttribPointer) (GLuint, GLint, GLenum, GLboolean, GLsizei, const GLvoid *); 160 typedef void (APIENTRY *_glDisableVertexAttribArray) (GLuint); 161 typedef void (APIENTRY *_glEnableVertexAttribArray) (GLuint); 162 163 typedef void (APIENTRY *_glGetProgramBinaryOES) (GLuint, GLsizei, GLsizei *, GLenum *, void *); 164 typedef void (APIENTRY *_glProgramBinaryOES) (GLuint, GLenum, const void *, GLint); 165 166 167 typedef void (APIENTRY *_glMultiTexCoord4f) (GLenum, GLfloat, GLfloat, GLfloat, GLfloat); 168 typedef void (APIENTRY *_glActiveStencilFaceEXT) (GLenum ); 169 170 // Needed for GL2 engine: 171 typedef void (APIENTRY *_glStencilOpSeparate) (GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass); 172 typedef void (APIENTRY *_glActiveTexture) (GLenum); 173 typedef void (APIENTRY *_glBlendColor) (GLclampf, GLclampf, GLclampf, GLclampf); 174 175 176 // EXT_GL_framebuffer_object 177 typedef GLboolean (APIENTRY *_glIsRenderbuffer) (GLuint renderbuffer); 178 typedef void (APIENTRY *_glBindRenderbuffer) (GLenum target, GLuint renderbuffer); 179 typedef void (APIENTRY *_glDeleteRenderbuffers) (GLsizei n, const GLuint *renderbuffers); 180 typedef void (APIENTRY *_glGenRenderbuffers) (GLsizei n, GLuint *renderbuffers); 181 typedef void (APIENTRY *_glRenderbufferStorage) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height); 182 typedef void (APIENTRY *_glGetRenderbufferParameteriv) (GLenum target, GLenum pname, GLint *params); 183 typedef GLboolean (APIENTRY *_glIsFramebuffer) (GLuint framebuffer); 184 typedef void (APIENTRY *_glBindFramebuffer) (GLenum target, GLuint framebuffer); 185 typedef void (APIENTRY *_glDeleteFramebuffers) (GLsizei n, const GLuint *framebuffers); 186 typedef void (APIENTRY *_glGenFramebuffers) (GLsizei n, GLuint *framebuffers); 187 typedef GLenum (APIENTRY *_glCheckFramebufferStatus) (GLenum target); 188 typedef void (APIENTRY *_glFramebufferTexture2D) (GLenum target, GLenum attachment, GLenum textarget, 189 GLuint texture, GLint level); 190 typedef void (APIENTRY *_glFramebufferRenderbuffer) (GLenum target, GLenum attachment, GLenum renderbuffertarget, 191 GLuint renderbuffer); 192 typedef void (APIENTRY *_glGetFramebufferAttachmentParameteriv) (GLenum target, GLenum attachment, GLenum pname, 193 GLint *params); 194 typedef void (APIENTRY *_glGenerateMipmap) (GLenum target); 195 196 // EXT_GL_framebuffer_blit 197 typedef void (APIENTRY *_glBlitFramebufferEXT) (int srcX0, int srcY0, int srcX1, int srcY1, 198 int dstX0, int dstY0, int dstX1, int dstY1, 199 GLbitfield mask, GLenum filter); 200 201 // EXT_GL_framebuffer_multisample 202 typedef void (APIENTRY *_glRenderbufferStorageMultisampleEXT) (GLenum target, GLsizei samples, 203 GLenum internalformat, GLsizei width, GLsizei height); 204 205 // GL_EXT_geometry_shader4 206 typedef void (APIENTRY *_glProgramParameteriEXT)(GLuint program, GLenum pname, GLint value); 207 typedef void (APIENTRY *_glFramebufferTextureEXT)(GLenum target, GLenum attachment, 208 GLuint texture, GLint level); 209 typedef void (APIENTRY *_glFramebufferTextureLayerEXT)(GLenum target, GLenum attachment, 210 GLuint texture, GLint level, GLint layer); 211 typedef void (APIENTRY *_glFramebufferTextureFaceEXT)(GLenum target, GLenum attachment, 212 GLuint texture, GLint level, GLenum face); 213 214 // ARB_texture_compression 215 typedef void (APIENTRY *_glCompressedTexImage2DARB) (GLenum, GLint, GLenum, GLsizei, 216 GLsizei, GLint, GLsizei, const GLvoid *); 217 218 #ifndef QT_NO_EGL 219 // OES_EGL_image 220 // Note: We define these to take EGLImage whereas spec says they take a new GLeglImageOES 221 // type, which the EGL image should be cast to. 222 typedef void (APIENTRY *_glEGLImageTargetTexture2DOES) (GLenum, EGLImageKHR); 223 typedef void (APIENTRY *_glEGLImageTargetRenderbufferStorageOES) (GLenum, EGLImageKHR); 224 #endif 225 226 QT_BEGIN_NAMESPACE 227 228 struct QGLExtensionFuncs 229 { QGLExtensionFuncsQGLExtensionFuncs230 QGLExtensionFuncs() { 231 #if !defined(QT_OPENGL_ES_2) 232 qt_glProgramStringARB = 0; 233 qt_glBindProgramARB = 0; 234 qt_glDeleteProgramsARB = 0; 235 qt_glGenProgramsARB = 0; 236 qt_glProgramLocalParameter4fvARB = 0; 237 238 // GLSL 239 qt_glCreateShader = 0; 240 qt_glShaderSource = 0; 241 qt_glShaderBinary = 0; 242 qt_glCompileShader = 0; 243 qt_glDeleteShader = 0; 244 qt_glIsShader = 0; 245 246 qt_glCreateProgram = 0; 247 qt_glAttachShader = 0; 248 qt_glDetachShader = 0; 249 qt_glLinkProgram = 0; 250 qt_glUseProgram = 0; 251 qt_glDeleteProgram = 0; 252 qt_glIsProgram = 0; 253 254 qt_glGetShaderInfoLog = 0; 255 qt_glGetShaderiv = 0; 256 qt_glGetShaderSource = 0; 257 qt_glGetProgramiv = 0; 258 qt_glGetProgramInfoLog = 0; 259 260 qt_glGetUniformLocation = 0; 261 qt_glUniform4fv = 0; 262 qt_glUniform3fv = 0; 263 qt_glUniform2fv = 0; 264 qt_glUniform1fv = 0; 265 qt_glUniform1i = 0; 266 qt_glUniform1iv = 0; 267 qt_glUniformMatrix2fv = 0; 268 qt_glUniformMatrix3fv = 0; 269 qt_glUniformMatrix4fv = 0; 270 qt_glUniformMatrix2x3fv = 0; 271 qt_glUniformMatrix2x4fv = 0; 272 qt_glUniformMatrix3x2fv = 0; 273 qt_glUniformMatrix3x4fv = 0; 274 qt_glUniformMatrix4x2fv = 0; 275 qt_glUniformMatrix4x3fv = 0; 276 277 qt_glBindAttribLocation = 0; 278 qt_glGetAttribLocation = 0; 279 qt_glVertexAttrib1fv = 0; 280 qt_glVertexAttrib2fv = 0; 281 qt_glVertexAttrib3fv = 0; 282 qt_glVertexAttrib4fv = 0; 283 qt_glVertexAttribPointer = 0; 284 qt_glDisableVertexAttribArray = 0; 285 qt_glEnableVertexAttribArray = 0; 286 287 // Extras for GL2 engine: 288 qt_glActiveTexture = 0; 289 qt_glStencilOpSeparate = 0; 290 qt_glBlendColor = 0; 291 292 qt_glActiveStencilFaceEXT = 0; 293 qt_glMultiTexCoord4f = 0; 294 #else 295 qt_glslResolved = false; 296 297 qt_glGetProgramBinaryOES = 0; 298 qt_glProgramBinaryOES = 0; 299 #endif 300 301 // FBOs 302 #if !defined(QT_OPENGL_ES_2) 303 qt_glIsRenderbuffer = 0; 304 qt_glBindRenderbuffer = 0; 305 qt_glDeleteRenderbuffers = 0; 306 qt_glGenRenderbuffers = 0; 307 qt_glRenderbufferStorage = 0; 308 qt_glGetRenderbufferParameteriv = 0; 309 qt_glIsFramebuffer = 0; 310 qt_glBindFramebuffer = 0; 311 qt_glDeleteFramebuffers = 0; 312 qt_glGenFramebuffers = 0; 313 qt_glCheckFramebufferStatus = 0; 314 qt_glFramebufferTexture2D = 0; 315 qt_glFramebufferRenderbuffer = 0; 316 qt_glGetFramebufferAttachmentParameteriv = 0; 317 qt_glGenerateMipmap = 0; 318 #endif 319 qt_glBlitFramebufferEXT = 0; 320 qt_glRenderbufferStorageMultisampleEXT = 0; 321 322 // Buffer objects: 323 #if defined(QGL_RESOLVE_BUFFER_FUNCS) 324 qt_glBindBuffer = 0; 325 qt_glDeleteBuffers = 0; 326 qt_glGenBuffers = 0; 327 qt_glBufferData = 0; 328 qt_glBufferSubData = 0; 329 qt_glGetBufferSubData = 0; 330 qt_glGetBufferParameteriv = 0; 331 #endif 332 qt_glMapBufferARB = 0; 333 qt_glUnmapBufferARB = 0; 334 335 qt_bufferFuncsResolved = false; 336 337 qt_glProgramParameteriEXT = 0; 338 qt_glFramebufferTextureEXT = 0; 339 qt_glFramebufferTextureLayerEXT = 0; 340 qt_glFramebufferTextureFaceEXT = 0; 341 #if !defined(QT_OPENGL_ES) 342 // Texture compression 343 qt_glCompressedTexImage2DARB = 0; 344 #endif 345 346 #ifndef QT_NO_EGL 347 // OES_EGL_image 348 qt_glEGLImageTargetTexture2DOES = 0; 349 qt_glEGLImageTargetRenderbufferStorageOES = 0; 350 #endif 351 } 352 353 354 #if !defined(QT_OPENGL_ES_2) 355 _glProgramStringARB qt_glProgramStringARB; 356 _glBindProgramARB qt_glBindProgramARB; 357 _glDeleteProgramsARB qt_glDeleteProgramsARB; 358 _glGenProgramsARB qt_glGenProgramsARB; 359 _glProgramLocalParameter4fvARB qt_glProgramLocalParameter4fvARB; 360 361 // GLSL definitions 362 _glCreateShader qt_glCreateShader; 363 _glShaderSource qt_glShaderSource; 364 _glShaderBinary qt_glShaderBinary; 365 _glCompileShader qt_glCompileShader; 366 _glDeleteShader qt_glDeleteShader; 367 _glIsShader qt_glIsShader; 368 369 _glCreateProgram qt_glCreateProgram; 370 _glAttachShader qt_glAttachShader; 371 _glDetachShader qt_glDetachShader; 372 _glLinkProgram qt_glLinkProgram; 373 _glUseProgram qt_glUseProgram; 374 _glDeleteProgram qt_glDeleteProgram; 375 _glIsProgram qt_glIsProgram; 376 377 _glGetShaderInfoLog qt_glGetShaderInfoLog; 378 _glGetShaderiv qt_glGetShaderiv; 379 _glGetShaderSource qt_glGetShaderSource; 380 _glGetProgramiv qt_glGetProgramiv; 381 _glGetProgramInfoLog qt_glGetProgramInfoLog; 382 383 _glGetUniformLocation qt_glGetUniformLocation; 384 _glUniform4fv qt_glUniform4fv; 385 _glUniform3fv qt_glUniform3fv; 386 _glUniform2fv qt_glUniform2fv; 387 _glUniform1fv qt_glUniform1fv; 388 _glUniform1i qt_glUniform1i; 389 _glUniform1iv qt_glUniform1iv; 390 _glUniformMatrix2fv qt_glUniformMatrix2fv; 391 _glUniformMatrix3fv qt_glUniformMatrix3fv; 392 _glUniformMatrix4fv qt_glUniformMatrix4fv; 393 _glUniformMatrix2x3fv qt_glUniformMatrix2x3fv; 394 _glUniformMatrix2x4fv qt_glUniformMatrix2x4fv; 395 _glUniformMatrix3x2fv qt_glUniformMatrix3x2fv; 396 _glUniformMatrix3x4fv qt_glUniformMatrix3x4fv; 397 _glUniformMatrix4x2fv qt_glUniformMatrix4x2fv; 398 _glUniformMatrix4x3fv qt_glUniformMatrix4x3fv; 399 400 _glBindAttribLocation qt_glBindAttribLocation; 401 _glGetAttribLocation qt_glGetAttribLocation; 402 _glVertexAttrib1fv qt_glVertexAttrib1fv; 403 _glVertexAttrib2fv qt_glVertexAttrib2fv; 404 _glVertexAttrib3fv qt_glVertexAttrib3fv; 405 _glVertexAttrib4fv qt_glVertexAttrib4fv; 406 _glVertexAttribPointer qt_glVertexAttribPointer; 407 _glDisableVertexAttribArray qt_glDisableVertexAttribArray; 408 _glEnableVertexAttribArray qt_glEnableVertexAttribArray; 409 410 #else 411 bool qt_glslResolved; 412 413 _glGetProgramBinaryOES qt_glGetProgramBinaryOES; 414 _glProgramBinaryOES qt_glProgramBinaryOES; 415 #endif 416 417 _glActiveStencilFaceEXT qt_glActiveStencilFaceEXT; 418 _glMultiTexCoord4f qt_glMultiTexCoord4f; 419 420 #if !defined(QT_OPENGL_ES_2) 421 // Extras needed for GL2 engine: 422 _glActiveTexture qt_glActiveTexture; 423 _glStencilOpSeparate qt_glStencilOpSeparate; 424 _glBlendColor qt_glBlendColor; 425 426 #endif 427 428 // FBOs 429 #if !defined(QT_OPENGL_ES_2) 430 _glIsRenderbuffer qt_glIsRenderbuffer; 431 _glBindRenderbuffer qt_glBindRenderbuffer; 432 _glDeleteRenderbuffers qt_glDeleteRenderbuffers; 433 _glGenRenderbuffers qt_glGenRenderbuffers; 434 _glRenderbufferStorage qt_glRenderbufferStorage; 435 _glGetRenderbufferParameteriv qt_glGetRenderbufferParameteriv; 436 _glIsFramebuffer qt_glIsFramebuffer; 437 _glBindFramebuffer qt_glBindFramebuffer; 438 _glDeleteFramebuffers qt_glDeleteFramebuffers; 439 _glGenFramebuffers qt_glGenFramebuffers; 440 _glCheckFramebufferStatus qt_glCheckFramebufferStatus; 441 _glFramebufferTexture2D qt_glFramebufferTexture2D; 442 _glFramebufferRenderbuffer qt_glFramebufferRenderbuffer; 443 _glGetFramebufferAttachmentParameteriv qt_glGetFramebufferAttachmentParameteriv; 444 _glGenerateMipmap qt_glGenerateMipmap; 445 #endif 446 _glBlitFramebufferEXT qt_glBlitFramebufferEXT; 447 _glRenderbufferStorageMultisampleEXT qt_glRenderbufferStorageMultisampleEXT; 448 449 // Buffer objects 450 #if defined(QGL_RESOLVE_BUFFER_FUNCS) 451 _glBindBuffer qt_glBindBuffer; 452 _glDeleteBuffers qt_glDeleteBuffers; 453 _glGenBuffers qt_glGenBuffers; 454 _glBufferData qt_glBufferData; 455 _glBufferSubData qt_glBufferSubData; 456 _glGetBufferSubData qt_glGetBufferSubData; 457 _glGetBufferParameteriv qt_glGetBufferParameteriv; 458 #endif 459 _glMapBufferARB qt_glMapBufferARB; 460 _glUnmapBufferARB qt_glUnmapBufferARB; 461 462 bool qt_bufferFuncsResolved; 463 464 // Geometry shaders... 465 _glProgramParameteriEXT qt_glProgramParameteriEXT; 466 _glFramebufferTextureEXT qt_glFramebufferTextureEXT; 467 _glFramebufferTextureLayerEXT qt_glFramebufferTextureLayerEXT; 468 _glFramebufferTextureFaceEXT qt_glFramebufferTextureFaceEXT; 469 #if !defined(QT_OPENGL_ES) 470 // Texture compression 471 _glCompressedTexImage2DARB qt_glCompressedTexImage2DARB; 472 #endif 473 474 #ifndef QT_NO_EGL 475 // OES_EGL_image 476 _glEGLImageTargetTexture2DOES qt_glEGLImageTargetTexture2DOES; 477 _glEGLImageTargetRenderbufferStorageOES qt_glEGLImageTargetRenderbufferStorageOES; 478 #endif 479 }; 480 481 482 // OpenGL constants 483 484 #ifndef FRAMEBUFFER_SRGB_CAPABLE_EXT 485 #define FRAMEBUFFER_SRGB_CAPABLE_EXT 0x8DBA 486 #endif 487 488 #ifndef FRAMEBUFFER_SRGB_EXT 489 #define FRAMEBUFFER_SRGB_EXT 0x8DB9 490 #endif 491 492 #ifndef GL_ARRAY_BUFFER 493 #define GL_ARRAY_BUFFER 0x8892 494 #endif 495 496 #ifndef GL_STATIC_DRAW 497 #define GL_STATIC_DRAW 0x88E4 498 #endif 499 500 /* NV_texture_rectangle */ 501 #ifndef GL_NV_texture_rectangle 502 #define GL_TEXTURE_RECTANGLE_NV 0x84F5 503 #define GL_TEXTURE_BINDING_RECTANGLE_NV 0x84F6 504 #define GL_PROXY_TEXTURE_RECTANGLE_NV 0x84F7 505 #define GL_MAX_RECTANGLE_TEXTURE_SIZE_NV 0x84F8 506 #endif 507 508 #ifndef GL_BGRA 509 #define GL_BGRA 0x80E1 510 #endif 511 512 #ifndef GL_RGB16 513 #define GL_RGB16 0x8054 514 #endif 515 516 #ifndef GL_UNSIGNED_SHORT_5_6_5 517 #define GL_UNSIGNED_SHORT_5_6_5 0x8363 518 #endif 519 520 #ifndef GL_UNSIGNED_INT_8_8_8_8_REV 521 #define GL_UNSIGNED_INT_8_8_8_8_REV 0x8367 522 #endif 523 524 #ifndef GL_MULTISAMPLE 525 #define GL_MULTISAMPLE 0x809D 526 #endif 527 528 #ifndef GL_CLAMP_TO_EDGE 529 #define GL_CLAMP_TO_EDGE 0x812F 530 #endif 531 532 #ifndef GL_IBM_texture_mirrored_repeat 533 #define GL_MIRRORED_REPEAT_IBM 0x8370 534 #endif 535 536 #ifndef GL_SGIS_generate_mipmap 537 #define GL_GENERATE_MIPMAP_SGIS 0x8191 538 #define GL_GENERATE_MIPMAP_HINT_SGIS 0x8192 539 #endif 540 541 // ARB_fragment_program extension protos 542 #ifndef GL_FRAGMENT_PROGRAM_ARB 543 #define GL_FRAGMENT_PROGRAM_ARB 0x8804 544 #define GL_PROGRAM_FORMAT_ASCII_ARB 0x8875 545 #endif 546 547 #ifndef GL_PIXEL_UNPACK_BUFFER_ARB 548 #define GL_PIXEL_UNPACK_BUFFER_ARB 0x88EC 549 #endif 550 551 #ifndef GL_WRITE_ONLY_ARB 552 #define GL_WRITE_ONLY_ARB 0x88B9 553 #endif 554 555 #ifndef GL_STREAM_DRAW_ARB 556 #define GL_STREAM_DRAW_ARB 0x88E0 557 #endif 558 559 // Stencil wrap and two-side defines 560 #ifndef GL_STENCIL_TEST_TWO_SIDE_EXT 561 #define GL_STENCIL_TEST_TWO_SIDE_EXT 0x8910 562 #endif 563 #ifndef GL_INCR_WRAP_EXT 564 #define GL_INCR_WRAP_EXT 0x8507 565 #endif 566 #ifndef GL_DECR_WRAP_EXT 567 #define GL_DECR_WRAP_EXT 0x8508 568 #endif 569 570 #ifndef GL_TEXTURE0 571 #define GL_TEXTURE0 0x84C0 572 #endif 573 574 #ifndef GL_TEXTURE1 575 #define GL_TEXTURE1 0x84C1 576 #endif 577 578 #ifndef GL_DEPTH_COMPONENT16 579 #define GL_DEPTH_COMPONENT16 0x81A5 580 #endif 581 582 #ifndef GL_DEPTH_COMPONENT24_OES 583 #define GL_DEPTH_COMPONENT24_OES 0x81A6 584 #endif 585 586 #ifndef GL_EXT_framebuffer_object 587 #define GL_INVALID_FRAMEBUFFER_OPERATION_EXT 0x0506 588 #define GL_MAX_RENDERBUFFER_SIZE_EXT 0x84E8 589 #define GL_FRAMEBUFFER_BINDING_EXT 0x8CA6 590 #define GL_RENDERBUFFER_BINDING_EXT 0x8CA7 591 #define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_EXT 0x8CD0 592 #define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_EXT 0x8CD1 593 #define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_EXT 0x8CD2 594 #define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_EXT 0x8CD3 595 #define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_EXT 0x8CD4 596 #define GL_FRAMEBUFFER_COMPLETE_EXT 0x8CD5 597 #define GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_EXT 0x8CD6 598 #define GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_EXT 0x8CD7 599 #define GL_FRAMEBUFFER_INCOMPLETE_DUPLICATE_ATTACHMENT_EXT 0x8CD8 600 #define GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT 0x8CD9 601 #define GL_FRAMEBUFFER_INCOMPLETE_FORMATS_EXT 0x8CDA 602 #define GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_EXT 0x8CDB 603 #define GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_EXT 0x8CDC 604 #define GL_FRAMEBUFFER_UNSUPPORTED_EXT 0x8CDD 605 #define GL_MAX_COLOR_ATTACHMENTS_EXT 0x8CDF 606 #define GL_COLOR_ATTACHMENT0_EXT 0x8CE0 607 #define GL_COLOR_ATTACHMENT1_EXT 0x8CE1 608 #define GL_COLOR_ATTACHMENT2_EXT 0x8CE2 609 #define GL_COLOR_ATTACHMENT3_EXT 0x8CE3 610 #define GL_COLOR_ATTACHMENT4_EXT 0x8CE4 611 #define GL_COLOR_ATTACHMENT5_EXT 0x8CE5 612 #define GL_COLOR_ATTACHMENT6_EXT 0x8CE6 613 #define GL_COLOR_ATTACHMENT7_EXT 0x8CE7 614 #define GL_COLOR_ATTACHMENT8_EXT 0x8CE8 615 #define GL_COLOR_ATTACHMENT9_EXT 0x8CE9 616 #define GL_COLOR_ATTACHMENT10_EXT 0x8CEA 617 #define GL_COLOR_ATTACHMENT11_EXT 0x8CEB 618 #define GL_COLOR_ATTACHMENT12_EXT 0x8CEC 619 #define GL_COLOR_ATTACHMENT13_EXT 0x8CED 620 #define GL_COLOR_ATTACHMENT14_EXT 0x8CEE 621 #define GL_COLOR_ATTACHMENT15_EXT 0x8CEF 622 #define GL_DEPTH_ATTACHMENT_EXT 0x8D00 623 #define GL_STENCIL_ATTACHMENT_EXT 0x8D20 624 #define GL_FRAMEBUFFER_EXT 0x8D40 625 #define GL_RENDERBUFFER_EXT 0x8D41 626 #define GL_RENDERBUFFER_WIDTH_EXT 0x8D42 627 #define GL_RENDERBUFFER_HEIGHT_EXT 0x8D43 628 #define GL_RENDERBUFFER_INTERNAL_FORMAT_EXT 0x8D44 629 #define GL_STENCIL_INDEX_EXT 0x8D45 630 #define GL_STENCIL_INDEX1_EXT 0x8D46 631 #define GL_STENCIL_INDEX4_EXT 0x8D47 632 #define GL_STENCIL_INDEX8_EXT 0x8D48 633 #define GL_STENCIL_INDEX16_EXT 0x8D49 634 #define GL_RENDERBUFFER_RED_SIZE_EXT 0x8D50 635 #define GL_RENDERBUFFER_GREEN_SIZE_EXT 0x8D51 636 #define GL_RENDERBUFFER_BLUE_SIZE_EXT 0x8D52 637 #define GL_RENDERBUFFER_ALPHA_SIZE_EXT 0x8D53 638 #define GL_RENDERBUFFER_DEPTH_SIZE_EXT 0x8D54 639 #define GL_RENDERBUFFER_STENCIL_SIZE_EXT 0x8D55 640 #endif 641 642 // GL_EXT_framebuffer_blit 643 #ifndef GL_READ_FRAMEBUFFER_EXT 644 #define GL_READ_FRAMEBUFFER_EXT 0x8CA8 645 #endif 646 647 // GL_EXT_framebuffer_multisample 648 #ifndef GL_RENDERBUFFER_SAMPLES_EXT 649 #define GL_RENDERBUFFER_SAMPLES_EXT 0x8CAB 650 #endif 651 652 #ifndef GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_EXT 653 #define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_EXT 0x8D56 654 #endif 655 656 #ifndef GL_MAX_SAMPLES_EXT 657 #define GL_MAX_SAMPLES_EXT 0x8D57 658 #endif 659 660 #ifndef GL_DRAW_FRAMEBUFFER_EXT 661 #define GL_DRAW_FRAMEBUFFER_EXT 0x8CA9 662 #endif 663 664 #ifndef GL_EXT_packed_depth_stencil 665 #define GL_DEPTH_STENCIL_EXT 0x84F9 666 #define GL_UNSIGNED_INT_24_8_EXT 0x84FA 667 #define GL_DEPTH24_STENCIL8_EXT 0x88F0 668 #define GL_TEXTURE_STENCIL_SIZE_EXT 0x88F1 669 #endif 670 671 // ### hm. should be part of the GL 1.2 spec.. 672 #ifndef GL_CLAMP_TO_EDGE 673 #define GL_CLAMP_TO_EDGE 0x812F 674 #endif 675 676 #ifndef GL_VERSION_1_2 677 #define GL_PACK_SKIP_IMAGES 0x806B 678 #define GL_PACK_IMAGE_HEIGHT 0x806C 679 #define GL_UNPACK_SKIP_IMAGES 0x806D 680 #define GL_UNPACK_IMAGE_HEIGHT 0x806E 681 #endif 682 683 #ifndef GL_VERSION_1_4 684 #define GL_CONSTANT_COLOR 0x8001 685 #define GL_ONE_MINUS_CONSTANT_COLOR 0x8002 686 #define GL_CONSTANT_ALPHA 0x8003 687 #define GL_ONE_MINUS_CONSTANT_ALPHA 0x8004 688 #define GL_INCR_WRAP 0x8507 689 #define GL_DECR_WRAP 0x8508 690 #endif 691 692 #ifndef GL_VERSION_1_5 693 #define GL_ARRAY_BUFFER 0x8892 694 #define GL_ELEMENT_ARRAY_BUFFER 0x8893 695 #define GL_STREAM_DRAW 0x88E0 696 #define GL_STREAM_READ 0x88E1 697 #define GL_STREAM_COPY 0x88E2 698 #define GL_STATIC_DRAW 0x88E4 699 #define GL_STATIC_READ 0x88E5 700 #define GL_STATIC_COPY 0x88E6 701 #define GL_DYNAMIC_DRAW 0x88E8 702 #define GL_DYNAMIC_READ 0x88E9 703 #define GL_DYNAMIC_COPY 0x88EA 704 #endif 705 706 #ifndef GL_VERSION_2_0 707 #define GL_FRAGMENT_SHADER 0x8B30 708 #define GL_VERTEX_SHADER 0x8B31 709 #define GL_FLOAT_VEC2 0x8B50 710 #define GL_FLOAT_VEC3 0x8B51 711 #define GL_FLOAT_VEC4 0x8B52 712 #define GL_INT_VEC2 0x8B53 713 #define GL_INT_VEC3 0x8B54 714 #define GL_INT_VEC4 0x8B55 715 #define GL_BOOL 0x8B56 716 #define GL_BOOL_VEC2 0x8B57 717 #define GL_BOOL_VEC3 0x8B58 718 #define GL_BOOL_VEC4 0x8B59 719 #define GL_FLOAT_MAT2 0x8B5A 720 #define GL_FLOAT_MAT3 0x8B5B 721 #define GL_FLOAT_MAT4 0x8B5C 722 #define GL_SAMPLER_1D 0x8B5D 723 #define GL_SAMPLER_2D 0x8B5E 724 #define GL_SAMPLER_3D 0x8B5F 725 #define GL_SAMPLER_CUBE 0x8B60 726 #define GL_COMPILE_STATUS 0x8B81 727 #define GL_LINK_STATUS 0x8B82 728 #define GL_INFO_LOG_LENGTH 0x8B84 729 #define GL_ACTIVE_UNIFORMS 0x8B86 730 #define GL_ACTIVE_UNIFORM_MAX_LENGTH 0x8B87 731 #define GL_ACTIVE_ATTRIBUTES 0x8B89 732 #define GL_ACTIVE_ATTRIBUTE_MAX_LENGTH 0x8B8A 733 #endif 734 735 // Geometry shader defines 736 #ifndef GL_GEOMETRY_SHADER_EXT 737 # define GL_GEOMETRY_SHADER_EXT 0x8DD9 738 # define GL_GEOMETRY_VERTICES_OUT_EXT 0x8DDA 739 # define GL_GEOMETRY_INPUT_TYPE_EXT 0x8DDB 740 # define GL_GEOMETRY_OUTPUT_TYPE_EXT 0x8DDC 741 # define GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_EXT 0x8C29 742 # define GL_MAX_GEOMETRY_VARYING_COMPONENTS_EXT 0x8DDD 743 # define GL_MAX_VERTEX_VARYING_COMPONENTS_EXT 0x8DDE 744 # define GL_MAX_VARYING_COMPONENTS_EXT 0x8B4B 745 # define GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_EXT 0x8DDF 746 # define GL_MAX_GEOMETRY_OUTPUT_VERTICES_EXT 0x8DE0 747 # define GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_EXT 0x8DE1 748 # define GL_LINES_ADJACENCY_EXT 0xA 749 # define GL_LINE_STRIP_ADJACENCY_EXT 0xB 750 # define GL_TRIANGLES_ADJACENCY_EXT 0xC 751 # define GL_TRIANGLE_STRIP_ADJACENCY_EXT 0xD 752 # define GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_EXT 0x8DA8 753 # define GL_FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_EXT 0x8DA9 754 # define GL_FRAMEBUFFER_ATTACHMENT_LAYERED_EXT 0x8DA7 755 # define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER_EXT 0x8CD4 756 # define GL_PROGRAM_POINT_SIZE_EXT 0x8642 757 #endif 758 759 #if !defined(QT_OPENGL_ES_2) 760 #define glProgramStringARB QGLContextPrivate::extensionFuncs(ctx).qt_glProgramStringARB 761 #define glBindProgramARB QGLContextPrivate::extensionFuncs(ctx).qt_glBindProgramARB 762 #define glDeleteProgramsARB QGLContextPrivate::extensionFuncs(ctx).qt_glDeleteProgramsARB 763 #define glGenProgramsARB QGLContextPrivate::extensionFuncs(ctx).qt_glGenProgramsARB 764 #define glProgramLocalParameter4fvARB QGLContextPrivate::extensionFuncs(ctx).qt_glProgramLocalParameter4fvARB 765 766 #define glActiveStencilFaceEXT QGLContextPrivate::extensionFuncs(ctx).qt_glActiveStencilFaceEXT 767 768 #define glMultiTexCoord4f QGLContextPrivate::extensionFuncs(ctx).qt_glMultiTexCoord4f 769 770 #define glActiveTexture QGLContextPrivate::extensionFuncs(ctx).qt_glActiveTexture 771 #endif // !defined(QT_OPENGL_ES_2) 772 773 774 // FBOs 775 #if !defined(QT_OPENGL_ES_2) 776 #define glIsRenderbuffer QGLContextPrivate::extensionFuncs(ctx).qt_glIsRenderbuffer 777 #define glBindRenderbuffer QGLContextPrivate::extensionFuncs(ctx).qt_glBindRenderbuffer 778 #define glDeleteRenderbuffers QGLContextPrivate::extensionFuncs(ctx).qt_glDeleteRenderbuffers 779 #define glGenRenderbuffers QGLContextPrivate::extensionFuncs(ctx).qt_glGenRenderbuffers 780 #define glRenderbufferStorage QGLContextPrivate::extensionFuncs(ctx).qt_glRenderbufferStorage 781 #define glGetRenderbufferParameteriv QGLContextPrivate::extensionFuncs(ctx).qt_glGetRenderbufferParameteriv 782 #define glIsFramebuffer QGLContextPrivate::extensionFuncs(ctx).qt_glIsFramebuffer 783 #define glBindFramebuffer QGLContextPrivate::extensionFuncs(ctx).qt_glBindFramebuffer 784 #define glDeleteFramebuffers QGLContextPrivate::extensionFuncs(ctx).qt_glDeleteFramebuffers 785 #define glGenFramebuffers QGLContextPrivate::extensionFuncs(ctx).qt_glGenFramebuffers 786 #define glCheckFramebufferStatus QGLContextPrivate::extensionFuncs(ctx).qt_glCheckFramebufferStatus 787 #define glFramebufferTexture2D QGLContextPrivate::extensionFuncs(ctx).qt_glFramebufferTexture2D 788 #define glFramebufferRenderbuffer QGLContextPrivate::extensionFuncs(ctx).qt_glFramebufferRenderbuffer 789 #define glGetFramebufferAttachmentParameteriv QGLContextPrivate::extensionFuncs(ctx).qt_glGetFramebufferAttachmentParameteriv 790 #define glGenerateMipmap QGLContextPrivate::extensionFuncs(ctx).qt_glGenerateMipmap 791 #endif // QT_OPENGL_ES_2 792 #define glBlitFramebufferEXT QGLContextPrivate::extensionFuncs(ctx).qt_glBlitFramebufferEXT 793 #define glRenderbufferStorageMultisampleEXT QGLContextPrivate::extensionFuncs(ctx).qt_glRenderbufferStorageMultisampleEXT 794 795 796 // Buffer objects 797 #if defined(QGL_RESOLVE_BUFFER_FUNCS) 798 #define glBindBuffer QGLContextPrivate::extensionFuncs(ctx).qt_glBindBuffer 799 #define glDeleteBuffers QGLContextPrivate::extensionFuncs(ctx).qt_glDeleteBuffers 800 #define glGenBuffers QGLContextPrivate::extensionFuncs(ctx).qt_glGenBuffers 801 #define glBufferData QGLContextPrivate::extensionFuncs(ctx).qt_glBufferData 802 #define glBufferSubData QGLContextPrivate::extensionFuncs(ctx).qt_glBufferSubData 803 #define glGetBufferSubData QGLContextPrivate::extensionFuncs(ctx).qt_glGetBufferSubData 804 #define glGetBufferParameteriv QGLContextPrivate::extensionFuncs(ctx).qt_glGetBufferParameteriv 805 #endif 806 #define glMapBufferARB QGLContextPrivate::extensionFuncs(ctx).qt_glMapBufferARB 807 #define glUnmapBufferARB QGLContextPrivate::extensionFuncs(ctx).qt_glUnmapBufferARB 808 809 810 // GLSL 811 #if !defined(QT_OPENGL_ES_2) 812 813 #define glCreateShader QGLContextPrivate::extensionFuncs(ctx).qt_glCreateShader 814 #define glShaderSource QGLContextPrivate::extensionFuncs(ctx).qt_glShaderSource 815 #define glShaderBinary QGLContextPrivate::extensionFuncs(ctx).qt_glShaderBinary 816 #define glCompileShader QGLContextPrivate::extensionFuncs(ctx).qt_glCompileShader 817 #define glDeleteShader QGLContextPrivate::extensionFuncs(ctx).qt_glDeleteShader 818 #define glIsShader QGLContextPrivate::extensionFuncs(ctx).qt_glIsShader 819 820 #define glCreateProgram QGLContextPrivate::extensionFuncs(ctx).qt_glCreateProgram 821 #define glAttachShader QGLContextPrivate::extensionFuncs(ctx).qt_glAttachShader 822 #define glDetachShader QGLContextPrivate::extensionFuncs(ctx).qt_glDetachShader 823 #define glLinkProgram QGLContextPrivate::extensionFuncs(ctx).qt_glLinkProgram 824 #define glUseProgram QGLContextPrivate::extensionFuncs(ctx).qt_glUseProgram 825 #define glDeleteProgram QGLContextPrivate::extensionFuncs(ctx).qt_glDeleteProgram 826 #define glIsProgram QGLContextPrivate::extensionFuncs(ctx).qt_glIsProgram 827 828 #define glGetShaderInfoLog QGLContextPrivate::extensionFuncs(ctx).qt_glGetShaderInfoLog 829 #define glGetShaderiv QGLContextPrivate::extensionFuncs(ctx).qt_glGetShaderiv 830 #define glGetShaderSource QGLContextPrivate::extensionFuncs(ctx).qt_glGetShaderSource 831 #define glGetProgramiv QGLContextPrivate::extensionFuncs(ctx).qt_glGetProgramiv 832 #define glGetProgramInfoLog QGLContextPrivate::extensionFuncs(ctx).qt_glGetProgramInfoLog 833 834 #define glGetUniformLocation QGLContextPrivate::extensionFuncs(ctx).qt_glGetUniformLocation 835 #define glUniform4fv QGLContextPrivate::extensionFuncs(ctx).qt_glUniform4fv 836 #define glUniform3fv QGLContextPrivate::extensionFuncs(ctx).qt_glUniform3fv 837 #define glUniform2fv QGLContextPrivate::extensionFuncs(ctx).qt_glUniform2fv 838 #define glUniform1fv QGLContextPrivate::extensionFuncs(ctx).qt_glUniform1fv 839 #define glUniform1i QGLContextPrivate::extensionFuncs(ctx).qt_glUniform1i 840 #define glUniform1iv QGLContextPrivate::extensionFuncs(ctx).qt_glUniform1iv 841 #define glUniformMatrix2fv QGLContextPrivate::extensionFuncs(ctx).qt_glUniformMatrix2fv 842 #define glUniformMatrix3fv QGLContextPrivate::extensionFuncs(ctx).qt_glUniformMatrix3fv 843 #define glUniformMatrix4fv QGLContextPrivate::extensionFuncs(ctx).qt_glUniformMatrix4fv 844 #define glUniformMatrix2x3fv QGLContextPrivate::extensionFuncs(ctx).qt_glUniformMatrix2x3fv 845 #define glUniformMatrix2x4fv QGLContextPrivate::extensionFuncs(ctx).qt_glUniformMatrix2x4fv 846 #define glUniformMatrix3x2fv QGLContextPrivate::extensionFuncs(ctx).qt_glUniformMatrix3x2fv 847 #define glUniformMatrix3x4fv QGLContextPrivate::extensionFuncs(ctx).qt_glUniformMatrix3x4fv 848 #define glUniformMatrix4x2fv QGLContextPrivate::extensionFuncs(ctx).qt_glUniformMatrix4x2fv 849 #define glUniformMatrix4x3fv QGLContextPrivate::extensionFuncs(ctx).qt_glUniformMatrix4x3fv 850 851 #define glBindAttribLocation QGLContextPrivate::extensionFuncs(ctx).qt_glBindAttribLocation 852 #define glGetAttribLocation QGLContextPrivate::extensionFuncs(ctx).qt_glGetAttribLocation 853 #define glVertexAttrib1fv QGLContextPrivate::extensionFuncs(ctx).qt_glVertexAttrib1fv 854 #define glVertexAttrib2fv QGLContextPrivate::extensionFuncs(ctx).qt_glVertexAttrib2fv 855 #define glVertexAttrib3fv QGLContextPrivate::extensionFuncs(ctx).qt_glVertexAttrib3fv 856 #define glVertexAttrib4fv QGLContextPrivate::extensionFuncs(ctx).qt_glVertexAttrib4fv 857 #define glVertexAttribPointer QGLContextPrivate::extensionFuncs(ctx).qt_glVertexAttribPointer 858 #define glDisableVertexAttribArray QGLContextPrivate::extensionFuncs(ctx).qt_glDisableVertexAttribArray 859 #define glEnableVertexAttribArray QGLContextPrivate::extensionFuncs(ctx).qt_glEnableVertexAttribArray 860 861 #else // QT_OPENGL_ES_2 862 863 #define glGetProgramBinaryOES QGLContextPrivate::extensionFuncs(ctx).qt_glGetProgramBinaryOES 864 #define glProgramBinaryOES QGLContextPrivate::extensionFuncs(ctx).qt_glProgramBinaryOES 865 866 #endif // QT_OPENGL_ES_2 867 868 869 #if !defined(QT_OPENGL_ES_2) 870 #define glStencilOpSeparate QGLContextPrivate::extensionFuncs(ctx).qt_glStencilOpSeparate 871 #define glBlendColor QGLContextPrivate::extensionFuncs(ctx).qt_glBlendColor 872 #endif 873 874 #if defined(QT_OPENGL_ES_2) 875 #define glClearDepth glClearDepthf 876 #endif 877 878 #define glProgramParameteriEXT QGLContextPrivate::extensionFuncs(ctx).qt_glProgramParameteriEXT 879 #define glFramebufferTextureEXT QGLContextPrivate::extensionFuncs(ctx).qt_glFramebufferTextureEXT 880 #define glFramebufferTextureLayerEXT QGLContextPrivate::extensionFuncs(ctx).qt_glFramebufferTextureLayerEXT 881 #define glFramebufferTextureFaceEXT QGLContextPrivate::extensionFuncs(ctx).qt_glFramebufferTextureFaceEXT 882 883 #if !defined(QT_OPENGL_ES) 884 #define glCompressedTexImage2D QGLContextPrivate::extensionFuncs(ctx).qt_glCompressedTexImage2DARB 885 #endif 886 887 #ifndef QT_NO_EGL 888 // OES_EGL_image 889 #define glEGLImageTargetTexture2DOES QGLContextPrivate::extensionFuncs(ctx).qt_glEGLImageTargetTexture2DOES 890 #define glEGLImageTargetRenderbufferStorageOES QGLContextPrivate::extensionFuncs(ctx).qt_glEGLImageTargetRenderbufferStorageOES 891 #endif 892 893 extern bool qt_resolve_framebufferobject_extensions(QGLContext *ctx); 894 bool Q_OPENGL_EXPORT qt_resolve_buffer_extensions(QGLContext *ctx); 895 896 bool qt_resolve_version_1_3_functions(QGLContext *ctx); 897 bool Q_OPENGL_EXPORT qt_resolve_version_2_0_functions(QGLContext *ctx); 898 bool qt_resolve_stencil_face_extension(QGLContext *ctx); 899 bool qt_resolve_frag_program_extensions(QGLContext *ctx); 900 901 bool qt_resolve_glsl_extensions(QGLContext *ctx); 902 903 #ifndef QT_NO_EGL 904 Q_OPENGL_EXPORT bool qt_resolve_eglimage_gl_extensions(QGLContext *ctx); 905 #endif 906 907 QT_END_NAMESPACE 908 909 #endif // QGL_EXTENSIONS_P_H 910