1 /* 2 * Copyright 2013 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 #include <EGL/egl.h> 18 #include "gl3stub.h" 19 20 GLboolean gl3stubInit() 21 { 22 #define FIND_PROC(s) s = (void*)eglGetProcAddress(#s); 23 FIND_PROC( glReadBuffer ); 24 FIND_PROC( glDrawRangeElements ); 25 FIND_PROC( glTexImage3D ); 26 FIND_PROC( glTexSubImage3D ); 27 FIND_PROC( glCopyTexSubImage3D ); 28 FIND_PROC( glCompressedTexImage3D ); 29 FIND_PROC( glCompressedTexSubImage3D ); 30 FIND_PROC( glGenQueries ); 31 FIND_PROC( glDeleteQueries ); 32 FIND_PROC( glIsQuery ); 33 FIND_PROC( glBeginQuery ); 34 FIND_PROC( glEndQuery ); 35 FIND_PROC( glGetQueryiv ); 36 FIND_PROC( glGetQueryObjectuiv ); 37 FIND_PROC( glUnmapBuffer ); 38 FIND_PROC( glGetBufferPointerv ); 39 FIND_PROC( glDrawBuffers ); 40 FIND_PROC( glUniformMatrix2x3fv ); 41 FIND_PROC( glUniformMatrix3x2fv ); 42 FIND_PROC( glUniformMatrix2x4fv ); 43 FIND_PROC( glUniformMatrix4x2fv ); 44 FIND_PROC( glUniformMatrix3x4fv ); 45 FIND_PROC( glUniformMatrix4x3fv ); 46 FIND_PROC( glBlitFramebuffer ); 47 FIND_PROC( glRenderbufferStorageMultisample ); 48 FIND_PROC( glFramebufferTextureLayer ); 49 FIND_PROC( glMapBufferRange ); 50 FIND_PROC( glFlushMappedBufferRange ); 51 FIND_PROC( glBindVertexArray ); 52 FIND_PROC( glDeleteVertexArrays ); 53 FIND_PROC( glGenVertexArrays ); 54 FIND_PROC( glIsVertexArray ); 55 FIND_PROC( glGetIntegeri_v ); 56 FIND_PROC( glBeginTransformFeedback ); 57 FIND_PROC( glEndTransformFeedback ); 58 FIND_PROC( glBindBufferRange ); 59 FIND_PROC( glBindBufferBase ); 60 FIND_PROC( glTransformFeedbackVaryings ); 61 FIND_PROC( glGetTransformFeedbackVarying ); 62 FIND_PROC( glVertexAttribIPointer ); 63 FIND_PROC( glGetVertexAttribIiv ); 64 FIND_PROC( glGetVertexAttribIuiv ); 65 FIND_PROC( glVertexAttribI4i ); 66 FIND_PROC( glVertexAttribI4ui ); 67 FIND_PROC( glVertexAttribI4iv ); 68 FIND_PROC( glVertexAttribI4uiv ); 69 FIND_PROC( glGetUniformuiv ); 70 FIND_PROC( glGetFragDataLocation ); 71 FIND_PROC( glUniform1ui ); 72 FIND_PROC( glUniform2ui ); 73 FIND_PROC( glUniform3ui ); 74 FIND_PROC( glUniform4ui ); 75 FIND_PROC( glUniform1uiv ); 76 FIND_PROC( glUniform2uiv ); 77 FIND_PROC( glUniform3uiv ); 78 FIND_PROC( glUniform4uiv ); 79 FIND_PROC( glClearBufferiv ); 80 FIND_PROC( glClearBufferuiv ); 81 FIND_PROC( glClearBufferfv ); 82 FIND_PROC( glClearBufferfi ); 83 FIND_PROC( glGetStringi ); 84 FIND_PROC( glCopyBufferSubData ); 85 FIND_PROC( glGetUniformIndices ); 86 FIND_PROC( glGetActiveUniformsiv ); 87 FIND_PROC( glGetUniformBlockIndex ); 88 FIND_PROC( glGetActiveUniformBlockiv ); 89 FIND_PROC( glGetActiveUniformBlockName ); 90 FIND_PROC( glUniformBlockBinding ); 91 FIND_PROC( glDrawArraysInstanced ); 92 FIND_PROC( glDrawElementsInstanced ); 93 FIND_PROC( glFenceSync ); 94 FIND_PROC( glIsSync ); 95 FIND_PROC( glDeleteSync ); 96 FIND_PROC( glClientWaitSync ); 97 FIND_PROC( glWaitSync ); 98 FIND_PROC( glGetInteger64v ); 99 FIND_PROC( glGetSynciv ); 100 FIND_PROC( glGetInteger64i_v ); 101 FIND_PROC( glGetBufferParameteri64v ); 102 FIND_PROC( glGenSamplers ); 103 FIND_PROC( glDeleteSamplers ); 104 FIND_PROC( glIsSampler ); 105 FIND_PROC( glBindSampler ); 106 FIND_PROC( glSamplerParameteri ); 107 FIND_PROC( glSamplerParameteriv ); 108 FIND_PROC( glSamplerParameterf ); 109 FIND_PROC( glSamplerParameterfv ); 110 FIND_PROC( glGetSamplerParameteriv ); 111 FIND_PROC( glGetSamplerParameterfv ); 112 FIND_PROC( glVertexAttribDivisor ); 113 FIND_PROC( glBindTransformFeedback ); 114 FIND_PROC( glDeleteTransformFeedbacks ); 115 FIND_PROC( glGenTransformFeedbacks ); 116 FIND_PROC( glIsTransformFeedback ); 117 FIND_PROC( glPauseTransformFeedback ); 118 FIND_PROC( glResumeTransformFeedback ); 119 FIND_PROC( glGetProgramBinary ); 120 FIND_PROC( glProgramBinary ); 121 FIND_PROC( glProgramParameteri ); 122 FIND_PROC( glInvalidateFramebuffer ); 123 FIND_PROC( glInvalidateSubFramebuffer ); 124 FIND_PROC( glTexStorage2D ); 125 FIND_PROC( glTexStorage3D ); 126 FIND_PROC( glGetInternalformativ ); 127 #undef FIND_PROC 128 129 if( !glReadBuffer || !glDrawRangeElements || !glTexImage3D || !glTexSubImage3D 130 || !glCopyTexSubImage3D || !glCompressedTexImage3D 131 || !glCompressedTexSubImage3D || !glGenQueries || !glDeleteQueries 132 || !glIsQuery || !glBeginQuery || !glEndQuery || !glGetQueryiv 133 || !glGetQueryObjectuiv || !glUnmapBuffer || !glGetBufferPointerv 134 || !glDrawBuffers || !glUniformMatrix2x3fv || !glUniformMatrix3x2fv 135 || !glUniformMatrix2x4fv || !glUniformMatrix4x2fv || !glUniformMatrix3x4fv 136 || !glUniformMatrix4x3fv || !glBlitFramebuffer 137 || !glRenderbufferStorageMultisample || !glFramebufferTextureLayer 138 || !glMapBufferRange || !glFlushMappedBufferRange || !glBindVertexArray 139 || !glDeleteVertexArrays || !glGenVertexArrays || !glIsVertexArray 140 || !glGetIntegeri_v || !glBeginTransformFeedback || !glEndTransformFeedback 141 || !glBindBufferRange || !glBindBufferBase || !glTransformFeedbackVaryings 142 || !glGetTransformFeedbackVarying || !glVertexAttribIPointer 143 || !glGetVertexAttribIiv || !glGetVertexAttribIuiv || !glVertexAttribI4i 144 || !glVertexAttribI4ui || !glVertexAttribI4iv || !glVertexAttribI4uiv 145 || !glGetUniformuiv || !glGetFragDataLocation || !glUniform1ui 146 || !glUniform2ui || !glUniform3ui || !glUniform4ui || !glUniform1uiv 147 || !glUniform2uiv || !glUniform3uiv || !glUniform4uiv || !glClearBufferiv 148 || !glClearBufferuiv || !glClearBufferfv || !glClearBufferfi || !glGetStringi 149 || !glCopyBufferSubData || !glGetUniformIndices || !glGetActiveUniformsiv 150 || !glGetUniformBlockIndex || !glGetActiveUniformBlockiv 151 || !glGetActiveUniformBlockName || !glUniformBlockBinding 152 || !glDrawArraysInstanced || !glDrawElementsInstanced || !glFenceSync 153 || !glIsSync || !glDeleteSync || !glClientWaitSync || !glWaitSync 154 || !glGetInteger64v || !glGetSynciv || !glGetInteger64i_v 155 || !glGetBufferParameteri64v || !glGenSamplers || !glDeleteSamplers 156 || !glIsSampler || !glBindSampler || !glSamplerParameteri 157 || !glSamplerParameteriv || !glSamplerParameterf || !glSamplerParameterfv 158 || !glGetSamplerParameteriv || !glGetSamplerParameterfv 159 || !glVertexAttribDivisor || !glBindTransformFeedback 160 || !glDeleteTransformFeedbacks || !glGenTransformFeedbacks 161 || !glIsTransformFeedback || !glPauseTransformFeedback 162 || !glResumeTransformFeedback || !glGetProgramBinary || !glProgramBinary 163 || !glProgramParameteri || !glInvalidateFramebuffer 164 || !glInvalidateSubFramebuffer || !glTexStorage2D || !glTexStorage3D 165 || !glGetInternalformativ ) 166 { 167 return GL_FALSE; 168 } 169 170 return GL_TRUE; 171 } 172 173 /* Function pointer definitions */GL_APICALL void (* GL_APIENTRY glReadBuffer)( GLenum mode ); 174 GL_APICALL void (* GL_APIENTRY glDrawRangeElements)( GLenum mode, 175 GLuint start, 176 GLuint end, 177 GLsizei count, 178 GLenum type, 179 const GLvoid* indices ); 180 GL_APICALL void (* GL_APIENTRY glTexImage3D)( GLenum target, 181 GLint level, 182 GLint internalformat, 183 GLsizei width, 184 GLsizei height, 185 GLsizei depth, 186 GLint border, 187 GLenum format, 188 GLenum type, 189 const GLvoid* pixels ); 190 GL_APICALL void (* GL_APIENTRY glTexSubImage3D)( GLenum target, 191 GLint level, 192 GLint xoffset, 193 GLint yoffset, 194 GLint zoffset, 195 GLsizei width, 196 GLsizei height, 197 GLsizei depth, 198 GLenum format, 199 GLenum type, 200 const GLvoid* pixels ); 201 GL_APICALL void (* GL_APIENTRY glCopyTexSubImage3D)( GLenum target, 202 GLint level, 203 GLint xoffset, 204 GLint yoffset, 205 GLint zoffset, 206 GLint x, 207 GLint y, 208 GLsizei width, 209 GLsizei height ); 210 GL_APICALL void (* GL_APIENTRY glCompressedTexImage3D)( GLenum target, 211 GLint level, 212 GLenum internalformat, 213 GLsizei width, 214 GLsizei height, 215 GLsizei depth, 216 GLint border, 217 GLsizei imageSize, 218 const GLvoid* data ); 219 GL_APICALL void (* GL_APIENTRY glCompressedTexSubImage3D)( GLenum target, 220 GLint level, 221 GLint xoffset, 222 GLint yoffset, 223 GLint zoffset, 224 GLsizei width, 225 GLsizei height, 226 GLsizei depth, 227 GLenum format, 228 GLsizei imageSize, 229 const GLvoid* data ); 230 GL_APICALL void (* GL_APIENTRY glGenQueries)( GLsizei n, GLuint* ids ); 231 GL_APICALL void (* GL_APIENTRY glDeleteQueries)( GLsizei n, const GLuint* ids ); 232 GL_APICALL GLboolean (* GL_APIENTRY glIsQuery)( GLuint id ); 233 GL_APICALL void (* GL_APIENTRY glBeginQuery)( GLenum target, GLuint id ); 234 GL_APICALL void (* GL_APIENTRY glEndQuery)( GLenum target ); 235 GL_APICALL void (* GL_APIENTRY glGetQueryiv)( GLenum target, GLenum pname, GLint* params ); 236 GL_APICALL void (* GL_APIENTRY glGetQueryObjectuiv)( GLuint id, 237 GLenum pname, 238 GLuint* params ); 239 GL_APICALL GLboolean (* GL_APIENTRY glUnmapBuffer)( GLenum target ); 240 GL_APICALL void (* GL_APIENTRY glGetBufferPointerv)( GLenum target, 241 GLenum pname, 242 GLvoid** params ); 243 GL_APICALL void (* GL_APIENTRY glDrawBuffers)( GLsizei n, const GLenum* bufs ); 244 GL_APICALL void (* GL_APIENTRY glUniformMatrix2x3fv)( GLint location, 245 GLsizei count, 246 GLboolean transpose, 247 const GLfloat* value ); 248 GL_APICALL void (* GL_APIENTRY glUniformMatrix3x2fv)( GLint location, 249 GLsizei count, 250 GLboolean transpose, 251 const GLfloat* value ); 252 GL_APICALL void (* GL_APIENTRY glUniformMatrix2x4fv)( GLint location, 253 GLsizei count, 254 GLboolean transpose, 255 const GLfloat* value ); 256 GL_APICALL void (* GL_APIENTRY glUniformMatrix4x2fv)( GLint location, 257 GLsizei count, 258 GLboolean transpose, 259 const GLfloat* value ); 260 GL_APICALL void (* GL_APIENTRY glUniformMatrix3x4fv)( GLint location, 261 GLsizei count, 262 GLboolean transpose, 263 const GLfloat* value ); 264 GL_APICALL void (* GL_APIENTRY glUniformMatrix4x3fv)( GLint location, 265 GLsizei count, 266 GLboolean transpose, 267 const GLfloat* value ); 268 GL_APICALL void (* GL_APIENTRY glBlitFramebuffer)( GLint srcX0, 269 GLint srcY0, 270 GLint srcX1, 271 GLint srcY1, 272 GLint dstX0, 273 GLint dstY0, 274 GLint dstX1, 275 GLint dstY1, 276 GLbitfield mask, 277 GLenum filter ); 278 GL_APICALL void (* GL_APIENTRY glRenderbufferStorageMultisample)( GLenum target, 279 GLsizei samples, 280 GLenum internalformat, 281 GLsizei width, 282 GLsizei height ); 283 GL_APICALL void (* GL_APIENTRY glFramebufferTextureLayer)( GLenum target, 284 GLenum attachment, 285 GLuint texture, 286 GLint level, 287 GLint layer ); 288 GL_APICALL GLvoid* (* GL_APIENTRY glMapBufferRange)( GLenum target, 289 GLintptr offset, 290 GLsizeiptr length, 291 GLbitfield access ); 292 GL_APICALL void (* GL_APIENTRY glFlushMappedBufferRange)( GLenum target, 293 GLintptr offset, 294 GLsizeiptr length ); 295 GL_APICALL void (* GL_APIENTRY glBindVertexArray)( GLuint array ); 296 GL_APICALL void (* GL_APIENTRY glDeleteVertexArrays)( GLsizei n, const GLuint* arrays ); 297 GL_APICALL void (* GL_APIENTRY glGenVertexArrays)( GLsizei n, GLuint* arrays ); 298 GL_APICALL GLboolean (* GL_APIENTRY glIsVertexArray)( GLuint array ); 299 GL_APICALL void (* GL_APIENTRY glGetIntegeri_v)( GLenum target, 300 GLuint index, 301 GLint* data ); 302 GL_APICALL void (* GL_APIENTRY glBeginTransformFeedback)( GLenum primitiveMode ); 303 GL_APICALL void (* GL_APIENTRY glEndTransformFeedback)( void ); 304 GL_APICALL void (* GL_APIENTRY glBindBufferRange)( GLenum target, 305 GLuint index, 306 GLuint buffer, 307 GLintptr offset, 308 GLsizeiptr size ); 309 GL_APICALL void (* GL_APIENTRY glBindBufferBase)( GLenum target, 310 GLuint index, 311 GLuint buffer ); 312 GL_APICALL void (* GL_APIENTRY glTransformFeedbackVaryings)( GLuint program, 313 GLsizei count, 314 const GLchar* const * varyings, 315 GLenum bufferMode ); 316 GL_APICALL void (* GL_APIENTRY glGetTransformFeedbackVarying)( GLuint program, 317 GLuint index, 318 GLsizei bufSize, 319 GLsizei* length, 320 GLsizei* size, 321 GLenum* type, 322 GLchar* name ); 323 GL_APICALL void (* GL_APIENTRY glVertexAttribIPointer)( GLuint index, 324 GLint size, 325 GLenum type, 326 GLsizei stride, 327 const GLvoid* pointer ); 328 GL_APICALL void (* GL_APIENTRY glGetVertexAttribIiv)( GLuint index, 329 GLenum pname, 330 GLint* params ); 331 GL_APICALL void (* GL_APIENTRY glGetVertexAttribIuiv)( GLuint index, 332 GLenum pname, 333 GLuint* params ); 334 GL_APICALL void (* GL_APIENTRY glVertexAttribI4i)( GLuint index, 335 GLint x, 336 GLint y, 337 GLint z, 338 GLint w ); 339 GL_APICALL void (* GL_APIENTRY glVertexAttribI4ui)( GLuint index, 340 GLuint x, 341 GLuint y, 342 GLuint z, 343 GLuint w ); 344 GL_APICALL void (* GL_APIENTRY glVertexAttribI4iv)( GLuint index, const GLint* v ); 345 GL_APICALL void (* GL_APIENTRY glVertexAttribI4uiv)( GLuint index, const GLuint* v ); 346 GL_APICALL void (* GL_APIENTRY glGetUniformuiv)( GLuint program, 347 GLint location, 348 GLuint* params ); 349 GL_APICALL GLint (* GL_APIENTRY glGetFragDataLocation)( GLuint program, 350 const GLchar *name ); 351 GL_APICALL void (* GL_APIENTRY glUniform1ui)( GLint location, GLuint v0 ); 352 GL_APICALL void (* GL_APIENTRY glUniform2ui)( GLint location, GLuint v0, GLuint v1 ); 353 GL_APICALL void (* GL_APIENTRY glUniform3ui)( GLint location, 354 GLuint v0, 355 GLuint v1, 356 GLuint v2 ); 357 GL_APICALL void (* GL_APIENTRY glUniform4ui)( GLint location, 358 GLuint v0, 359 GLuint v1, 360 GLuint v2, 361 GLuint v3 ); 362 GL_APICALL void (* GL_APIENTRY glUniform1uiv)( GLint location, 363 GLsizei count, 364 const GLuint* value ); 365 GL_APICALL void (* GL_APIENTRY glUniform2uiv)( GLint location, 366 GLsizei count, 367 const GLuint* value ); 368 GL_APICALL void (* GL_APIENTRY glUniform3uiv)( GLint location, 369 GLsizei count, 370 const GLuint* value ); 371 GL_APICALL void (* GL_APIENTRY glUniform4uiv)( GLint location, 372 GLsizei count, 373 const GLuint* value ); 374 GL_APICALL void (* GL_APIENTRY glClearBufferiv)( GLenum buffer, 375 GLint drawbuffer, 376 const GLint* value ); 377 GL_APICALL void (* GL_APIENTRY glClearBufferuiv)( GLenum buffer, 378 GLint drawbuffer, 379 const GLuint* value ); 380 GL_APICALL void (* GL_APIENTRY glClearBufferfv)( GLenum buffer, 381 GLint drawbuffer, 382 const GLfloat* value ); 383 GL_APICALL void (* GL_APIENTRY glClearBufferfi)( GLenum buffer, 384 GLint drawbuffer, 385 GLfloat depth, 386 GLint stencil ); 387 GL_APICALL const GLubyte* (* GL_APIENTRY glGetStringi)( GLenum name, GLuint index ); 388 GL_APICALL void (* GL_APIENTRY glCopyBufferSubData)( GLenum readTarget, 389 GLenum writeTarget, 390 GLintptr readOffset, 391 GLintptr writeOffset, 392 GLsizeiptr size ); 393 GL_APICALL void (* GL_APIENTRY glGetUniformIndices)( GLuint program, 394 GLsizei uniformCount, 395 const GLchar* const * uniformNames, 396 GLuint* uniformIndices ); 397 GL_APICALL void (* GL_APIENTRY glGetActiveUniformsiv)( GLuint program, 398 GLsizei uniformCount, 399 const GLuint* uniformIndices, 400 GLenum pname, 401 GLint* params ); 402 GL_APICALL GLuint (* GL_APIENTRY glGetUniformBlockIndex)( GLuint program, 403 const GLchar* uniformBlockName ); 404 GL_APICALL void (* GL_APIENTRY glGetActiveUniformBlockiv)( GLuint program, 405 GLuint uniformBlockIndex, 406 GLenum pname, 407 GLint* params ); 408 GL_APICALL void (* GL_APIENTRY glGetActiveUniformBlockName)( GLuint program, 409 GLuint uniformBlockIndex, 410 GLsizei bufSize, 411 GLsizei* length, 412 GLchar* uniformBlockName ); 413 GL_APICALL void (* GL_APIENTRY glUniformBlockBinding)( GLuint program, 414 GLuint uniformBlockIndex, 415 GLuint uniformBlockBinding ); 416 GL_APICALL void (* GL_APIENTRY glDrawArraysInstanced)( GLenum mode, 417 GLint first, 418 GLsizei count, 419 GLsizei instanceCount ); 420 GL_APICALL void (* GL_APIENTRY glDrawElementsInstanced)( GLenum mode, 421 GLsizei count, 422 GLenum type, 423 const GLvoid* indices, 424 GLsizei instanceCount ); 425 GL_APICALL GLsync (* GL_APIENTRY glFenceSync)( GLenum condition, GLbitfield flags ); 426 GL_APICALL GLboolean (* GL_APIENTRY glIsSync)( GLsync sync ); 427 GL_APICALL void (* GL_APIENTRY glDeleteSync)( GLsync sync ); 428 GL_APICALL GLenum (* GL_APIENTRY glClientWaitSync)( GLsync sync, 429 GLbitfield flags, 430 GLuint64 timeout ); 431 GL_APICALL void (* GL_APIENTRY glWaitSync)( GLsync sync, 432 GLbitfield flags, 433 GLuint64 timeout ); 434 GL_APICALL void (* GL_APIENTRY glGetInteger64v)( GLenum pname, GLint64* params ); 435 GL_APICALL void (* GL_APIENTRY glGetSynciv)( GLsync sync, 436 GLenum pname, 437 GLsizei bufSize, 438 GLsizei* length, 439 GLint* values ); 440 GL_APICALL void (* GL_APIENTRY glGetInteger64i_v)( GLenum target, 441 GLuint index, 442 GLint64* data ); 443 GL_APICALL void (* GL_APIENTRY glGetBufferParameteri64v)( GLenum target, 444 GLenum pname, 445 GLint64* params ); 446 GL_APICALL void (* GL_APIENTRY glGenSamplers)( GLsizei count, GLuint* samplers ); 447 GL_APICALL void (* GL_APIENTRY glDeleteSamplers)( GLsizei count, const GLuint* samplers ); 448 GL_APICALL GLboolean (* GL_APIENTRY glIsSampler)( GLuint sampler ); 449 GL_APICALL void (* GL_APIENTRY glBindSampler)( GLuint unit, GLuint sampler ); 450 GL_APICALL void (* GL_APIENTRY glSamplerParameteri)( GLuint sampler, 451 GLenum pname, 452 GLint param ); 453 GL_APICALL void (* GL_APIENTRY glSamplerParameteriv)( GLuint sampler, 454 GLenum pname, 455 const GLint* param ); 456 GL_APICALL void (* GL_APIENTRY glSamplerParameterf)( GLuint sampler, 457 GLenum pname, 458 GLfloat param ); 459 GL_APICALL void (* GL_APIENTRY glSamplerParameterfv)( GLuint sampler, 460 GLenum pname, 461 const GLfloat* param ); 462 GL_APICALL void (* GL_APIENTRY glGetSamplerParameteriv)( GLuint sampler, 463 GLenum pname, 464 GLint* params ); 465 GL_APICALL void (* GL_APIENTRY glGetSamplerParameterfv)( GLuint sampler, 466 GLenum pname, 467 GLfloat* params ); 468 GL_APICALL void (* GL_APIENTRY glVertexAttribDivisor)( GLuint index, GLuint divisor ); 469 GL_APICALL void (* GL_APIENTRY glBindTransformFeedback)( GLenum target, GLuint id ); 470 GL_APICALL void (* GL_APIENTRY glDeleteTransformFeedbacks)( GLsizei n, const GLuint* ids ); 471 GL_APICALL void (* GL_APIENTRY glGenTransformFeedbacks)( GLsizei n, GLuint* ids ); 472 GL_APICALL GLboolean (* GL_APIENTRY glIsTransformFeedback)( GLuint id ); 473 GL_APICALL void (* GL_APIENTRY glPauseTransformFeedback)( void ); 474 GL_APICALL void (* GL_APIENTRY glResumeTransformFeedback)( void ); 475 GL_APICALL void (* GL_APIENTRY glGetProgramBinary)( GLuint program, 476 GLsizei bufSize, 477 GLsizei* length, 478 GLenum* binaryFormat, 479 GLvoid* binary ); 480 GL_APICALL void (* GL_APIENTRY glProgramBinary)( GLuint program, 481 GLenum binaryFormat, 482 const GLvoid* binary, 483 GLsizei length ); 484 GL_APICALL void (* GL_APIENTRY glProgramParameteri)( GLuint program, 485 GLenum pname, 486 GLint value ); 487 GL_APICALL void (* GL_APIENTRY glInvalidateFramebuffer)( GLenum target, 488 GLsizei numAttachments, 489 const GLenum* attachments ); 490 GL_APICALL void (* GL_APIENTRY glInvalidateSubFramebuffer)( GLenum target, 491 GLsizei numAttachments, 492 const GLenum* attachments, 493 GLint x, 494 GLint y, 495 GLsizei width, 496 GLsizei height ); 497 GL_APICALL void (* GL_APIENTRY glTexStorage2D)( GLenum target, 498 GLsizei levels, 499 GLenum internalformat, 500 GLsizei width, 501 GLsizei height ); 502 GL_APICALL void (* GL_APIENTRY glTexStorage3D)( GLenum target, 503 GLsizei levels, 504 GLenum internalformat, 505 GLsizei width, 506 GLsizei height, 507 GLsizei depth ); 508 GL_APICALL void (* GL_APIENTRY glGetInternalformativ)( GLenum target, 509 GLenum internalformat, 510 GLenum pname, 511 GLsizei bufSize, 512 GLint* params ); 513