File indexing completed on 2025-01-18 10:08:13
0001
0002
0003
0004 #ifndef QOPENGLEXTRAFUNCTIONS_H
0005 #define QOPENGLEXTRAFUNCTIONS_H
0006
0007 #include <QtGui/qtguiglobal.h>
0008
0009 #ifndef QT_NO_OPENGL
0010
0011 #include <QtGui/qopenglfunctions.h>
0012
0013
0014 #ifdef Q_OS_WIN
0015 #pragma push_macro("MemoryBarrier")
0016 #undef MemoryBarrier
0017 #endif
0018
0019
0020 #if QT_CONFIG(opengles2) && !QT_CONFIG(opengles32)
0021 typedef void (QOPENGLF_APIENTRY *GLDEBUGPROC)(GLenum source,GLenum type,GLuint id,GLenum severity,GLsizei length,const GLchar *message,const void *userParam);
0022 #endif
0023
0024 QT_BEGIN_NAMESPACE
0025
0026 class QOpenGLExtraFunctionsPrivate;
0027
0028 #undef glReadBuffer
0029 #undef glDrawRangeElements
0030 #undef glTexImage3D
0031 #undef glTexSubImage3D
0032 #undef glCopyTexSubImage3D
0033 #undef glCompressedTexImage3D
0034 #undef glCompressedTexSubImage3D
0035 #undef glGenQueries
0036 #undef glDeleteQueries
0037 #undef glIsQuery
0038 #undef glBeginQuery
0039 #undef glEndQuery
0040 #undef glGetQueryiv
0041 #undef glGetQueryObjectuiv
0042 #undef glUnmapBuffer
0043 #undef glGetBufferPointerv
0044 #undef glDrawBuffers
0045 #undef glUniformMatrix2x3fv
0046 #undef glUniformMatrix3x2fv
0047 #undef glUniformMatrix2x4fv
0048 #undef glUniformMatrix4x2fv
0049 #undef glUniformMatrix3x4fv
0050 #undef glUniformMatrix4x3fv
0051 #undef glBlitFramebuffer
0052 #undef glRenderbufferStorageMultisample
0053 #undef glFramebufferTextureLayer
0054 #undef glMapBufferRange
0055 #undef glFlushMappedBufferRange
0056 #undef glBindVertexArray
0057 #undef glDeleteVertexArrays
0058 #undef glGenVertexArrays
0059 #undef glIsVertexArray
0060 #undef glGetIntegeri_v
0061 #undef glBeginTransformFeedback
0062 #undef glEndTransformFeedback
0063 #undef glBindBufferRange
0064 #undef glBindBufferBase
0065 #undef glTransformFeedbackVaryings
0066 #undef glGetTransformFeedbackVarying
0067 #undef glVertexAttribIPointer
0068 #undef glGetVertexAttribIiv
0069 #undef glGetVertexAttribIuiv
0070 #undef glVertexAttribI4i
0071 #undef glVertexAttribI4ui
0072 #undef glVertexAttribI4iv
0073 #undef glVertexAttribI4uiv
0074 #undef glGetUniformuiv
0075 #undef glGetFragDataLocation
0076 #undef glUniform1ui
0077 #undef glUniform2ui
0078 #undef glUniform3ui
0079 #undef glUniform4ui
0080 #undef glUniform1uiv
0081 #undef glUniform2uiv
0082 #undef glUniform3uiv
0083 #undef glUniform4uiv
0084 #undef glClearBufferiv
0085 #undef glClearBufferuiv
0086 #undef glClearBufferfv
0087 #undef glClearBufferfi
0088 #undef glGetStringi
0089 #undef glCopyBufferSubData
0090 #undef glGetUniformIndices
0091 #undef glGetActiveUniformsiv
0092 #undef glGetUniformBlockIndex
0093 #undef glGetActiveUniformBlockiv
0094 #undef glGetActiveUniformBlockName
0095 #undef glUniformBlockBinding
0096 #undef glDrawArraysInstanced
0097 #undef glDrawElementsInstanced
0098 #undef glFenceSync
0099 #undef glIsSync
0100 #undef glDeleteSync
0101 #undef glClientWaitSync
0102 #undef glWaitSync
0103 #undef glGetInteger64v
0104 #undef glGetSynciv
0105 #undef glGetInteger64i_v
0106 #undef glGetBufferParameteri64v
0107 #undef glGenSamplers
0108 #undef glDeleteSamplers
0109 #undef glIsSampler
0110 #undef glBindSampler
0111 #undef glSamplerParameteri
0112 #undef glSamplerParameteriv
0113 #undef glSamplerParameterf
0114 #undef glSamplerParameterfv
0115 #undef glGetSamplerParameteriv
0116 #undef glGetSamplerParameterfv
0117 #undef glVertexAttribDivisor
0118 #undef glBindTransformFeedback
0119 #undef glDeleteTransformFeedbacks
0120 #undef glGenTransformFeedbacks
0121 #undef glIsTransformFeedback
0122 #undef glPauseTransformFeedback
0123 #undef glResumeTransformFeedback
0124 #undef glGetProgramBinary
0125 #undef glProgramBinary
0126 #undef glProgramParameteri
0127 #undef glInvalidateFramebuffer
0128 #undef glInvalidateSubFramebuffer
0129 #undef glTexStorage2D
0130 #undef glTexStorage3D
0131 #undef glGetInternalformativ
0132
0133 #undef glDispatchCompute
0134 #undef glDispatchComputeIndirect
0135 #undef glDrawArraysIndirect
0136 #undef glDrawElementsIndirect
0137 #undef glFramebufferParameteri
0138 #undef glGetFramebufferParameteriv
0139 #undef glGetProgramInterfaceiv
0140 #undef glGetProgramResourceIndex
0141 #undef glGetProgramResourceName
0142 #undef glGetProgramResourceiv
0143 #undef glGetProgramResourceLocation
0144 #undef glUseProgramStages
0145 #undef glActiveShaderProgram
0146 #undef glCreateShaderProgramv
0147 #undef glBindProgramPipeline
0148 #undef glDeleteProgramPipelines
0149 #undef glGenProgramPipelines
0150 #undef glIsProgramPipeline
0151 #undef glGetProgramPipelineiv
0152 #undef glProgramUniform1i
0153 #undef glProgramUniform2i
0154 #undef glProgramUniform3i
0155 #undef glProgramUniform4i
0156 #undef glProgramUniform1ui
0157 #undef glProgramUniform2ui
0158 #undef glProgramUniform3ui
0159 #undef glProgramUniform4ui
0160 #undef glProgramUniform1f
0161 #undef glProgramUniform2f
0162 #undef glProgramUniform3f
0163 #undef glProgramUniform4f
0164 #undef glProgramUniform1iv
0165 #undef glProgramUniform2iv
0166 #undef glProgramUniform3iv
0167 #undef glProgramUniform4iv
0168 #undef glProgramUniform1uiv
0169 #undef glProgramUniform2uiv
0170 #undef glProgramUniform3uiv
0171 #undef glProgramUniform4uiv
0172 #undef glProgramUniform1fv
0173 #undef glProgramUniform2fv
0174 #undef glProgramUniform3fv
0175 #undef glProgramUniform4fv
0176 #undef glProgramUniformMatrix2fv
0177 #undef glProgramUniformMatrix3fv
0178 #undef glProgramUniformMatrix4fv
0179 #undef glProgramUniformMatrix2x3fv
0180 #undef glProgramUniformMatrix3x2fv
0181 #undef glProgramUniformMatrix2x4fv
0182 #undef glProgramUniformMatrix4x2fv
0183 #undef glProgramUniformMatrix3x4fv
0184 #undef glProgramUniformMatrix4x3fv
0185 #undef glValidateProgramPipeline
0186 #undef glGetProgramPipelineInfoLog
0187 #undef glBindImageTexture
0188 #undef glGetBooleani_v
0189 #undef glMemoryBarrier
0190 #undef glMemoryBarrierByRegion
0191 #undef glTexStorage2DMultisample
0192 #undef glGetMultisamplefv
0193 #undef glSampleMaski
0194 #undef glGetTexLevelParameteriv
0195 #undef glGetTexLevelParameterfv
0196 #undef glBindVertexBuffer
0197 #undef glVertexAttribFormat
0198 #undef glVertexAttribIFormat
0199 #undef glVertexAttribBinding
0200 #undef glVertexBindingDivisor
0201
0202 #undef glBlendBarrier
0203 #undef glCopyImageSubData
0204 #undef glDebugMessageControl
0205 #undef glDebugMessageInsert
0206 #undef glDebugMessageCallback
0207 #undef glGetDebugMessageLog
0208 #undef glPushDebugGroup
0209 #undef glPopDebugGroup
0210 #undef glObjectLabel
0211 #undef glGetObjectLabel
0212 #undef glGetObjectPtrLabel
0213 #undef glGetPointerv
0214 #undef glEnablei
0215 #undef glDisablei
0216 #undef glBlendEquationi
0217 #undef glBlendEquationSeparatei
0218 #undef glBlendFunci
0219 #undef glBlendFuncSeparatei
0220 #undef glColorMaski
0221 #undef glIsEnabledi
0222 #undef glDrawElementsBaseVertex
0223 #undef glDrawRangeElementsBaseVertex
0224 #undef glDrawElementsInstancedBaseVertex
0225 #undef glFrameBufferTexture
0226 #undef glPrimitiveBoundingBox
0227 #undef glGetGraphicsResetStatus
0228 #undef glReadnPixels
0229 #undef glGetnUniformfv
0230 #undef glGetnUniformiv
0231 #undef glGetnUniformuiv
0232 #undef glMinSampleShading
0233 #undef glPatchParameteri
0234 #undef glTexParameterIiv
0235 #undef glTexParameterIuiv
0236 #undef glGetTexParameterIiv
0237 #undef glGetTexParameterIuiv
0238 #undef glSamplerParameterIiv
0239 #undef glSamplerParameterIuiv
0240 #undef glGetSamplerParameterIiv
0241 #undef glGetSamplerParameterIuiv
0242 #undef glTexBuffer
0243 #undef glTexBufferRange
0244 #undef glTexStorage3DMultisample
0245
0246 class Q_GUI_EXPORT QOpenGLExtraFunctions : public QOpenGLFunctions
0247 {
0248 Q_DECLARE_PRIVATE(QOpenGLExtraFunctions)
0249
0250 public:
0251 QOpenGLExtraFunctions();
0252 QOpenGLExtraFunctions(QOpenGLContext *context);
0253 ~QOpenGLExtraFunctions() {}
0254
0255
0256 void glReadBuffer(GLenum mode);
0257 void glDrawRangeElements(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices);
0258 void glTexImage3D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels);
0259 void glTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels);
0260 void glCopyTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
0261 void glCompressedTexImage3D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *data);
0262 void glCompressedTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data);
0263 void glGenQueries(GLsizei n, GLuint *ids);
0264 void glDeleteQueries(GLsizei n, const GLuint *ids);
0265 GLboolean glIsQuery(GLuint id);
0266 void glBeginQuery(GLenum target, GLuint id);
0267 void glEndQuery(GLenum target);
0268 void glGetQueryiv(GLenum target, GLenum pname, GLint *params);
0269 void glGetQueryObjectuiv(GLuint id, GLenum pname, GLuint *params);
0270 GLboolean glUnmapBuffer(GLenum target);
0271 void glGetBufferPointerv(GLenum target, GLenum pname, void **params);
0272 void glDrawBuffers(GLsizei n, const GLenum *bufs);
0273 void glUniformMatrix2x3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
0274 void glUniformMatrix3x2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
0275 void glUniformMatrix2x4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
0276 void glUniformMatrix4x2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
0277 void glUniformMatrix3x4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
0278 void glUniformMatrix4x3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
0279 void glBlitFramebuffer(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);
0280 void glRenderbufferStorageMultisample(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
0281 void glFramebufferTextureLayer(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer);
0282 void *glMapBufferRange(GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access);
0283 void glFlushMappedBufferRange(GLenum target, GLintptr offset, GLsizeiptr length);
0284 void glBindVertexArray(GLuint array);
0285 void glDeleteVertexArrays(GLsizei n, const GLuint *arrays);
0286 void glGenVertexArrays(GLsizei n, GLuint *arrays);
0287 GLboolean glIsVertexArray(GLuint array);
0288 void glGetIntegeri_v(GLenum target, GLuint index, GLint *data);
0289 void glBeginTransformFeedback(GLenum primitiveMode);
0290 void glEndTransformFeedback(void);
0291 void glBindBufferRange(GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size);
0292 void glBindBufferBase(GLenum target, GLuint index, GLuint buffer);
0293 void glTransformFeedbackVaryings(GLuint program, GLsizei count, const GLchar *const*varyings, GLenum bufferMode);
0294 void glGetTransformFeedbackVarying(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name);
0295 void glVertexAttribIPointer(GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer);
0296 void glGetVertexAttribIiv(GLuint index, GLenum pname, GLint *params);
0297 void glGetVertexAttribIuiv(GLuint index, GLenum pname, GLuint *params);
0298 void glVertexAttribI4i(GLuint index, GLint x, GLint y, GLint z, GLint w);
0299 void glVertexAttribI4ui(GLuint index, GLuint x, GLuint y, GLuint z, GLuint w);
0300 void glVertexAttribI4iv(GLuint index, const GLint *v);
0301 void glVertexAttribI4uiv(GLuint index, const GLuint *v);
0302 void glGetUniformuiv(GLuint program, GLint location, GLuint *params);
0303 GLint glGetFragDataLocation(GLuint program, const GLchar *name);
0304 void glUniform1ui(GLint location, GLuint v0);
0305 void glUniform2ui(GLint location, GLuint v0, GLuint v1);
0306 void glUniform3ui(GLint location, GLuint v0, GLuint v1, GLuint v2);
0307 void glUniform4ui(GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3);
0308 void glUniform1uiv(GLint location, GLsizei count, const GLuint *value);
0309 void glUniform2uiv(GLint location, GLsizei count, const GLuint *value);
0310 void glUniform3uiv(GLint location, GLsizei count, const GLuint *value);
0311 void glUniform4uiv(GLint location, GLsizei count, const GLuint *value);
0312 void glClearBufferiv(GLenum buffer, GLint drawbuffer, const GLint *value);
0313 void glClearBufferuiv(GLenum buffer, GLint drawbuffer, const GLuint *value);
0314 void glClearBufferfv(GLenum buffer, GLint drawbuffer, const GLfloat *value);
0315 void glClearBufferfi(GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil);
0316 const GLubyte *glGetStringi(GLenum name, GLuint index);
0317 void glCopyBufferSubData(GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size);
0318 void glGetUniformIndices(GLuint program, GLsizei uniformCount, const GLchar *const*uniformNames, GLuint *uniformIndices);
0319 void glGetActiveUniformsiv(GLuint program, GLsizei uniformCount, const GLuint *uniformIndices, GLenum pname, GLint *params);
0320 GLuint glGetUniformBlockIndex(GLuint program, const GLchar *uniformBlockName);
0321 void glGetActiveUniformBlockiv(GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint *params);
0322 void glGetActiveUniformBlockName(GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformBlockName);
0323 void glUniformBlockBinding(GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding);
0324 void glDrawArraysInstanced(GLenum mode, GLint first, GLsizei count, GLsizei instancecount);
0325 void glDrawElementsInstanced(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount);
0326 GLsync glFenceSync(GLenum condition, GLbitfield flags);
0327 GLboolean glIsSync(GLsync sync);
0328 void glDeleteSync(GLsync sync);
0329 GLenum glClientWaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout);
0330 void glWaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout);
0331 void glGetInteger64v(GLenum pname, GLint64 *data);
0332 void glGetSynciv(GLsync sync, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values);
0333 void glGetInteger64i_v(GLenum target, GLuint index, GLint64 *data);
0334 void glGetBufferParameteri64v(GLenum target, GLenum pname, GLint64 *params);
0335 void glGenSamplers(GLsizei count, GLuint *samplers);
0336 void glDeleteSamplers(GLsizei count, const GLuint *samplers);
0337 GLboolean glIsSampler(GLuint sampler);
0338 void glBindSampler(GLuint unit, GLuint sampler);
0339 void glSamplerParameteri(GLuint sampler, GLenum pname, GLint param);
0340 void glSamplerParameteriv(GLuint sampler, GLenum pname, const GLint *param);
0341 void glSamplerParameterf(GLuint sampler, GLenum pname, GLfloat param);
0342 void glSamplerParameterfv(GLuint sampler, GLenum pname, const GLfloat *param);
0343 void glGetSamplerParameteriv(GLuint sampler, GLenum pname, GLint *params);
0344 void glGetSamplerParameterfv(GLuint sampler, GLenum pname, GLfloat *params);
0345 void glVertexAttribDivisor(GLuint index, GLuint divisor);
0346 void glBindTransformFeedback(GLenum target, GLuint id);
0347 void glDeleteTransformFeedbacks(GLsizei n, const GLuint *ids);
0348 void glGenTransformFeedbacks(GLsizei n, GLuint *ids);
0349 GLboolean glIsTransformFeedback(GLuint id);
0350 void glPauseTransformFeedback(void);
0351 void glResumeTransformFeedback(void);
0352 void glGetProgramBinary(GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, void *binary);
0353 void glProgramBinary(GLuint program, GLenum binaryFormat, const void *binary, GLsizei length);
0354 void glProgramParameteri(GLuint program, GLenum pname, GLint value);
0355 void glInvalidateFramebuffer(GLenum target, GLsizei numAttachments, const GLenum *attachments);
0356 void glInvalidateSubFramebuffer(GLenum target, GLsizei numAttachments, const GLenum *attachments, GLint x, GLint y, GLsizei width, GLsizei height);
0357 void glTexStorage2D(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height);
0358 void glTexStorage3D(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth);
0359 void glGetInternalformativ(GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint *params);
0360
0361
0362 void glDispatchCompute(GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z);
0363 void glDispatchComputeIndirect(GLintptr indirect);
0364 void glDrawArraysIndirect(GLenum mode, const void *indirect);
0365 void glDrawElementsIndirect(GLenum mode, GLenum type, const void *indirect);
0366 void glFramebufferParameteri(GLenum target, GLenum pname, GLint param);
0367 void glGetFramebufferParameteriv(GLenum target, GLenum pname, GLint *params);
0368 void glGetProgramInterfaceiv(GLuint program, GLenum programInterface, GLenum pname, GLint *params);
0369 GLuint glGetProgramResourceIndex(GLuint program, GLenum programInterface, const GLchar *name);
0370 void glGetProgramResourceName(GLuint program, GLenum programInterface, GLuint index, GLsizei bufSize, GLsizei *length, GLchar *name);
0371 void glGetProgramResourceiv(GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum *props, GLsizei bufSize, GLsizei *length, GLint *params);
0372 GLint glGetProgramResourceLocation(GLuint program, GLenum programInterface, const GLchar *name);
0373 void glUseProgramStages(GLuint pipeline, GLbitfield stages, GLuint program);
0374 void glActiveShaderProgram(GLuint pipeline, GLuint program);
0375 GLuint glCreateShaderProgramv(GLenum type, GLsizei count, const GLchar *const*strings);
0376 void glBindProgramPipeline(GLuint pipeline);
0377 void glDeleteProgramPipelines(GLsizei n, const GLuint *pipelines);
0378 void glGenProgramPipelines(GLsizei n, GLuint *pipelines);
0379 GLboolean glIsProgramPipeline(GLuint pipeline);
0380 void glGetProgramPipelineiv(GLuint pipeline, GLenum pname, GLint *params);
0381 void glProgramUniform1i(GLuint program, GLint location, GLint v0);
0382 void glProgramUniform2i(GLuint program, GLint location, GLint v0, GLint v1);
0383 void glProgramUniform3i(GLuint program, GLint location, GLint v0, GLint v1, GLint v2);
0384 void glProgramUniform4i(GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3);
0385 void glProgramUniform1ui(GLuint program, GLint location, GLuint v0);
0386 void glProgramUniform2ui(GLuint program, GLint location, GLuint v0, GLuint v1);
0387 void glProgramUniform3ui(GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2);
0388 void glProgramUniform4ui(GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3);
0389 void glProgramUniform1f(GLuint program, GLint location, GLfloat v0);
0390 void glProgramUniform2f(GLuint program, GLint location, GLfloat v0, GLfloat v1);
0391 void glProgramUniform3f(GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2);
0392 void glProgramUniform4f(GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3);
0393 void glProgramUniform1iv(GLuint program, GLint location, GLsizei count, const GLint *value);
0394 void glProgramUniform2iv(GLuint program, GLint location, GLsizei count, const GLint *value);
0395 void glProgramUniform3iv(GLuint program, GLint location, GLsizei count, const GLint *value);
0396 void glProgramUniform4iv(GLuint program, GLint location, GLsizei count, const GLint *value);
0397 void glProgramUniform1uiv(GLuint program, GLint location, GLsizei count, const GLuint *value);
0398 void glProgramUniform2uiv(GLuint program, GLint location, GLsizei count, const GLuint *value);
0399 void glProgramUniform3uiv(GLuint program, GLint location, GLsizei count, const GLuint *value);
0400 void glProgramUniform4uiv(GLuint program, GLint location, GLsizei count, const GLuint *value);
0401 void glProgramUniform1fv(GLuint program, GLint location, GLsizei count, const GLfloat *value);
0402 void glProgramUniform2fv(GLuint program, GLint location, GLsizei count, const GLfloat *value);
0403 void glProgramUniform3fv(GLuint program, GLint location, GLsizei count, const GLfloat *value);
0404 void glProgramUniform4fv(GLuint program, GLint location, GLsizei count, const GLfloat *value);
0405 void glProgramUniformMatrix2fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
0406 void glProgramUniformMatrix3fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
0407 void glProgramUniformMatrix4fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
0408 void glProgramUniformMatrix2x3fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
0409 void glProgramUniformMatrix3x2fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
0410 void glProgramUniformMatrix2x4fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
0411 void glProgramUniformMatrix4x2fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
0412 void glProgramUniformMatrix3x4fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
0413 void glProgramUniformMatrix4x3fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
0414 void glValidateProgramPipeline(GLuint pipeline);
0415 void glGetProgramPipelineInfoLog(GLuint pipeline, GLsizei bufSize, GLsizei *length, GLchar *infoLog);
0416 void glBindImageTexture(GLuint unit, GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum access, GLenum format);
0417 void glGetBooleani_v(GLenum target, GLuint index, GLboolean *data);
0418 void glMemoryBarrier(GLbitfield barriers);
0419 void glMemoryBarrierByRegion(GLbitfield barriers);
0420 void glTexStorage2DMultisample(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations);
0421 void glGetMultisamplefv(GLenum pname, GLuint index, GLfloat *val);
0422 void glSampleMaski(GLuint maskNumber, GLbitfield mask);
0423 void glGetTexLevelParameteriv(GLenum target, GLint level, GLenum pname, GLint *params);
0424 void glGetTexLevelParameterfv(GLenum target, GLint level, GLenum pname, GLfloat *params);
0425 void glBindVertexBuffer(GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride);
0426 void glVertexAttribFormat(GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset);
0427 void glVertexAttribIFormat(GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset);
0428 void glVertexAttribBinding(GLuint attribindex, GLuint bindingindex);
0429 void glVertexBindingDivisor(GLuint bindingindex, GLuint divisor);
0430
0431
0432 void glBlendBarrier(void);
0433 void glCopyImageSubData(GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei srcWidth, GLsizei srcHeight, GLsizei srcDepth);
0434 void glDebugMessageControl(GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled);
0435 void glDebugMessageInsert(GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *buf);
0436 void glDebugMessageCallback(GLDEBUGPROC callback, const void *userParam);
0437 GLuint glGetDebugMessageLog(GLuint count, GLsizei bufSize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog);
0438 void glPushDebugGroup(GLenum source, GLuint id, GLsizei length, const GLchar *message);
0439 void glPopDebugGroup(void);
0440 void glObjectLabel(GLenum identifier, GLuint name, GLsizei length, const GLchar *label);
0441 void glGetObjectLabel(GLenum identifier, GLuint name, GLsizei bufSize, GLsizei *length, GLchar *label);
0442 void glObjectPtrLabel(const void *ptr, GLsizei length, const GLchar *label);
0443 void glGetObjectPtrLabel(const void *ptr, GLsizei bufSize, GLsizei *length, GLchar *label);
0444 void glGetPointerv(GLenum pname, void **params);
0445 void glEnablei(GLenum target, GLuint index);
0446 void glDisablei(GLenum target, GLuint index);
0447 void glBlendEquationi(GLuint buf, GLenum mode);
0448 void glBlendEquationSeparatei(GLuint buf, GLenum modeRGB, GLenum modeAlpha);
0449 void glBlendFunci(GLuint buf, GLenum src, GLenum dst);
0450 void glBlendFuncSeparatei(GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha);
0451 void glColorMaski(GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a);
0452 GLboolean glIsEnabledi(GLenum target, GLuint index);
0453 void glDrawElementsBaseVertex(GLenum mode, GLsizei count, GLenum type, const void *indices, GLint basevertex);
0454 void glDrawRangeElementsBaseVertex(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices, GLint basevertex);
0455 void glDrawElementsInstancedBaseVertex(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex);
0456 void glFramebufferTexture(GLenum target, GLenum attachment, GLuint texture, GLint level);
0457 void glPrimitiveBoundingBox(GLfloat minX, GLfloat minY, GLfloat minZ, GLfloat minW, GLfloat maxX, GLfloat maxY, GLfloat maxZ, GLfloat maxW);
0458 GLenum glGetGraphicsResetStatus(void);
0459 void glReadnPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void *data);
0460 void glGetnUniformfv(GLuint program, GLint location, GLsizei bufSize, GLfloat *params);
0461 void glGetnUniformiv(GLuint program, GLint location, GLsizei bufSize, GLint *params);
0462 void glGetnUniformuiv(GLuint program, GLint location, GLsizei bufSize, GLuint *params);
0463 void glMinSampleShading(GLfloat value);
0464 void glPatchParameteri(GLenum pname, GLint value);
0465 void glTexParameterIiv(GLenum target, GLenum pname, const GLint *params);
0466 void glTexParameterIuiv(GLenum target, GLenum pname, const GLuint *params);
0467 void glGetTexParameterIiv(GLenum target, GLenum pname, GLint *params);
0468 void glGetTexParameterIuiv(GLenum target, GLenum pname, GLuint *params);
0469 void glSamplerParameterIiv(GLuint sampler, GLenum pname, const GLint *param);
0470 void glSamplerParameterIuiv(GLuint sampler, GLenum pname, const GLuint *param);
0471 void glGetSamplerParameterIiv(GLuint sampler, GLenum pname, GLint *params);
0472 void glGetSamplerParameterIuiv(GLuint sampler, GLenum pname, GLuint *params);
0473 void glTexBuffer(GLenum target, GLenum internalformat, GLuint buffer);
0474 void glTexBufferRange(GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size);
0475 void glTexStorage3DMultisample(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations);
0476
0477 private:
0478 static bool isInitialized(const QOpenGLExtraFunctionsPrivate *d) { return d != nullptr; }
0479 };
0480
0481
0482 #define QT_OPENGL_DECLARE_FUNCTIONS(ret, name, args) \
0483 ret (QOPENGLF_APIENTRYP name)args;
0484 #define QT_OPENGL_COUNT_FUNCTIONS(ret, name, args) +1
0485
0486 #define QT_OPENGL_DECLARE(FUNCTIONS) \
0487 public: \
0488 struct Functions { \
0489 FUNCTIONS(QT_OPENGL_DECLARE_FUNCTIONS) \
0490 }; \
0491 union { \
0492 QFunctionPointer functions[FUNCTIONS(QT_OPENGL_COUNT_FUNCTIONS)]; \
0493 Functions f; \
0494 }; \
0495 private: \
0496 void init(QOpenGLContext *context);
0497
0498 class QOpenGLExtraFunctionsPrivate : public QOpenGLFunctionsPrivate
0499 {
0500 public:
0501 QOpenGLExtraFunctionsPrivate(QOpenGLContext *ctx);
0502
0503
0504 #define QT_OPENGL_EXTRA_FUNCTIONS(F) \
0505 F(void, ReadBuffer, (GLenum mode)) \
0506 F(void, DrawRangeElements, (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices)) \
0507 F(void, TexImage3D, (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels)) \
0508 F(void, TexSubImage3D, (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels)) \
0509 F(void, CopyTexSubImage3D, (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height)) \
0510 F(void, CompressedTexImage3D, (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *data)) \
0511 F(void, CompressedTexSubImage3D, (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data)) \
0512 F(void, GenQueries, (GLsizei n, GLuint *ids)) \
0513 F(void, DeleteQueries, (GLsizei n, const GLuint *ids)) \
0514 F(GLboolean, IsQuery, (GLuint id)) \
0515 F(void, BeginQuery, (GLenum target, GLuint id)) \
0516 F(void, EndQuery, (GLenum target)) \
0517 F(void, GetQueryiv, (GLenum target, GLenum pname, GLint *params)) \
0518 F(void, GetQueryObjectuiv, (GLuint id, GLenum pname, GLuint *params)) \
0519 F(GLboolean, UnmapBuffer, (GLenum target)) \
0520 F(void, GetBufferPointerv, (GLenum target, GLenum pname, void **params)) \
0521 F(void, DrawBuffers, (GLsizei n, const GLenum *bufs)) \
0522 F(void, UniformMatrix2x3fv, (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)) \
0523 F(void, UniformMatrix3x2fv, (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)) \
0524 F(void, UniformMatrix2x4fv, (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)) \
0525 F(void, UniformMatrix4x2fv, (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)) \
0526 F(void, UniformMatrix3x4fv, (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)) \
0527 F(void, UniformMatrix4x3fv, (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)) \
0528 F(void, BlitFramebuffer, (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter)) \
0529 F(void, RenderbufferStorageMultisample, (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height)) \
0530 F(void, FramebufferTextureLayer, (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer)) \
0531 F(void *,MapBufferRange, (GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access)) \
0532 F(void, FlushMappedBufferRange, (GLenum target, GLintptr offset, GLsizeiptr length)) \
0533 F(void, BindVertexArray, (GLuint array)) \
0534 F(void, DeleteVertexArrays, (GLsizei n, const GLuint *arrays)) \
0535 F(void, GenVertexArrays, (GLsizei n, GLuint *arrays)) \
0536 F(GLboolean, IsVertexArray, (GLuint array)) \
0537 F(void, GetIntegeri_v, (GLenum target, GLuint index, GLint *data)) \
0538 F(void, BeginTransformFeedback, (GLenum primitiveMode)) \
0539 F(void, EndTransformFeedback, (void)) \
0540 F(void, BindBufferRange, (GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size)) \
0541 F(void, BindBufferBase, (GLenum target, GLuint index, GLuint buffer)) \
0542 F(void, TransformFeedbackVaryings, (GLuint program, GLsizei count, const GLchar *const*varyings, GLenum bufferMode)) \
0543 F(void, GetTransformFeedbackVarying, (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name)) \
0544 F(void, VertexAttribIPointer, (GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer)) \
0545 F(void, GetVertexAttribIiv, (GLuint index, GLenum pname, GLint *params)) \
0546 F(void, GetVertexAttribIuiv, (GLuint index, GLenum pname, GLuint *params)) \
0547 F(void, VertexAttribI4i, (GLuint index, GLint x, GLint y, GLint z, GLint w)) \
0548 F(void, VertexAttribI4ui, (GLuint index, GLuint x, GLuint y, GLuint z, GLuint w)) \
0549 F(void, VertexAttribI4iv, (GLuint index, const GLint *v)) \
0550 F(void, VertexAttribI4uiv, (GLuint index, const GLuint *v)) \
0551 F(void, GetUniformuiv, (GLuint program, GLint location, GLuint *params)) \
0552 F(GLint, GetFragDataLocation, (GLuint program, const GLchar *name)) \
0553 F(void, Uniform1ui, (GLint location, GLuint v0)) \
0554 F(void, Uniform2ui, (GLint location, GLuint v0, GLuint v1)) \
0555 F(void, Uniform3ui, (GLint location, GLuint v0, GLuint v1, GLuint v2)) \
0556 F(void, Uniform4ui, (GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3)) \
0557 F(void, Uniform1uiv, (GLint location, GLsizei count, const GLuint *value)) \
0558 F(void, Uniform2uiv, (GLint location, GLsizei count, const GLuint *value)) \
0559 F(void, Uniform3uiv, (GLint location, GLsizei count, const GLuint *value)) \
0560 F(void, Uniform4uiv, (GLint location, GLsizei count, const GLuint *value)) \
0561 F(void, ClearBufferiv, (GLenum buffer, GLint drawbuffer, const GLint *value)) \
0562 F(void, ClearBufferuiv, (GLenum buffer, GLint drawbuffer, const GLuint *value)) \
0563 F(void, ClearBufferfv, (GLenum buffer, GLint drawbuffer, const GLfloat *value)) \
0564 F(void, ClearBufferfi, (GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil)) \
0565 F(const GLubyte *, GetStringi, (GLenum name, GLuint index)) \
0566 F(void, CopyBufferSubData, (GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size)) \
0567 F(void, GetUniformIndices, (GLuint program, GLsizei uniformCount, const GLchar *const*uniformNames, GLuint *uniformIndices)) \
0568 F(void, GetActiveUniformsiv, (GLuint program, GLsizei uniformCount, const GLuint *uniformIndices, GLenum pname, GLint *params)) \
0569 F(GLuint, GetUniformBlockIndex, (GLuint program, const GLchar *uniformBlockName)) \
0570 F(void, GetActiveUniformBlockiv, (GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint *params)) \
0571 F(void, GetActiveUniformBlockName, (GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformBlockName)) \
0572 F(void, UniformBlockBinding, (GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding)) \
0573 F(void, DrawArraysInstanced, (GLenum mode, GLint first, GLsizei count, GLsizei instancecount)) \
0574 F(void, DrawElementsInstanced, (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount)) \
0575 F(GLsync, FenceSync, (GLenum condition, GLbitfield flags)) \
0576 F(GLboolean, IsSync, (GLsync sync)) \
0577 F(void, DeleteSync, (GLsync sync)) \
0578 F(GLenum, ClientWaitSync, (GLsync sync, GLbitfield flags, GLuint64 timeout)) \
0579 F(void, WaitSync, (GLsync sync, GLbitfield flags, GLuint64 timeout)) \
0580 F(void, GetInteger64v, (GLenum pname, GLint64 *data)) \
0581 F(void, GetSynciv, (GLsync sync, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values)) \
0582 F(void, GetInteger64i_v, (GLenum target, GLuint index, GLint64 *data)) \
0583 F(void, GetBufferParameteri64v, (GLenum target, GLenum pname, GLint64 *params)) \
0584 F(void, GenSamplers, (GLsizei count, GLuint *samplers)) \
0585 F(void, DeleteSamplers, (GLsizei count, const GLuint *samplers)) \
0586 F(GLboolean, IsSampler, (GLuint sampler)) \
0587 F(void, BindSampler, (GLuint unit, GLuint sampler)) \
0588 F(void, SamplerParameteri, (GLuint sampler, GLenum pname, GLint param)) \
0589 F(void, SamplerParameteriv, (GLuint sampler, GLenum pname, const GLint *param)) \
0590 F(void, SamplerParameterf, (GLuint sampler, GLenum pname, GLfloat param)) \
0591 F(void, SamplerParameterfv, (GLuint sampler, GLenum pname, const GLfloat *param)) \
0592 F(void, GetSamplerParameteriv, (GLuint sampler, GLenum pname, GLint *params)) \
0593 F(void, GetSamplerParameterfv, (GLuint sampler, GLenum pname, GLfloat *params)) \
0594 F(void, VertexAttribDivisor, (GLuint index, GLuint divisor)) \
0595 F(void, BindTransformFeedback, (GLenum target, GLuint id)) \
0596 F(void, DeleteTransformFeedbacks, (GLsizei n, const GLuint *ids)) \
0597 F(void, GenTransformFeedbacks, (GLsizei n, GLuint *ids)) \
0598 F(GLboolean, IsTransformFeedback, (GLuint id)) \
0599 F(void, PauseTransformFeedback, (void)) \
0600 F(void, ResumeTransformFeedback, (void)) \
0601 F(void, GetProgramBinary, (GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, void *binary)) \
0602 F(void, ProgramBinary, (GLuint program, GLenum binaryFormat, const void *binary, GLsizei length)) \
0603 F(void, ProgramParameteri, (GLuint program, GLenum pname, GLint value)) \
0604 F(void, InvalidateFramebuffer, (GLenum target, GLsizei numAttachments, const GLenum *attachments)) \
0605 F(void, InvalidateSubFramebuffer, (GLenum target, GLsizei numAttachments, const GLenum *attachments, GLint x, GLint y, GLsizei width, GLsizei height)) \
0606 F(void, TexStorage2D, (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height)) \
0607 F(void, TexStorage3D, (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth)) \
0608 F(void, GetInternalformativ, (GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint *params)) \
0609 F(void, DispatchCompute, (GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z)) \
0610 F(void, DispatchComputeIndirect, (GLintptr indirect)) \
0611 F(void, DrawArraysIndirect, (GLenum mode, const void *indirect)) \
0612 F(void, DrawElementsIndirect, (GLenum mode, GLenum type, const void *indirect)) \
0613 F(void, FramebufferParameteri, (GLenum target, GLenum pname, GLint param)) \
0614 F(void, GetFramebufferParameteriv, (GLenum target, GLenum pname, GLint *params)) \
0615 F(void, GetProgramInterfaceiv, (GLuint program, GLenum programInterface, GLenum pname, GLint *params)) \
0616 F(GLuint, GetProgramResourceIndex, (GLuint program, GLenum programInterface, const GLchar *name)) \
0617 F(void, GetProgramResourceName, (GLuint program, GLenum programInterface, GLuint index, GLsizei bufSize, GLsizei *length, GLchar *name)) \
0618 F(void, GetProgramResourceiv, (GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum *props, GLsizei bufSize, GLsizei *length, GLint *params)) \
0619 F(GLint, GetProgramResourceLocation, (GLuint program, GLenum programInterface, const GLchar *name)) \
0620 F(void, UseProgramStages, (GLuint pipeline, GLbitfield stages, GLuint program)) \
0621 F(void, ActiveShaderProgram, (GLuint pipeline, GLuint program)) \
0622 F(GLuint, CreateShaderProgramv, (GLenum type, GLsizei count, const GLchar *const*strings)) \
0623 F(void, BindProgramPipeline, (GLuint pipeline)) \
0624 F(void, DeleteProgramPipelines, (GLsizei n, const GLuint *pipelines)) \
0625 F(void, GenProgramPipelines, (GLsizei n, GLuint *pipelines)) \
0626 F(GLboolean, IsProgramPipeline, (GLuint pipeline)) \
0627 F(void, GetProgramPipelineiv, (GLuint pipeline, GLenum pname, GLint *params)) \
0628 F(void, ProgramUniform1i, (GLuint program, GLint location, GLint v0)) \
0629 F(void, ProgramUniform2i, (GLuint program, GLint location, GLint v0, GLint v1)) \
0630 F(void, ProgramUniform3i, (GLuint program, GLint location, GLint v0, GLint v1, GLint v2)) \
0631 F(void, ProgramUniform4i, (GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3)) \
0632 F(void, ProgramUniform1ui, (GLuint program, GLint location, GLuint v0)) \
0633 F(void, ProgramUniform2ui, (GLuint program, GLint location, GLuint v0, GLuint v1)) \
0634 F(void, ProgramUniform3ui, (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2)) \
0635 F(void, ProgramUniform4ui, (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3)) \
0636 F(void, ProgramUniform1f, (GLuint program, GLint location, GLfloat v0)) \
0637 F(void, ProgramUniform2f, (GLuint program, GLint location, GLfloat v0, GLfloat v1)) \
0638 F(void, ProgramUniform3f, (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2)) \
0639 F(void, ProgramUniform4f, (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3)) \
0640 F(void, ProgramUniform1iv, (GLuint program, GLint location, GLsizei count, const GLint *value)) \
0641 F(void, ProgramUniform2iv, (GLuint program, GLint location, GLsizei count, const GLint *value)) \
0642 F(void, ProgramUniform3iv, (GLuint program, GLint location, GLsizei count, const GLint *value)) \
0643 F(void, ProgramUniform4iv, (GLuint program, GLint location, GLsizei count, const GLint *value)) \
0644 F(void, ProgramUniform1uiv, (GLuint program, GLint location, GLsizei count, const GLuint *value)) \
0645 F(void, ProgramUniform2uiv, (GLuint program, GLint location, GLsizei count, const GLuint *value)) \
0646 F(void, ProgramUniform3uiv, (GLuint program, GLint location, GLsizei count, const GLuint *value)) \
0647 F(void, ProgramUniform4uiv, (GLuint program, GLint location, GLsizei count, const GLuint *value)) \
0648 F(void, ProgramUniform1fv, (GLuint program, GLint location, GLsizei count, const GLfloat *value)) \
0649 F(void, ProgramUniform2fv, (GLuint program, GLint location, GLsizei count, const GLfloat *value)) \
0650 F(void, ProgramUniform3fv, (GLuint program, GLint location, GLsizei count, const GLfloat *value)) \
0651 F(void, ProgramUniform4fv, (GLuint program, GLint location, GLsizei count, const GLfloat *value)) \
0652 F(void, ProgramUniformMatrix2fv, (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)) \
0653 F(void, ProgramUniformMatrix3fv, (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)) \
0654 F(void, ProgramUniformMatrix4fv, (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)) \
0655 F(void, ProgramUniformMatrix2x3fv, (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)) \
0656 F(void, ProgramUniformMatrix3x2fv, (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)) \
0657 F(void, ProgramUniformMatrix2x4fv, (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)) \
0658 F(void, ProgramUniformMatrix4x2fv, (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)) \
0659 F(void, ProgramUniformMatrix3x4fv, (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)) \
0660 F(void, ProgramUniformMatrix4x3fv, (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)) \
0661 F(void, ValidateProgramPipeline, (GLuint pipeline)) \
0662 F(void, GetProgramPipelineInfoLog, (GLuint pipeline, GLsizei bufSize, GLsizei *length, GLchar *infoLog)) \
0663 F(void, BindImageTexture, (GLuint unit, GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum access, GLenum format)) \
0664 F(void, GetBooleani_v, (GLenum target, GLuint index, GLboolean *data)) \
0665 F(void, MemoryBarrier, (GLbitfield barriers)) \
0666 F(void, MemoryBarrierByRegion, (GLbitfield barriers)) \
0667 F(void, TexStorage2DMultisample, (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations)) \
0668 F(void, GetMultisamplefv, (GLenum pname, GLuint index, GLfloat *val)) \
0669 F(void, SampleMaski, (GLuint maskNumber, GLbitfield mask)) \
0670 F(void, GetTexLevelParameteriv, (GLenum target, GLint level, GLenum pname, GLint *params)) \
0671 F(void, GetTexLevelParameterfv, (GLenum target, GLint level, GLenum pname, GLfloat *params)) \
0672 F(void, BindVertexBuffer, (GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride)) \
0673 F(void, VertexAttribFormat, (GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset)) \
0674 F(void, VertexAttribIFormat, (GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset)) \
0675 F(void, VertexAttribBinding, (GLuint attribindex, GLuint bindingindex)) \
0676 F(void, VertexBindingDivisor, (GLuint bindingindex, GLuint divisor)) \
0677 F(void, BlendBarrier, (void)) \
0678 F(void, BlendEquationSeparatei, (GLuint buf, GLenum modeRGB, GLenum modeAlpha)) \
0679 F(void, BlendEquationi, (GLuint buf, GLenum mode)) \
0680 F(void, BlendFuncSeparatei, (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha)) \
0681 F(void, BlendFunci, (GLuint buf, GLenum src, GLenum dst)) \
0682 F(void, ColorMaski, (GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a)) \
0683 F(void, CopyImageSubData, (GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei srcWidth, GLsizei srcHeight, GLsizei srcDepth)) \
0684 F(void, DebugMessageCallback, (GLDEBUGPROC callback, const void * userParam)) \
0685 F(void, DebugMessageControl, (GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint * ids, GLboolean enabled)) \
0686 F(void, DebugMessageInsert, (GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar * buf)) \
0687 F(void, Disablei, (GLenum target, GLuint index)) \
0688 F(void, DrawElementsBaseVertex, (GLenum mode, GLsizei count, GLenum type, const void * indices, GLint basevertex)) \
0689 F(void, DrawElementsInstancedBaseVertex, (GLenum mode, GLsizei count, GLenum type, const void * indices, GLsizei instancecount, GLint basevertex)) \
0690 F(void, DrawRangeElementsBaseVertex, (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void * indices, GLint basevertex)) \
0691 F(void, Enablei, (GLenum target, GLuint index)) \
0692 F(void, FramebufferTexture, (GLenum target, GLenum attachment, GLuint texture, GLint level)) \
0693 F(GLuint, GetDebugMessageLog, (GLuint count, GLsizei bufSize, GLenum* sources, GLenum* types, GLuint* ids, GLenum* severities, GLsizei* lengths, GLchar* messageLog)) \
0694 F(GLenum, GetGraphicsResetStatus, (void)) \
0695 F(void, GetObjectLabel, (GLenum identifier, GLuint name, GLsizei bufSize, GLsizei* length, GLchar* label)) \
0696 F(void, GetObjectPtrLabel, (const void * ptr, GLsizei bufSize, GLsizei* length, GLchar* label)) \
0697 F(void, GetPointerv, (GLenum pname, void ** params)) \
0698 F(void, GetSamplerParameterIiv, (GLuint sampler, GLenum pname, GLint* params)) \
0699 F(void, GetSamplerParameterIuiv, (GLuint sampler, GLenum pname, GLuint* params)) \
0700 F(void, GetTexParameterIiv, (GLenum target, GLenum pname, GLint* params)) \
0701 F(void, GetTexParameterIuiv, (GLenum target, GLenum pname, GLuint* params)) \
0702 F(void, GetnUniformfv, (GLuint program, GLint location, GLsizei bufSize, GLfloat* params)) \
0703 F(void, GetnUniformiv, (GLuint program, GLint location, GLsizei bufSize, GLint* params)) \
0704 F(void, GetnUniformuiv, (GLuint program, GLint location, GLsizei bufSize, GLuint* params)) \
0705 F(GLboolean, IsEnabledi, (GLenum target, GLuint index)) \
0706 F(void, MinSampleShading, (GLfloat value)) \
0707 F(void, ObjectLabel, (GLenum identifier, GLuint name, GLsizei length, const GLchar * label)) \
0708 F(void, ObjectPtrLabel, (const void * ptr, GLsizei length, const GLchar * label)) \
0709 F(void, PatchParameteri, (GLenum pname, GLint value)) \
0710 F(void, PopDebugGroup, (void)) \
0711 F(void, PrimitiveBoundingBox, (GLfloat minX, GLfloat minY, GLfloat minZ, GLfloat minW, GLfloat maxX, GLfloat maxY, GLfloat maxZ, GLfloat maxW)) \
0712 F(void, PushDebugGroup, (GLenum source, GLuint id, GLsizei length, const GLchar * message)) \
0713 F(void, ReadnPixels, (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void * data)) \
0714 F(void, SamplerParameterIiv, (GLuint sampler, GLenum pname, const GLint * param)) \
0715 F(void, SamplerParameterIuiv, (GLuint sampler, GLenum pname, const GLuint * param)) \
0716 F(void, TexBuffer, (GLenum target, GLenum internalformat, GLuint buffer)) \
0717 F(void, TexBufferRange, (GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size)) \
0718 F(void, TexParameterIiv, (GLenum target, GLenum pname, const GLint * params)) \
0719 F(void, TexParameterIuiv, (GLenum target, GLenum pname, const GLuint * params)) \
0720 F(void, TexStorage3DMultisample, (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations)) \
0721
0722 QT_OPENGL_DECLARE(QT_OPENGL_EXTRA_FUNCTIONS)
0723 };
0724
0725
0726
0727 inline void QOpenGLExtraFunctions::glBeginQuery(GLenum target, GLuint id)
0728 {
0729 Q_D(QOpenGLExtraFunctions);
0730 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
0731 d->f.BeginQuery(target, id);
0732 Q_OPENGL_FUNCTIONS_DEBUG
0733 }
0734
0735 inline void QOpenGLExtraFunctions::glBeginTransformFeedback(GLenum primitiveMode)
0736 {
0737 Q_D(QOpenGLExtraFunctions);
0738 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
0739 d->f.BeginTransformFeedback(primitiveMode);
0740 Q_OPENGL_FUNCTIONS_DEBUG
0741 }
0742
0743 inline void QOpenGLExtraFunctions::glBindBufferBase(GLenum target, GLuint index, GLuint buffer)
0744 {
0745 Q_D(QOpenGLExtraFunctions);
0746 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
0747 d->f.BindBufferBase(target, index, buffer);
0748 Q_OPENGL_FUNCTIONS_DEBUG
0749 }
0750
0751 inline void QOpenGLExtraFunctions::glBindBufferRange(GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size)
0752 {
0753 Q_D(QOpenGLExtraFunctions);
0754 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
0755 d->f.BindBufferRange(target, index, buffer, offset, size);
0756 Q_OPENGL_FUNCTIONS_DEBUG
0757 }
0758
0759 inline void QOpenGLExtraFunctions::glBindSampler(GLuint unit, GLuint sampler)
0760 {
0761 Q_D(QOpenGLExtraFunctions);
0762 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
0763 d->f.BindSampler(unit, sampler);
0764 Q_OPENGL_FUNCTIONS_DEBUG
0765 }
0766
0767 inline void QOpenGLExtraFunctions::glBindTransformFeedback(GLenum target, GLuint id)
0768 {
0769 Q_D(QOpenGLExtraFunctions);
0770 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
0771 d->f.BindTransformFeedback(target, id);
0772 Q_OPENGL_FUNCTIONS_DEBUG
0773 }
0774
0775 inline void QOpenGLExtraFunctions::glBindVertexArray(GLuint array)
0776 {
0777 Q_D(QOpenGLExtraFunctions);
0778 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
0779 d->f.BindVertexArray(array);
0780 Q_OPENGL_FUNCTIONS_DEBUG
0781 }
0782
0783 inline void QOpenGLExtraFunctions::glBlitFramebuffer(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter)
0784 {
0785 Q_D(QOpenGLExtraFunctions);
0786 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
0787 d->f.BlitFramebuffer(srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter);
0788 Q_OPENGL_FUNCTIONS_DEBUG
0789 }
0790
0791 inline void QOpenGLExtraFunctions::glClearBufferfi(GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil)
0792 {
0793 Q_D(QOpenGLExtraFunctions);
0794 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
0795 d->f.ClearBufferfi(buffer, drawbuffer, depth, stencil);
0796 Q_OPENGL_FUNCTIONS_DEBUG
0797 }
0798
0799 inline void QOpenGLExtraFunctions::glClearBufferfv(GLenum buffer, GLint drawbuffer, const GLfloat * value)
0800 {
0801 Q_D(QOpenGLExtraFunctions);
0802 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
0803 d->f.ClearBufferfv(buffer, drawbuffer, value);
0804 Q_OPENGL_FUNCTIONS_DEBUG
0805 }
0806
0807 inline void QOpenGLExtraFunctions::glClearBufferiv(GLenum buffer, GLint drawbuffer, const GLint * value)
0808 {
0809 Q_D(QOpenGLExtraFunctions);
0810 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
0811 d->f.ClearBufferiv(buffer, drawbuffer, value);
0812 Q_OPENGL_FUNCTIONS_DEBUG
0813 }
0814
0815 inline void QOpenGLExtraFunctions::glClearBufferuiv(GLenum buffer, GLint drawbuffer, const GLuint * value)
0816 {
0817 Q_D(QOpenGLExtraFunctions);
0818 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
0819 d->f.ClearBufferuiv(buffer, drawbuffer, value);
0820 Q_OPENGL_FUNCTIONS_DEBUG
0821 }
0822
0823 inline GLenum QOpenGLExtraFunctions::glClientWaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout)
0824 {
0825 Q_D(QOpenGLExtraFunctions);
0826 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
0827 GLenum result = d->f.ClientWaitSync(sync, flags, timeout);
0828 Q_OPENGL_FUNCTIONS_DEBUG
0829 return result;
0830 }
0831
0832 inline void QOpenGLExtraFunctions::glCompressedTexImage3D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void * data)
0833 {
0834 Q_D(QOpenGLExtraFunctions);
0835 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
0836 d->f.CompressedTexImage3D(target, level, internalformat, width, height, depth, border, imageSize, data);
0837 Q_OPENGL_FUNCTIONS_DEBUG
0838 }
0839
0840 inline void QOpenGLExtraFunctions::glCompressedTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void * data)
0841 {
0842 Q_D(QOpenGLExtraFunctions);
0843 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
0844 d->f.CompressedTexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, data);
0845 Q_OPENGL_FUNCTIONS_DEBUG
0846 }
0847
0848 inline void QOpenGLExtraFunctions::glCopyBufferSubData(GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size)
0849 {
0850 Q_D(QOpenGLExtraFunctions);
0851 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
0852 d->f.CopyBufferSubData(readTarget, writeTarget, readOffset, writeOffset, size);
0853 Q_OPENGL_FUNCTIONS_DEBUG
0854 }
0855
0856 inline void QOpenGLExtraFunctions::glCopyTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height)
0857 {
0858 Q_D(QOpenGLExtraFunctions);
0859 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
0860 d->f.CopyTexSubImage3D(target, level, xoffset, yoffset, zoffset, x, y, width, height);
0861 Q_OPENGL_FUNCTIONS_DEBUG
0862 }
0863
0864 inline void QOpenGLExtraFunctions::glDeleteQueries(GLsizei n, const GLuint * ids)
0865 {
0866 Q_D(QOpenGLExtraFunctions);
0867 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
0868 d->f.DeleteQueries(n, ids);
0869 Q_OPENGL_FUNCTIONS_DEBUG
0870 }
0871
0872 inline void QOpenGLExtraFunctions::glDeleteSamplers(GLsizei count, const GLuint * samplers)
0873 {
0874 Q_D(QOpenGLExtraFunctions);
0875 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
0876 d->f.DeleteSamplers(count, samplers);
0877 Q_OPENGL_FUNCTIONS_DEBUG
0878 }
0879
0880 inline void QOpenGLExtraFunctions::glDeleteSync(GLsync sync)
0881 {
0882 Q_D(QOpenGLExtraFunctions);
0883 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
0884 d->f.DeleteSync(sync);
0885 Q_OPENGL_FUNCTIONS_DEBUG
0886 }
0887
0888 inline void QOpenGLExtraFunctions::glDeleteTransformFeedbacks(GLsizei n, const GLuint * ids)
0889 {
0890 Q_D(QOpenGLExtraFunctions);
0891 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
0892 d->f.DeleteTransformFeedbacks(n, ids);
0893 Q_OPENGL_FUNCTIONS_DEBUG
0894 }
0895
0896 inline void QOpenGLExtraFunctions::glDeleteVertexArrays(GLsizei n, const GLuint * arrays)
0897 {
0898 Q_D(QOpenGLExtraFunctions);
0899 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
0900 d->f.DeleteVertexArrays(n, arrays);
0901 Q_OPENGL_FUNCTIONS_DEBUG
0902 }
0903
0904 inline void QOpenGLExtraFunctions::glDrawArraysInstanced(GLenum mode, GLint first, GLsizei count, GLsizei instancecount)
0905 {
0906 Q_D(QOpenGLExtraFunctions);
0907 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
0908 d->f.DrawArraysInstanced(mode, first, count, instancecount);
0909 Q_OPENGL_FUNCTIONS_DEBUG
0910 }
0911
0912 inline void QOpenGLExtraFunctions::glDrawBuffers(GLsizei n, const GLenum * bufs)
0913 {
0914 Q_D(QOpenGLExtraFunctions);
0915 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
0916 d->f.DrawBuffers(n, bufs);
0917 Q_OPENGL_FUNCTIONS_DEBUG
0918 }
0919
0920 inline void QOpenGLExtraFunctions::glDrawElementsInstanced(GLenum mode, GLsizei count, GLenum type, const void * indices, GLsizei instancecount)
0921 {
0922 Q_D(QOpenGLExtraFunctions);
0923 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
0924 d->f.DrawElementsInstanced(mode, count, type, indices, instancecount);
0925 Q_OPENGL_FUNCTIONS_DEBUG
0926 }
0927
0928 inline void QOpenGLExtraFunctions::glDrawRangeElements(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void * indices)
0929 {
0930 Q_D(QOpenGLExtraFunctions);
0931 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
0932 d->f.DrawRangeElements(mode, start, end, count, type, indices);
0933 Q_OPENGL_FUNCTIONS_DEBUG
0934 }
0935
0936 inline void QOpenGLExtraFunctions::glEndQuery(GLenum target)
0937 {
0938 Q_D(QOpenGLExtraFunctions);
0939 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
0940 d->f.EndQuery(target);
0941 Q_OPENGL_FUNCTIONS_DEBUG
0942 }
0943
0944 inline void QOpenGLExtraFunctions::glEndTransformFeedback()
0945 {
0946 Q_D(QOpenGLExtraFunctions);
0947 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
0948 d->f.EndTransformFeedback();
0949 Q_OPENGL_FUNCTIONS_DEBUG
0950 }
0951
0952 inline GLsync QOpenGLExtraFunctions::glFenceSync(GLenum condition, GLbitfield flags)
0953 {
0954 Q_D(QOpenGLExtraFunctions);
0955 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
0956 GLsync result = d->f.FenceSync(condition, flags);
0957 Q_OPENGL_FUNCTIONS_DEBUG
0958 return result;
0959 }
0960
0961 inline void QOpenGLExtraFunctions::glFlushMappedBufferRange(GLenum target, GLintptr offset, GLsizeiptr length)
0962 {
0963 Q_D(QOpenGLExtraFunctions);
0964 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
0965 d->f.FlushMappedBufferRange(target, offset, length);
0966 Q_OPENGL_FUNCTIONS_DEBUG
0967 }
0968
0969 inline void QOpenGLExtraFunctions::glFramebufferTextureLayer(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer)
0970 {
0971 Q_D(QOpenGLExtraFunctions);
0972 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
0973 d->f.FramebufferTextureLayer(target, attachment, texture, level, layer);
0974 Q_OPENGL_FUNCTIONS_DEBUG
0975 }
0976
0977 inline void QOpenGLExtraFunctions::glGenQueries(GLsizei n, GLuint* ids)
0978 {
0979 Q_D(QOpenGLExtraFunctions);
0980 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
0981 d->f.GenQueries(n, ids);
0982 Q_OPENGL_FUNCTIONS_DEBUG
0983 }
0984
0985 inline void QOpenGLExtraFunctions::glGenSamplers(GLsizei count, GLuint* samplers)
0986 {
0987 Q_D(QOpenGLExtraFunctions);
0988 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
0989 d->f.GenSamplers(count, samplers);
0990 Q_OPENGL_FUNCTIONS_DEBUG
0991 }
0992
0993 inline void QOpenGLExtraFunctions::glGenTransformFeedbacks(GLsizei n, GLuint* ids)
0994 {
0995 Q_D(QOpenGLExtraFunctions);
0996 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
0997 d->f.GenTransformFeedbacks(n, ids);
0998 Q_OPENGL_FUNCTIONS_DEBUG
0999 }
1000
1001 inline void QOpenGLExtraFunctions::glGenVertexArrays(GLsizei n, GLuint* arrays)
1002 {
1003 Q_D(QOpenGLExtraFunctions);
1004 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1005 d->f.GenVertexArrays(n, arrays);
1006 Q_OPENGL_FUNCTIONS_DEBUG
1007 }
1008
1009 inline void QOpenGLExtraFunctions::glGetActiveUniformBlockName(GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei* length, GLchar* uniformBlockName)
1010 {
1011 Q_D(QOpenGLExtraFunctions);
1012 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1013 d->f.GetActiveUniformBlockName(program, uniformBlockIndex, bufSize, length, uniformBlockName);
1014 Q_OPENGL_FUNCTIONS_DEBUG
1015 }
1016
1017 inline void QOpenGLExtraFunctions::glGetActiveUniformBlockiv(GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint* params)
1018 {
1019 Q_D(QOpenGLExtraFunctions);
1020 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1021 d->f.GetActiveUniformBlockiv(program, uniformBlockIndex, pname, params);
1022 Q_OPENGL_FUNCTIONS_DEBUG
1023 }
1024
1025 inline void QOpenGLExtraFunctions::glGetActiveUniformsiv(GLuint program, GLsizei uniformCount, const GLuint * uniformIndices, GLenum pname, GLint* params)
1026 {
1027 Q_D(QOpenGLExtraFunctions);
1028 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1029 d->f.GetActiveUniformsiv(program, uniformCount, uniformIndices, pname, params);
1030 Q_OPENGL_FUNCTIONS_DEBUG
1031 }
1032
1033 inline void QOpenGLExtraFunctions::glGetBufferParameteri64v(GLenum target, GLenum pname, GLint64* params)
1034 {
1035 Q_D(QOpenGLExtraFunctions);
1036 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1037 d->f.GetBufferParameteri64v(target, pname, params);
1038 Q_OPENGL_FUNCTIONS_DEBUG
1039 }
1040
1041 inline void QOpenGLExtraFunctions::glGetBufferPointerv(GLenum target, GLenum pname, void ** params)
1042 {
1043 Q_D(QOpenGLExtraFunctions);
1044 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1045 d->f.GetBufferPointerv(target, pname, params);
1046 Q_OPENGL_FUNCTIONS_DEBUG
1047 }
1048
1049 inline GLint QOpenGLExtraFunctions::glGetFragDataLocation(GLuint program, const GLchar * name)
1050 {
1051 Q_D(QOpenGLExtraFunctions);
1052 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1053 GLint result = d->f.GetFragDataLocation(program, name);
1054 Q_OPENGL_FUNCTIONS_DEBUG
1055 return result;
1056 }
1057
1058 inline void QOpenGLExtraFunctions::glGetInteger64i_v(GLenum target, GLuint index, GLint64* data)
1059 {
1060 Q_D(QOpenGLExtraFunctions);
1061 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1062 d->f.GetInteger64i_v(target, index, data);
1063 Q_OPENGL_FUNCTIONS_DEBUG
1064 }
1065
1066 inline void QOpenGLExtraFunctions::glGetInteger64v(GLenum pname, GLint64* data)
1067 {
1068 Q_D(QOpenGLExtraFunctions);
1069 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1070 d->f.GetInteger64v(pname, data);
1071 Q_OPENGL_FUNCTIONS_DEBUG
1072 }
1073
1074 inline void QOpenGLExtraFunctions::glGetIntegeri_v(GLenum target, GLuint index, GLint* data)
1075 {
1076 Q_D(QOpenGLExtraFunctions);
1077 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1078 d->f.GetIntegeri_v(target, index, data);
1079 Q_OPENGL_FUNCTIONS_DEBUG
1080 }
1081
1082 inline void QOpenGLExtraFunctions::glGetInternalformativ(GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint* params)
1083 {
1084 Q_D(QOpenGLExtraFunctions);
1085 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1086 d->f.GetInternalformativ(target, internalformat, pname, bufSize, params);
1087 Q_OPENGL_FUNCTIONS_DEBUG
1088 }
1089
1090 inline void QOpenGLExtraFunctions::glGetProgramBinary(GLuint program, GLsizei bufSize, GLsizei* length, GLenum* binaryFormat, void * binary)
1091 {
1092 Q_D(QOpenGLExtraFunctions);
1093 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1094 d->f.GetProgramBinary(program, bufSize, length, binaryFormat, binary);
1095 Q_OPENGL_FUNCTIONS_DEBUG
1096 }
1097
1098 inline void QOpenGLExtraFunctions::glGetQueryObjectuiv(GLuint id, GLenum pname, GLuint* params)
1099 {
1100 Q_D(QOpenGLExtraFunctions);
1101 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1102 d->f.GetQueryObjectuiv(id, pname, params);
1103 Q_OPENGL_FUNCTIONS_DEBUG
1104 }
1105
1106 inline void QOpenGLExtraFunctions::glGetQueryiv(GLenum target, GLenum pname, GLint* params)
1107 {
1108 Q_D(QOpenGLExtraFunctions);
1109 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1110 d->f.GetQueryiv(target, pname, params);
1111 Q_OPENGL_FUNCTIONS_DEBUG
1112 }
1113
1114 inline void QOpenGLExtraFunctions::glGetSamplerParameterfv(GLuint sampler, GLenum pname, GLfloat* params)
1115 {
1116 Q_D(QOpenGLExtraFunctions);
1117 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1118 d->f.GetSamplerParameterfv(sampler, pname, params);
1119 Q_OPENGL_FUNCTIONS_DEBUG
1120 }
1121
1122 inline void QOpenGLExtraFunctions::glGetSamplerParameteriv(GLuint sampler, GLenum pname, GLint* params)
1123 {
1124 Q_D(QOpenGLExtraFunctions);
1125 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1126 d->f.GetSamplerParameteriv(sampler, pname, params);
1127 Q_OPENGL_FUNCTIONS_DEBUG
1128 }
1129
1130 inline const GLubyte * QOpenGLExtraFunctions::glGetStringi(GLenum name, GLuint index)
1131 {
1132 Q_D(QOpenGLExtraFunctions);
1133 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1134 const GLubyte * result = d->f.GetStringi(name, index);
1135 Q_OPENGL_FUNCTIONS_DEBUG
1136 return result;
1137 }
1138
1139 inline void QOpenGLExtraFunctions::glGetSynciv(GLsync sync, GLenum pname, GLsizei bufSize, GLsizei* length, GLint* values)
1140 {
1141 Q_D(QOpenGLExtraFunctions);
1142 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1143 d->f.GetSynciv(sync, pname, bufSize, length, values);
1144 Q_OPENGL_FUNCTIONS_DEBUG
1145 }
1146
1147 inline void QOpenGLExtraFunctions::glGetTransformFeedbackVarying(GLuint program, GLuint index, GLsizei bufSize, GLsizei* length, GLsizei* size, GLenum* type, GLchar* name)
1148 {
1149 Q_D(QOpenGLExtraFunctions);
1150 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1151 d->f.GetTransformFeedbackVarying(program, index, bufSize, length, size, type, name);
1152 Q_OPENGL_FUNCTIONS_DEBUG
1153 }
1154
1155 inline GLuint QOpenGLExtraFunctions::glGetUniformBlockIndex(GLuint program, const GLchar * uniformBlockName)
1156 {
1157 Q_D(QOpenGLExtraFunctions);
1158 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1159 GLuint result = d->f.GetUniformBlockIndex(program, uniformBlockName);
1160 Q_OPENGL_FUNCTIONS_DEBUG
1161 return result;
1162 }
1163
1164 inline void QOpenGLExtraFunctions::glGetUniformIndices(GLuint program, GLsizei uniformCount, const GLchar *const* uniformNames, GLuint* uniformIndices)
1165 {
1166 Q_D(QOpenGLExtraFunctions);
1167 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1168 d->f.GetUniformIndices(program, uniformCount, uniformNames, uniformIndices);
1169 Q_OPENGL_FUNCTIONS_DEBUG
1170 }
1171
1172 inline void QOpenGLExtraFunctions::glGetUniformuiv(GLuint program, GLint location, GLuint* params)
1173 {
1174 Q_D(QOpenGLExtraFunctions);
1175 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1176 d->f.GetUniformuiv(program, location, params);
1177 Q_OPENGL_FUNCTIONS_DEBUG
1178 }
1179
1180 inline void QOpenGLExtraFunctions::glGetVertexAttribIiv(GLuint index, GLenum pname, GLint* params)
1181 {
1182 Q_D(QOpenGLExtraFunctions);
1183 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1184 d->f.GetVertexAttribIiv(index, pname, params);
1185 Q_OPENGL_FUNCTIONS_DEBUG
1186 }
1187
1188 inline void QOpenGLExtraFunctions::glGetVertexAttribIuiv(GLuint index, GLenum pname, GLuint* params)
1189 {
1190 Q_D(QOpenGLExtraFunctions);
1191 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1192 d->f.GetVertexAttribIuiv(index, pname, params);
1193 Q_OPENGL_FUNCTIONS_DEBUG
1194 }
1195
1196 inline void QOpenGLExtraFunctions::glInvalidateFramebuffer(GLenum target, GLsizei numAttachments, const GLenum * attachments)
1197 {
1198 Q_D(QOpenGLExtraFunctions);
1199 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1200 d->f.InvalidateFramebuffer(target, numAttachments, attachments);
1201 Q_OPENGL_FUNCTIONS_DEBUG
1202 }
1203
1204 inline void QOpenGLExtraFunctions::glInvalidateSubFramebuffer(GLenum target, GLsizei numAttachments, const GLenum * attachments, GLint x, GLint y, GLsizei width, GLsizei height)
1205 {
1206 Q_D(QOpenGLExtraFunctions);
1207 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1208 d->f.InvalidateSubFramebuffer(target, numAttachments, attachments, x, y, width, height);
1209 Q_OPENGL_FUNCTIONS_DEBUG
1210 }
1211
1212 inline GLboolean QOpenGLExtraFunctions::glIsQuery(GLuint id)
1213 {
1214 Q_D(QOpenGLExtraFunctions);
1215 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1216 GLboolean result = d->f.IsQuery(id);
1217 Q_OPENGL_FUNCTIONS_DEBUG
1218 return result;
1219 }
1220
1221 inline GLboolean QOpenGLExtraFunctions::glIsSampler(GLuint sampler)
1222 {
1223 Q_D(QOpenGLExtraFunctions);
1224 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1225 GLboolean result = d->f.IsSampler(sampler);
1226 Q_OPENGL_FUNCTIONS_DEBUG
1227 return result;
1228 }
1229
1230 inline GLboolean QOpenGLExtraFunctions::glIsSync(GLsync sync)
1231 {
1232 Q_D(QOpenGLExtraFunctions);
1233 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1234 GLboolean result = d->f.IsSync(sync);
1235 Q_OPENGL_FUNCTIONS_DEBUG
1236 return result;
1237 }
1238
1239 inline GLboolean QOpenGLExtraFunctions::glIsTransformFeedback(GLuint id)
1240 {
1241 Q_D(QOpenGLExtraFunctions);
1242 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1243 GLboolean result = d->f.IsTransformFeedback(id);
1244 Q_OPENGL_FUNCTIONS_DEBUG
1245 return result;
1246 }
1247
1248 inline GLboolean QOpenGLExtraFunctions::glIsVertexArray(GLuint array)
1249 {
1250 Q_D(QOpenGLExtraFunctions);
1251 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1252 GLboolean result = d->f.IsVertexArray(array);
1253 Q_OPENGL_FUNCTIONS_DEBUG
1254 return result;
1255 }
1256
1257 inline void * QOpenGLExtraFunctions::glMapBufferRange(GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access)
1258 {
1259 Q_D(QOpenGLExtraFunctions);
1260 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1261 void *result = d->f.MapBufferRange(target, offset, length, access);
1262 Q_OPENGL_FUNCTIONS_DEBUG
1263 return result;
1264 }
1265
1266 inline void QOpenGLExtraFunctions::glPauseTransformFeedback()
1267 {
1268 Q_D(QOpenGLExtraFunctions);
1269 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1270 d->f.PauseTransformFeedback();
1271 Q_OPENGL_FUNCTIONS_DEBUG
1272 }
1273
1274 inline void QOpenGLExtraFunctions::glProgramBinary(GLuint program, GLenum binaryFormat, const void * binary, GLsizei length)
1275 {
1276 Q_D(QOpenGLExtraFunctions);
1277 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1278 d->f.ProgramBinary(program, binaryFormat, binary, length);
1279 Q_OPENGL_FUNCTIONS_DEBUG
1280 }
1281
1282 inline void QOpenGLExtraFunctions::glProgramParameteri(GLuint program, GLenum pname, GLint value)
1283 {
1284 Q_D(QOpenGLExtraFunctions);
1285 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1286 d->f.ProgramParameteri(program, pname, value);
1287 Q_OPENGL_FUNCTIONS_DEBUG
1288 }
1289
1290 inline void QOpenGLExtraFunctions::glReadBuffer(GLenum src)
1291 {
1292 Q_D(QOpenGLExtraFunctions);
1293 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1294 d->f.ReadBuffer(src);
1295 Q_OPENGL_FUNCTIONS_DEBUG
1296 }
1297
1298 inline void QOpenGLExtraFunctions::glRenderbufferStorageMultisample(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height)
1299 {
1300 Q_D(QOpenGLExtraFunctions);
1301 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1302 d->f.RenderbufferStorageMultisample(target, samples, internalformat, width, height);
1303 Q_OPENGL_FUNCTIONS_DEBUG
1304 }
1305
1306 inline void QOpenGLExtraFunctions::glResumeTransformFeedback()
1307 {
1308 Q_D(QOpenGLExtraFunctions);
1309 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1310 d->f.ResumeTransformFeedback();
1311 Q_OPENGL_FUNCTIONS_DEBUG
1312 }
1313
1314 inline void QOpenGLExtraFunctions::glSamplerParameterf(GLuint sampler, GLenum pname, GLfloat param)
1315 {
1316 Q_D(QOpenGLExtraFunctions);
1317 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1318 d->f.SamplerParameterf(sampler, pname, param);
1319 Q_OPENGL_FUNCTIONS_DEBUG
1320 }
1321
1322 inline void QOpenGLExtraFunctions::glSamplerParameterfv(GLuint sampler, GLenum pname, const GLfloat * param)
1323 {
1324 Q_D(QOpenGLExtraFunctions);
1325 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1326 d->f.SamplerParameterfv(sampler, pname, param);
1327 Q_OPENGL_FUNCTIONS_DEBUG
1328 }
1329
1330 inline void QOpenGLExtraFunctions::glSamplerParameteri(GLuint sampler, GLenum pname, GLint param)
1331 {
1332 Q_D(QOpenGLExtraFunctions);
1333 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1334 d->f.SamplerParameteri(sampler, pname, param);
1335 Q_OPENGL_FUNCTIONS_DEBUG
1336 }
1337
1338 inline void QOpenGLExtraFunctions::glSamplerParameteriv(GLuint sampler, GLenum pname, const GLint * param)
1339 {
1340 Q_D(QOpenGLExtraFunctions);
1341 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1342 d->f.SamplerParameteriv(sampler, pname, param);
1343 Q_OPENGL_FUNCTIONS_DEBUG
1344 }
1345
1346 inline void QOpenGLExtraFunctions::glTexImage3D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void * pixels)
1347 {
1348 Q_D(QOpenGLExtraFunctions);
1349 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1350 d->f.TexImage3D(target, level, internalformat, width, height, depth, border, format, type, pixels);
1351 Q_OPENGL_FUNCTIONS_DEBUG
1352 }
1353
1354 inline void QOpenGLExtraFunctions::glTexStorage2D(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height)
1355 {
1356 Q_D(QOpenGLExtraFunctions);
1357 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1358 d->f.TexStorage2D(target, levels, internalformat, width, height);
1359 Q_OPENGL_FUNCTIONS_DEBUG
1360 }
1361
1362 inline void QOpenGLExtraFunctions::glTexStorage3D(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth)
1363 {
1364 Q_D(QOpenGLExtraFunctions);
1365 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1366 d->f.TexStorage3D(target, levels, internalformat, width, height, depth);
1367 Q_OPENGL_FUNCTIONS_DEBUG
1368 }
1369
1370 inline void QOpenGLExtraFunctions::glTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void * pixels)
1371 {
1372 Q_D(QOpenGLExtraFunctions);
1373 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1374 d->f.TexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels);
1375 Q_OPENGL_FUNCTIONS_DEBUG
1376 }
1377
1378 inline void QOpenGLExtraFunctions::glTransformFeedbackVaryings(GLuint program, GLsizei count, const GLchar *const* varyings, GLenum bufferMode)
1379 {
1380 Q_D(QOpenGLExtraFunctions);
1381 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1382 d->f.TransformFeedbackVaryings(program, count, varyings, bufferMode);
1383 Q_OPENGL_FUNCTIONS_DEBUG
1384 }
1385
1386 inline void QOpenGLExtraFunctions::glUniform1ui(GLint location, GLuint v0)
1387 {
1388 Q_D(QOpenGLExtraFunctions);
1389 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1390 d->f.Uniform1ui(location, v0);
1391 Q_OPENGL_FUNCTIONS_DEBUG
1392 }
1393
1394 inline void QOpenGLExtraFunctions::glUniform1uiv(GLint location, GLsizei count, const GLuint * value)
1395 {
1396 Q_D(QOpenGLExtraFunctions);
1397 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1398 d->f.Uniform1uiv(location, count, value);
1399 Q_OPENGL_FUNCTIONS_DEBUG
1400 }
1401
1402 inline void QOpenGLExtraFunctions::glUniform2ui(GLint location, GLuint v0, GLuint v1)
1403 {
1404 Q_D(QOpenGLExtraFunctions);
1405 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1406 d->f.Uniform2ui(location, v0, v1);
1407 Q_OPENGL_FUNCTIONS_DEBUG
1408 }
1409
1410 inline void QOpenGLExtraFunctions::glUniform2uiv(GLint location, GLsizei count, const GLuint * value)
1411 {
1412 Q_D(QOpenGLExtraFunctions);
1413 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1414 d->f.Uniform2uiv(location, count, value);
1415 Q_OPENGL_FUNCTIONS_DEBUG
1416 }
1417
1418 inline void QOpenGLExtraFunctions::glUniform3ui(GLint location, GLuint v0, GLuint v1, GLuint v2)
1419 {
1420 Q_D(QOpenGLExtraFunctions);
1421 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1422 d->f.Uniform3ui(location, v0, v1, v2);
1423 Q_OPENGL_FUNCTIONS_DEBUG
1424 }
1425
1426 inline void QOpenGLExtraFunctions::glUniform3uiv(GLint location, GLsizei count, const GLuint * value)
1427 {
1428 Q_D(QOpenGLExtraFunctions);
1429 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1430 d->f.Uniform3uiv(location, count, value);
1431 Q_OPENGL_FUNCTIONS_DEBUG
1432 }
1433
1434 inline void QOpenGLExtraFunctions::glUniform4ui(GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3)
1435 {
1436 Q_D(QOpenGLExtraFunctions);
1437 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1438 d->f.Uniform4ui(location, v0, v1, v2, v3);
1439 Q_OPENGL_FUNCTIONS_DEBUG
1440 }
1441
1442 inline void QOpenGLExtraFunctions::glUniform4uiv(GLint location, GLsizei count, const GLuint * value)
1443 {
1444 Q_D(QOpenGLExtraFunctions);
1445 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1446 d->f.Uniform4uiv(location, count, value);
1447 Q_OPENGL_FUNCTIONS_DEBUG
1448 }
1449
1450 inline void QOpenGLExtraFunctions::glUniformBlockBinding(GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding)
1451 {
1452 Q_D(QOpenGLExtraFunctions);
1453 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1454 d->f.UniformBlockBinding(program, uniformBlockIndex, uniformBlockBinding);
1455 Q_OPENGL_FUNCTIONS_DEBUG
1456 }
1457
1458 inline void QOpenGLExtraFunctions::glUniformMatrix2x3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value)
1459 {
1460 Q_D(QOpenGLExtraFunctions);
1461 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1462 d->f.UniformMatrix2x3fv(location, count, transpose, value);
1463 Q_OPENGL_FUNCTIONS_DEBUG
1464 }
1465
1466 inline void QOpenGLExtraFunctions::glUniformMatrix2x4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value)
1467 {
1468 Q_D(QOpenGLExtraFunctions);
1469 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1470 d->f.UniformMatrix2x4fv(location, count, transpose, value);
1471 Q_OPENGL_FUNCTIONS_DEBUG
1472 }
1473
1474 inline void QOpenGLExtraFunctions::glUniformMatrix3x2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value)
1475 {
1476 Q_D(QOpenGLExtraFunctions);
1477 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1478 d->f.UniformMatrix3x2fv(location, count, transpose, value);
1479 Q_OPENGL_FUNCTIONS_DEBUG
1480 }
1481
1482 inline void QOpenGLExtraFunctions::glUniformMatrix3x4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value)
1483 {
1484 Q_D(QOpenGLExtraFunctions);
1485 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1486 d->f.UniformMatrix3x4fv(location, count, transpose, value);
1487 Q_OPENGL_FUNCTIONS_DEBUG
1488 }
1489
1490 inline void QOpenGLExtraFunctions::glUniformMatrix4x2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value)
1491 {
1492 Q_D(QOpenGLExtraFunctions);
1493 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1494 d->f.UniformMatrix4x2fv(location, count, transpose, value);
1495 Q_OPENGL_FUNCTIONS_DEBUG
1496 }
1497
1498 inline void QOpenGLExtraFunctions::glUniformMatrix4x3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value)
1499 {
1500 Q_D(QOpenGLExtraFunctions);
1501 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1502 d->f.UniformMatrix4x3fv(location, count, transpose, value);
1503 Q_OPENGL_FUNCTIONS_DEBUG
1504 }
1505
1506 inline GLboolean QOpenGLExtraFunctions::glUnmapBuffer(GLenum target)
1507 {
1508 Q_D(QOpenGLExtraFunctions);
1509 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1510 GLboolean result = d->f.UnmapBuffer(target);
1511 Q_OPENGL_FUNCTIONS_DEBUG
1512 return result;
1513 }
1514
1515 inline void QOpenGLExtraFunctions::glVertexAttribDivisor(GLuint index, GLuint divisor)
1516 {
1517 Q_D(QOpenGLExtraFunctions);
1518 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1519 d->f.VertexAttribDivisor(index, divisor);
1520 Q_OPENGL_FUNCTIONS_DEBUG
1521 }
1522
1523 inline void QOpenGLExtraFunctions::glVertexAttribI4i(GLuint index, GLint x, GLint y, GLint z, GLint w)
1524 {
1525 Q_D(QOpenGLExtraFunctions);
1526 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1527 d->f.VertexAttribI4i(index, x, y, z, w);
1528 Q_OPENGL_FUNCTIONS_DEBUG
1529 }
1530
1531 inline void QOpenGLExtraFunctions::glVertexAttribI4iv(GLuint index, const GLint * v)
1532 {
1533 Q_D(QOpenGLExtraFunctions);
1534 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1535 d->f.VertexAttribI4iv(index, v);
1536 Q_OPENGL_FUNCTIONS_DEBUG
1537 }
1538
1539 inline void QOpenGLExtraFunctions::glVertexAttribI4ui(GLuint index, GLuint x, GLuint y, GLuint z, GLuint w)
1540 {
1541 Q_D(QOpenGLExtraFunctions);
1542 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1543 d->f.VertexAttribI4ui(index, x, y, z, w);
1544 Q_OPENGL_FUNCTIONS_DEBUG
1545 }
1546
1547 inline void QOpenGLExtraFunctions::glVertexAttribI4uiv(GLuint index, const GLuint * v)
1548 {
1549 Q_D(QOpenGLExtraFunctions);
1550 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1551 d->f.VertexAttribI4uiv(index, v);
1552 Q_OPENGL_FUNCTIONS_DEBUG
1553 }
1554
1555 inline void QOpenGLExtraFunctions::glVertexAttribIPointer(GLuint index, GLint size, GLenum type, GLsizei stride, const void * pointer)
1556 {
1557 Q_D(QOpenGLExtraFunctions);
1558 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1559 d->f.VertexAttribIPointer(index, size, type, stride, pointer);
1560 Q_OPENGL_FUNCTIONS_DEBUG
1561 }
1562
1563 inline void QOpenGLExtraFunctions::glWaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout)
1564 {
1565 Q_D(QOpenGLExtraFunctions);
1566 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1567 d->f.WaitSync(sync, flags, timeout);
1568 Q_OPENGL_FUNCTIONS_DEBUG
1569 }
1570
1571 inline void QOpenGLExtraFunctions::glActiveShaderProgram(GLuint pipeline, GLuint program)
1572 {
1573 Q_D(QOpenGLExtraFunctions);
1574 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1575 d->f.ActiveShaderProgram(pipeline, program);
1576 Q_OPENGL_FUNCTIONS_DEBUG
1577 }
1578
1579 inline void QOpenGLExtraFunctions::glBindImageTexture(GLuint unit, GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum access, GLenum format)
1580 {
1581 Q_D(QOpenGLExtraFunctions);
1582 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1583 d->f.BindImageTexture(unit, texture, level, layered, layer, access, format);
1584 Q_OPENGL_FUNCTIONS_DEBUG
1585 }
1586
1587 inline void QOpenGLExtraFunctions::glBindProgramPipeline(GLuint pipeline)
1588 {
1589 Q_D(QOpenGLExtraFunctions);
1590 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1591 d->f.BindProgramPipeline(pipeline);
1592 Q_OPENGL_FUNCTIONS_DEBUG
1593 }
1594
1595 inline void QOpenGLExtraFunctions::glBindVertexBuffer(GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride)
1596 {
1597 Q_D(QOpenGLExtraFunctions);
1598 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1599 d->f.BindVertexBuffer(bindingindex, buffer, offset, stride);
1600 Q_OPENGL_FUNCTIONS_DEBUG
1601 }
1602
1603 inline GLuint QOpenGLExtraFunctions::glCreateShaderProgramv(GLenum type, GLsizei count, const GLchar *const* strings)
1604 {
1605 Q_D(QOpenGLExtraFunctions);
1606 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1607 GLuint result = d->f.CreateShaderProgramv(type, count, strings);
1608 Q_OPENGL_FUNCTIONS_DEBUG
1609 return result;
1610 }
1611
1612 inline void QOpenGLExtraFunctions::glDeleteProgramPipelines(GLsizei n, const GLuint * pipelines)
1613 {
1614 Q_D(QOpenGLExtraFunctions);
1615 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1616 d->f.DeleteProgramPipelines(n, pipelines);
1617 Q_OPENGL_FUNCTIONS_DEBUG
1618 }
1619
1620 inline void QOpenGLExtraFunctions::glDispatchCompute(GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z)
1621 {
1622 Q_D(QOpenGLExtraFunctions);
1623 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1624 d->f.DispatchCompute(num_groups_x, num_groups_y, num_groups_z);
1625 Q_OPENGL_FUNCTIONS_DEBUG
1626 }
1627
1628 inline void QOpenGLExtraFunctions::glDispatchComputeIndirect(GLintptr indirect)
1629 {
1630 Q_D(QOpenGLExtraFunctions);
1631 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1632 d->f.DispatchComputeIndirect(indirect);
1633 Q_OPENGL_FUNCTIONS_DEBUG
1634 }
1635
1636 inline void QOpenGLExtraFunctions::glDrawArraysIndirect(GLenum mode, const void * indirect)
1637 {
1638 Q_D(QOpenGLExtraFunctions);
1639 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1640 d->f.DrawArraysIndirect(mode, indirect);
1641 Q_OPENGL_FUNCTIONS_DEBUG
1642 }
1643
1644 inline void QOpenGLExtraFunctions::glDrawElementsIndirect(GLenum mode, GLenum type, const void * indirect)
1645 {
1646 Q_D(QOpenGLExtraFunctions);
1647 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1648 d->f.DrawElementsIndirect(mode, type, indirect);
1649 Q_OPENGL_FUNCTIONS_DEBUG
1650 }
1651
1652 inline void QOpenGLExtraFunctions::glFramebufferParameteri(GLenum target, GLenum pname, GLint param)
1653 {
1654 Q_D(QOpenGLExtraFunctions);
1655 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1656 d->f.FramebufferParameteri(target, pname, param);
1657 Q_OPENGL_FUNCTIONS_DEBUG
1658 }
1659
1660 inline void QOpenGLExtraFunctions::glGenProgramPipelines(GLsizei n, GLuint* pipelines)
1661 {
1662 Q_D(QOpenGLExtraFunctions);
1663 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1664 d->f.GenProgramPipelines(n, pipelines);
1665 Q_OPENGL_FUNCTIONS_DEBUG
1666 }
1667
1668 inline void QOpenGLExtraFunctions::glGetBooleani_v(GLenum target, GLuint index, GLboolean* data)
1669 {
1670 Q_D(QOpenGLExtraFunctions);
1671 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1672 d->f.GetBooleani_v(target, index, data);
1673 Q_OPENGL_FUNCTIONS_DEBUG
1674 }
1675
1676 inline void QOpenGLExtraFunctions::glGetFramebufferParameteriv(GLenum target, GLenum pname, GLint* params)
1677 {
1678 Q_D(QOpenGLExtraFunctions);
1679 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1680 d->f.GetFramebufferParameteriv(target, pname, params);
1681 Q_OPENGL_FUNCTIONS_DEBUG
1682 }
1683
1684 inline void QOpenGLExtraFunctions::glGetMultisamplefv(GLenum pname, GLuint index, GLfloat* val)
1685 {
1686 Q_D(QOpenGLExtraFunctions);
1687 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1688 d->f.GetMultisamplefv(pname, index, val);
1689 Q_OPENGL_FUNCTIONS_DEBUG
1690 }
1691
1692 inline void QOpenGLExtraFunctions::glGetProgramInterfaceiv(GLuint program, GLenum programInterface, GLenum pname, GLint* params)
1693 {
1694 Q_D(QOpenGLExtraFunctions);
1695 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1696 d->f.GetProgramInterfaceiv(program, programInterface, pname, params);
1697 Q_OPENGL_FUNCTIONS_DEBUG
1698 }
1699
1700 inline void QOpenGLExtraFunctions::glGetProgramPipelineInfoLog(GLuint pipeline, GLsizei bufSize, GLsizei* length, GLchar* infoLog)
1701 {
1702 Q_D(QOpenGLExtraFunctions);
1703 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1704 d->f.GetProgramPipelineInfoLog(pipeline, bufSize, length, infoLog);
1705 Q_OPENGL_FUNCTIONS_DEBUG
1706 }
1707
1708 inline void QOpenGLExtraFunctions::glGetProgramPipelineiv(GLuint pipeline, GLenum pname, GLint* params)
1709 {
1710 Q_D(QOpenGLExtraFunctions);
1711 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1712 d->f.GetProgramPipelineiv(pipeline, pname, params);
1713 Q_OPENGL_FUNCTIONS_DEBUG
1714 }
1715
1716 inline GLuint QOpenGLExtraFunctions::glGetProgramResourceIndex(GLuint program, GLenum programInterface, const GLchar * name)
1717 {
1718 Q_D(QOpenGLExtraFunctions);
1719 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1720 GLuint result = d->f.GetProgramResourceIndex(program, programInterface, name);
1721 Q_OPENGL_FUNCTIONS_DEBUG
1722 return result;
1723 }
1724
1725 inline GLint QOpenGLExtraFunctions::glGetProgramResourceLocation(GLuint program, GLenum programInterface, const GLchar * name)
1726 {
1727 Q_D(QOpenGLExtraFunctions);
1728 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1729 GLint result = d->f.GetProgramResourceLocation(program, programInterface, name);
1730 Q_OPENGL_FUNCTIONS_DEBUG
1731 return result;
1732 }
1733
1734 inline void QOpenGLExtraFunctions::glGetProgramResourceName(GLuint program, GLenum programInterface, GLuint index, GLsizei bufSize, GLsizei* length, GLchar* name)
1735 {
1736 Q_D(QOpenGLExtraFunctions);
1737 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1738 d->f.GetProgramResourceName(program, programInterface, index, bufSize, length, name);
1739 Q_OPENGL_FUNCTIONS_DEBUG
1740 }
1741
1742 inline void QOpenGLExtraFunctions::glGetProgramResourceiv(GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum * props, GLsizei bufSize, GLsizei* length, GLint* params)
1743 {
1744 Q_D(QOpenGLExtraFunctions);
1745 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1746 d->f.GetProgramResourceiv(program, programInterface, index, propCount, props, bufSize, length, params);
1747 Q_OPENGL_FUNCTIONS_DEBUG
1748 }
1749
1750 inline void QOpenGLExtraFunctions::glGetTexLevelParameterfv(GLenum target, GLint level, GLenum pname, GLfloat* params)
1751 {
1752 Q_D(QOpenGLExtraFunctions);
1753 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1754 d->f.GetTexLevelParameterfv(target, level, pname, params);
1755 Q_OPENGL_FUNCTIONS_DEBUG
1756 }
1757
1758 inline void QOpenGLExtraFunctions::glGetTexLevelParameteriv(GLenum target, GLint level, GLenum pname, GLint* params)
1759 {
1760 Q_D(QOpenGLExtraFunctions);
1761 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1762 d->f.GetTexLevelParameteriv(target, level, pname, params);
1763 Q_OPENGL_FUNCTIONS_DEBUG
1764 }
1765
1766 inline GLboolean QOpenGLExtraFunctions::glIsProgramPipeline(GLuint pipeline)
1767 {
1768 Q_D(QOpenGLExtraFunctions);
1769 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1770 GLboolean result = d->f.IsProgramPipeline(pipeline);
1771 Q_OPENGL_FUNCTIONS_DEBUG
1772 return result;
1773 }
1774
1775 inline void QOpenGLExtraFunctions::glMemoryBarrier(GLbitfield barriers)
1776 {
1777 Q_D(QOpenGLExtraFunctions);
1778 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1779 d->f.MemoryBarrier(barriers);
1780 Q_OPENGL_FUNCTIONS_DEBUG
1781 }
1782
1783 inline void QOpenGLExtraFunctions::glMemoryBarrierByRegion(GLbitfield barriers)
1784 {
1785 Q_D(QOpenGLExtraFunctions);
1786 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1787 d->f.MemoryBarrierByRegion(barriers);
1788 Q_OPENGL_FUNCTIONS_DEBUG
1789 }
1790
1791 inline void QOpenGLExtraFunctions::glProgramUniform1f(GLuint program, GLint location, GLfloat v0)
1792 {
1793 Q_D(QOpenGLExtraFunctions);
1794 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1795 d->f.ProgramUniform1f(program, location, v0);
1796 Q_OPENGL_FUNCTIONS_DEBUG
1797 }
1798
1799 inline void QOpenGLExtraFunctions::glProgramUniform1fv(GLuint program, GLint location, GLsizei count, const GLfloat * value)
1800 {
1801 Q_D(QOpenGLExtraFunctions);
1802 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1803 d->f.ProgramUniform1fv(program, location, count, value);
1804 Q_OPENGL_FUNCTIONS_DEBUG
1805 }
1806
1807 inline void QOpenGLExtraFunctions::glProgramUniform1i(GLuint program, GLint location, GLint v0)
1808 {
1809 Q_D(QOpenGLExtraFunctions);
1810 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1811 d->f.ProgramUniform1i(program, location, v0);
1812 Q_OPENGL_FUNCTIONS_DEBUG
1813 }
1814
1815 inline void QOpenGLExtraFunctions::glProgramUniform1iv(GLuint program, GLint location, GLsizei count, const GLint * value)
1816 {
1817 Q_D(QOpenGLExtraFunctions);
1818 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1819 d->f.ProgramUniform1iv(program, location, count, value);
1820 Q_OPENGL_FUNCTIONS_DEBUG
1821 }
1822
1823 inline void QOpenGLExtraFunctions::glProgramUniform1ui(GLuint program, GLint location, GLuint v0)
1824 {
1825 Q_D(QOpenGLExtraFunctions);
1826 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1827 d->f.ProgramUniform1ui(program, location, v0);
1828 Q_OPENGL_FUNCTIONS_DEBUG
1829 }
1830
1831 inline void QOpenGLExtraFunctions::glProgramUniform1uiv(GLuint program, GLint location, GLsizei count, const GLuint * value)
1832 {
1833 Q_D(QOpenGLExtraFunctions);
1834 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1835 d->f.ProgramUniform1uiv(program, location, count, value);
1836 Q_OPENGL_FUNCTIONS_DEBUG
1837 }
1838
1839 inline void QOpenGLExtraFunctions::glProgramUniform2f(GLuint program, GLint location, GLfloat v0, GLfloat v1)
1840 {
1841 Q_D(QOpenGLExtraFunctions);
1842 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1843 d->f.ProgramUniform2f(program, location, v0, v1);
1844 Q_OPENGL_FUNCTIONS_DEBUG
1845 }
1846
1847 inline void QOpenGLExtraFunctions::glProgramUniform2fv(GLuint program, GLint location, GLsizei count, const GLfloat * value)
1848 {
1849 Q_D(QOpenGLExtraFunctions);
1850 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1851 d->f.ProgramUniform2fv(program, location, count, value);
1852 Q_OPENGL_FUNCTIONS_DEBUG
1853 }
1854
1855 inline void QOpenGLExtraFunctions::glProgramUniform2i(GLuint program, GLint location, GLint v0, GLint v1)
1856 {
1857 Q_D(QOpenGLExtraFunctions);
1858 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1859 d->f.ProgramUniform2i(program, location, v0, v1);
1860 Q_OPENGL_FUNCTIONS_DEBUG
1861 }
1862
1863 inline void QOpenGLExtraFunctions::glProgramUniform2iv(GLuint program, GLint location, GLsizei count, const GLint * value)
1864 {
1865 Q_D(QOpenGLExtraFunctions);
1866 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1867 d->f.ProgramUniform2iv(program, location, count, value);
1868 Q_OPENGL_FUNCTIONS_DEBUG
1869 }
1870
1871 inline void QOpenGLExtraFunctions::glProgramUniform2ui(GLuint program, GLint location, GLuint v0, GLuint v1)
1872 {
1873 Q_D(QOpenGLExtraFunctions);
1874 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1875 d->f.ProgramUniform2ui(program, location, v0, v1);
1876 Q_OPENGL_FUNCTIONS_DEBUG
1877 }
1878
1879 inline void QOpenGLExtraFunctions::glProgramUniform2uiv(GLuint program, GLint location, GLsizei count, const GLuint * value)
1880 {
1881 Q_D(QOpenGLExtraFunctions);
1882 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1883 d->f.ProgramUniform2uiv(program, location, count, value);
1884 Q_OPENGL_FUNCTIONS_DEBUG
1885 }
1886
1887 inline void QOpenGLExtraFunctions::glProgramUniform3f(GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2)
1888 {
1889 Q_D(QOpenGLExtraFunctions);
1890 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1891 d->f.ProgramUniform3f(program, location, v0, v1, v2);
1892 Q_OPENGL_FUNCTIONS_DEBUG
1893 }
1894
1895 inline void QOpenGLExtraFunctions::glProgramUniform3fv(GLuint program, GLint location, GLsizei count, const GLfloat * value)
1896 {
1897 Q_D(QOpenGLExtraFunctions);
1898 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1899 d->f.ProgramUniform3fv(program, location, count, value);
1900 Q_OPENGL_FUNCTIONS_DEBUG
1901 }
1902
1903 inline void QOpenGLExtraFunctions::glProgramUniform3i(GLuint program, GLint location, GLint v0, GLint v1, GLint v2)
1904 {
1905 Q_D(QOpenGLExtraFunctions);
1906 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1907 d->f.ProgramUniform3i(program, location, v0, v1, v2);
1908 Q_OPENGL_FUNCTIONS_DEBUG
1909 }
1910
1911 inline void QOpenGLExtraFunctions::glProgramUniform3iv(GLuint program, GLint location, GLsizei count, const GLint * value)
1912 {
1913 Q_D(QOpenGLExtraFunctions);
1914 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1915 d->f.ProgramUniform3iv(program, location, count, value);
1916 Q_OPENGL_FUNCTIONS_DEBUG
1917 }
1918
1919 inline void QOpenGLExtraFunctions::glProgramUniform3ui(GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2)
1920 {
1921 Q_D(QOpenGLExtraFunctions);
1922 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1923 d->f.ProgramUniform3ui(program, location, v0, v1, v2);
1924 Q_OPENGL_FUNCTIONS_DEBUG
1925 }
1926
1927 inline void QOpenGLExtraFunctions::glProgramUniform3uiv(GLuint program, GLint location, GLsizei count, const GLuint * value)
1928 {
1929 Q_D(QOpenGLExtraFunctions);
1930 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1931 d->f.ProgramUniform3uiv(program, location, count, value);
1932 Q_OPENGL_FUNCTIONS_DEBUG
1933 }
1934
1935 inline void QOpenGLExtraFunctions::glProgramUniform4f(GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3)
1936 {
1937 Q_D(QOpenGLExtraFunctions);
1938 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1939 d->f.ProgramUniform4f(program, location, v0, v1, v2, v3);
1940 Q_OPENGL_FUNCTIONS_DEBUG
1941 }
1942
1943 inline void QOpenGLExtraFunctions::glProgramUniform4fv(GLuint program, GLint location, GLsizei count, const GLfloat * value)
1944 {
1945 Q_D(QOpenGLExtraFunctions);
1946 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1947 d->f.ProgramUniform4fv(program, location, count, value);
1948 Q_OPENGL_FUNCTIONS_DEBUG
1949 }
1950
1951 inline void QOpenGLExtraFunctions::glProgramUniform4i(GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3)
1952 {
1953 Q_D(QOpenGLExtraFunctions);
1954 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1955 d->f.ProgramUniform4i(program, location, v0, v1, v2, v3);
1956 Q_OPENGL_FUNCTIONS_DEBUG
1957 }
1958
1959 inline void QOpenGLExtraFunctions::glProgramUniform4iv(GLuint program, GLint location, GLsizei count, const GLint * value)
1960 {
1961 Q_D(QOpenGLExtraFunctions);
1962 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1963 d->f.ProgramUniform4iv(program, location, count, value);
1964 Q_OPENGL_FUNCTIONS_DEBUG
1965 }
1966
1967 inline void QOpenGLExtraFunctions::glProgramUniform4ui(GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3)
1968 {
1969 Q_D(QOpenGLExtraFunctions);
1970 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1971 d->f.ProgramUniform4ui(program, location, v0, v1, v2, v3);
1972 Q_OPENGL_FUNCTIONS_DEBUG
1973 }
1974
1975 inline void QOpenGLExtraFunctions::glProgramUniform4uiv(GLuint program, GLint location, GLsizei count, const GLuint * value)
1976 {
1977 Q_D(QOpenGLExtraFunctions);
1978 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1979 d->f.ProgramUniform4uiv(program, location, count, value);
1980 Q_OPENGL_FUNCTIONS_DEBUG
1981 }
1982
1983 inline void QOpenGLExtraFunctions::glProgramUniformMatrix2fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value)
1984 {
1985 Q_D(QOpenGLExtraFunctions);
1986 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1987 d->f.ProgramUniformMatrix2fv(program, location, count, transpose, value);
1988 Q_OPENGL_FUNCTIONS_DEBUG
1989 }
1990
1991 inline void QOpenGLExtraFunctions::glProgramUniformMatrix2x3fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value)
1992 {
1993 Q_D(QOpenGLExtraFunctions);
1994 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1995 d->f.ProgramUniformMatrix2x3fv(program, location, count, transpose, value);
1996 Q_OPENGL_FUNCTIONS_DEBUG
1997 }
1998
1999 inline void QOpenGLExtraFunctions::glProgramUniformMatrix2x4fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value)
2000 {
2001 Q_D(QOpenGLExtraFunctions);
2002 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2003 d->f.ProgramUniformMatrix2x4fv(program, location, count, transpose, value);
2004 Q_OPENGL_FUNCTIONS_DEBUG
2005 }
2006
2007 inline void QOpenGLExtraFunctions::glProgramUniformMatrix3fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value)
2008 {
2009 Q_D(QOpenGLExtraFunctions);
2010 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2011 d->f.ProgramUniformMatrix3fv(program, location, count, transpose, value);
2012 Q_OPENGL_FUNCTIONS_DEBUG
2013 }
2014
2015 inline void QOpenGLExtraFunctions::glProgramUniformMatrix3x2fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value)
2016 {
2017 Q_D(QOpenGLExtraFunctions);
2018 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2019 d->f.ProgramUniformMatrix3x2fv(program, location, count, transpose, value);
2020 Q_OPENGL_FUNCTIONS_DEBUG
2021 }
2022
2023 inline void QOpenGLExtraFunctions::glProgramUniformMatrix3x4fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value)
2024 {
2025 Q_D(QOpenGLExtraFunctions);
2026 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2027 d->f.ProgramUniformMatrix3x4fv(program, location, count, transpose, value);
2028 Q_OPENGL_FUNCTIONS_DEBUG
2029 }
2030
2031 inline void QOpenGLExtraFunctions::glProgramUniformMatrix4fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value)
2032 {
2033 Q_D(QOpenGLExtraFunctions);
2034 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2035 d->f.ProgramUniformMatrix4fv(program, location, count, transpose, value);
2036 Q_OPENGL_FUNCTIONS_DEBUG
2037 }
2038
2039 inline void QOpenGLExtraFunctions::glProgramUniformMatrix4x2fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value)
2040 {
2041 Q_D(QOpenGLExtraFunctions);
2042 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2043 d->f.ProgramUniformMatrix4x2fv(program, location, count, transpose, value);
2044 Q_OPENGL_FUNCTIONS_DEBUG
2045 }
2046
2047 inline void QOpenGLExtraFunctions::glProgramUniformMatrix4x3fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value)
2048 {
2049 Q_D(QOpenGLExtraFunctions);
2050 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2051 d->f.ProgramUniformMatrix4x3fv(program, location, count, transpose, value);
2052 Q_OPENGL_FUNCTIONS_DEBUG
2053 }
2054
2055 inline void QOpenGLExtraFunctions::glSampleMaski(GLuint maskNumber, GLbitfield mask)
2056 {
2057 Q_D(QOpenGLExtraFunctions);
2058 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2059 d->f.SampleMaski(maskNumber, mask);
2060 Q_OPENGL_FUNCTIONS_DEBUG
2061 }
2062
2063 inline void QOpenGLExtraFunctions::glTexStorage2DMultisample(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations)
2064 {
2065 Q_D(QOpenGLExtraFunctions);
2066 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2067 d->f.TexStorage2DMultisample(target, samples, internalformat, width, height, fixedsamplelocations);
2068 Q_OPENGL_FUNCTIONS_DEBUG
2069 }
2070
2071 inline void QOpenGLExtraFunctions::glUseProgramStages(GLuint pipeline, GLbitfield stages, GLuint program)
2072 {
2073 Q_D(QOpenGLExtraFunctions);
2074 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2075 d->f.UseProgramStages(pipeline, stages, program);
2076 Q_OPENGL_FUNCTIONS_DEBUG
2077 }
2078
2079 inline void QOpenGLExtraFunctions::glValidateProgramPipeline(GLuint pipeline)
2080 {
2081 Q_D(QOpenGLExtraFunctions);
2082 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2083 d->f.ValidateProgramPipeline(pipeline);
2084 Q_OPENGL_FUNCTIONS_DEBUG
2085 }
2086
2087 inline void QOpenGLExtraFunctions::glVertexAttribBinding(GLuint attribindex, GLuint bindingindex)
2088 {
2089 Q_D(QOpenGLExtraFunctions);
2090 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2091 d->f.VertexAttribBinding(attribindex, bindingindex);
2092 Q_OPENGL_FUNCTIONS_DEBUG
2093 }
2094
2095 inline void QOpenGLExtraFunctions::glVertexAttribFormat(GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset)
2096 {
2097 Q_D(QOpenGLExtraFunctions);
2098 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2099 d->f.VertexAttribFormat(attribindex, size, type, normalized, relativeoffset);
2100 Q_OPENGL_FUNCTIONS_DEBUG
2101 }
2102
2103 inline void QOpenGLExtraFunctions::glVertexAttribIFormat(GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset)
2104 {
2105 Q_D(QOpenGLExtraFunctions);
2106 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2107 d->f.VertexAttribIFormat(attribindex, size, type, relativeoffset);
2108 Q_OPENGL_FUNCTIONS_DEBUG
2109 }
2110
2111 inline void QOpenGLExtraFunctions::glVertexBindingDivisor(GLuint bindingindex, GLuint divisor)
2112 {
2113 Q_D(QOpenGLExtraFunctions);
2114 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2115 d->f.VertexBindingDivisor(bindingindex, divisor);
2116 Q_OPENGL_FUNCTIONS_DEBUG
2117 }
2118
2119
2120
2121 inline void QOpenGLExtraFunctions::glBlendBarrier()
2122 {
2123 Q_D(QOpenGLExtraFunctions);
2124 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2125 d->f.BlendBarrier();
2126 Q_OPENGL_FUNCTIONS_DEBUG
2127 }
2128
2129 inline void QOpenGLExtraFunctions::glBlendEquationSeparatei(GLuint buf, GLenum modeRGB, GLenum modeAlpha)
2130 {
2131 Q_D(QOpenGLExtraFunctions);
2132 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2133 d->f.BlendEquationSeparatei(buf, modeRGB, modeAlpha);
2134 Q_OPENGL_FUNCTIONS_DEBUG
2135 }
2136
2137 inline void QOpenGLExtraFunctions::glBlendEquationi(GLuint buf, GLenum mode)
2138 {
2139 Q_D(QOpenGLExtraFunctions);
2140 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2141 d->f.BlendEquationi(buf, mode);
2142 Q_OPENGL_FUNCTIONS_DEBUG
2143 }
2144
2145 inline void QOpenGLExtraFunctions::glBlendFuncSeparatei(GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha)
2146 {
2147 Q_D(QOpenGLExtraFunctions);
2148 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2149 d->f.BlendFuncSeparatei(buf, srcRGB, dstRGB, srcAlpha, dstAlpha);
2150 Q_OPENGL_FUNCTIONS_DEBUG
2151 }
2152
2153 inline void QOpenGLExtraFunctions::glBlendFunci(GLuint buf, GLenum src, GLenum dst)
2154 {
2155 Q_D(QOpenGLExtraFunctions);
2156 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2157 d->f.BlendFunci(buf, src, dst);
2158 Q_OPENGL_FUNCTIONS_DEBUG
2159 }
2160
2161 inline void QOpenGLExtraFunctions::glColorMaski(GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a)
2162 {
2163 Q_D(QOpenGLExtraFunctions);
2164 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2165 d->f.ColorMaski(index, r, g, b, a);
2166 Q_OPENGL_FUNCTIONS_DEBUG
2167 }
2168
2169 inline void QOpenGLExtraFunctions::glCopyImageSubData(GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei srcWidth, GLsizei srcHeight, GLsizei srcDepth)
2170 {
2171 Q_D(QOpenGLExtraFunctions);
2172 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2173 d->f.CopyImageSubData(srcName, srcTarget, srcLevel, srcX, srcY, srcZ, dstName, dstTarget, dstLevel, dstX, dstY, dstZ, srcWidth, srcHeight, srcDepth);
2174 Q_OPENGL_FUNCTIONS_DEBUG
2175 }
2176
2177 inline void QOpenGLExtraFunctions::glDebugMessageCallback(GLDEBUGPROC callback, const void * userParam)
2178 {
2179 Q_D(QOpenGLExtraFunctions);
2180 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2181 d->f.DebugMessageCallback(callback, userParam);
2182 Q_OPENGL_FUNCTIONS_DEBUG
2183 }
2184
2185 inline void QOpenGLExtraFunctions::glDebugMessageControl(GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint * ids, GLboolean enabled)
2186 {
2187 Q_D(QOpenGLExtraFunctions);
2188 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2189 d->f.DebugMessageControl(source, type, severity, count, ids, enabled);
2190 Q_OPENGL_FUNCTIONS_DEBUG
2191 }
2192
2193 inline void QOpenGLExtraFunctions::glDebugMessageInsert(GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar * buf)
2194 {
2195 Q_D(QOpenGLExtraFunctions);
2196 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2197 d->f.DebugMessageInsert(source, type, id, severity, length, buf);
2198 Q_OPENGL_FUNCTIONS_DEBUG
2199 }
2200
2201 inline void QOpenGLExtraFunctions::glDisablei(GLenum target, GLuint index)
2202 {
2203 Q_D(QOpenGLExtraFunctions);
2204 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2205 d->f.Disablei(target, index);
2206 Q_OPENGL_FUNCTIONS_DEBUG
2207 }
2208
2209 inline void QOpenGLExtraFunctions::glDrawElementsBaseVertex(GLenum mode, GLsizei count, GLenum type, const void * indices, GLint basevertex)
2210 {
2211 Q_D(QOpenGLExtraFunctions);
2212 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2213 d->f.DrawElementsBaseVertex(mode, count, type, indices, basevertex);
2214 Q_OPENGL_FUNCTIONS_DEBUG
2215 }
2216
2217 inline void QOpenGLExtraFunctions::glDrawElementsInstancedBaseVertex(GLenum mode, GLsizei count, GLenum type, const void * indices, GLsizei instancecount, GLint basevertex)
2218 {
2219 Q_D(QOpenGLExtraFunctions);
2220 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2221 d->f.DrawElementsInstancedBaseVertex(mode, count, type, indices, instancecount, basevertex);
2222 Q_OPENGL_FUNCTIONS_DEBUG
2223 }
2224
2225 inline void QOpenGLExtraFunctions::glDrawRangeElementsBaseVertex(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void * indices, GLint basevertex)
2226 {
2227 Q_D(QOpenGLExtraFunctions);
2228 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2229 d->f.DrawRangeElementsBaseVertex(mode, start, end, count, type, indices, basevertex);
2230 Q_OPENGL_FUNCTIONS_DEBUG
2231 }
2232
2233 inline void QOpenGLExtraFunctions::glEnablei(GLenum target, GLuint index)
2234 {
2235 Q_D(QOpenGLExtraFunctions);
2236 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2237 d->f.Enablei(target, index);
2238 Q_OPENGL_FUNCTIONS_DEBUG
2239 }
2240
2241 inline void QOpenGLExtraFunctions::glFramebufferTexture(GLenum target, GLenum attachment, GLuint texture, GLint level)
2242 {
2243 Q_D(QOpenGLExtraFunctions);
2244 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2245 d->f.FramebufferTexture(target, attachment, texture, level);
2246 Q_OPENGL_FUNCTIONS_DEBUG
2247 }
2248
2249 inline GLuint QOpenGLExtraFunctions::glGetDebugMessageLog(GLuint count, GLsizei bufSize, GLenum* sources, GLenum* types, GLuint* ids, GLenum* severities, GLsizei* lengths, GLchar* messageLog)
2250 {
2251 Q_D(QOpenGLExtraFunctions);
2252 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2253 GLuint result = d->f.GetDebugMessageLog(count, bufSize, sources, types, ids, severities, lengths, messageLog);
2254 Q_OPENGL_FUNCTIONS_DEBUG
2255 return result;
2256 }
2257
2258 inline GLenum QOpenGLExtraFunctions::glGetGraphicsResetStatus()
2259 {
2260 Q_D(QOpenGLExtraFunctions);
2261 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2262 GLenum result = d->f.GetGraphicsResetStatus();
2263 Q_OPENGL_FUNCTIONS_DEBUG
2264 return result;
2265 }
2266
2267 inline void QOpenGLExtraFunctions::glGetObjectLabel(GLenum identifier, GLuint name, GLsizei bufSize, GLsizei* length, GLchar* label)
2268 {
2269 Q_D(QOpenGLExtraFunctions);
2270 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2271 d->f.GetObjectLabel(identifier, name, bufSize, length, label);
2272 Q_OPENGL_FUNCTIONS_DEBUG
2273 }
2274
2275 inline void QOpenGLExtraFunctions::glGetObjectPtrLabel(const void * ptr, GLsizei bufSize, GLsizei* length, GLchar* label)
2276 {
2277 Q_D(QOpenGLExtraFunctions);
2278 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2279 d->f.GetObjectPtrLabel(ptr, bufSize, length, label);
2280 Q_OPENGL_FUNCTIONS_DEBUG
2281 }
2282
2283 inline void QOpenGLExtraFunctions::glGetPointerv(GLenum pname, void ** params)
2284 {
2285 Q_D(QOpenGLExtraFunctions);
2286 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2287 d->f.GetPointerv(pname, params);
2288 Q_OPENGL_FUNCTIONS_DEBUG
2289 }
2290
2291 inline void QOpenGLExtraFunctions::glGetSamplerParameterIiv(GLuint sampler, GLenum pname, GLint* params)
2292 {
2293 Q_D(QOpenGLExtraFunctions);
2294 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2295 d->f.GetSamplerParameterIiv(sampler, pname, params);
2296 Q_OPENGL_FUNCTIONS_DEBUG
2297 }
2298
2299 inline void QOpenGLExtraFunctions::glGetSamplerParameterIuiv(GLuint sampler, GLenum pname, GLuint* params)
2300 {
2301 Q_D(QOpenGLExtraFunctions);
2302 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2303 d->f.GetSamplerParameterIuiv(sampler, pname, params);
2304 Q_OPENGL_FUNCTIONS_DEBUG
2305 }
2306
2307 inline void QOpenGLExtraFunctions::glGetTexParameterIiv(GLenum target, GLenum pname, GLint* params)
2308 {
2309 Q_D(QOpenGLExtraFunctions);
2310 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2311 d->f.GetTexParameterIiv(target, pname, params);
2312 Q_OPENGL_FUNCTIONS_DEBUG
2313 }
2314
2315 inline void QOpenGLExtraFunctions::glGetTexParameterIuiv(GLenum target, GLenum pname, GLuint* params)
2316 {
2317 Q_D(QOpenGLExtraFunctions);
2318 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2319 d->f.GetTexParameterIuiv(target, pname, params);
2320 Q_OPENGL_FUNCTIONS_DEBUG
2321 }
2322
2323 inline void QOpenGLExtraFunctions::glGetnUniformfv(GLuint program, GLint location, GLsizei bufSize, GLfloat* params)
2324 {
2325 Q_D(QOpenGLExtraFunctions);
2326 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2327 d->f.GetnUniformfv(program, location, bufSize, params);
2328 Q_OPENGL_FUNCTIONS_DEBUG
2329 }
2330
2331 inline void QOpenGLExtraFunctions::glGetnUniformiv(GLuint program, GLint location, GLsizei bufSize, GLint* params)
2332 {
2333 Q_D(QOpenGLExtraFunctions);
2334 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2335 d->f.GetnUniformiv(program, location, bufSize, params);
2336 Q_OPENGL_FUNCTIONS_DEBUG
2337 }
2338
2339 inline void QOpenGLExtraFunctions::glGetnUniformuiv(GLuint program, GLint location, GLsizei bufSize, GLuint* params)
2340 {
2341 Q_D(QOpenGLExtraFunctions);
2342 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2343 d->f.GetnUniformuiv(program, location, bufSize, params);
2344 Q_OPENGL_FUNCTIONS_DEBUG
2345 }
2346
2347 inline GLboolean QOpenGLExtraFunctions::glIsEnabledi(GLenum target, GLuint index)
2348 {
2349 Q_D(QOpenGLExtraFunctions);
2350 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2351 GLboolean result = d->f.IsEnabledi(target, index);
2352 Q_OPENGL_FUNCTIONS_DEBUG
2353 return result;
2354 }
2355
2356 inline void QOpenGLExtraFunctions::glMinSampleShading(GLfloat value)
2357 {
2358 Q_D(QOpenGLExtraFunctions);
2359 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2360 d->f.MinSampleShading(value);
2361 Q_OPENGL_FUNCTIONS_DEBUG
2362 }
2363
2364 inline void QOpenGLExtraFunctions::glObjectLabel(GLenum identifier, GLuint name, GLsizei length, const GLchar * label)
2365 {
2366 Q_D(QOpenGLExtraFunctions);
2367 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2368 d->f.ObjectLabel(identifier, name, length, label);
2369 Q_OPENGL_FUNCTIONS_DEBUG
2370 }
2371
2372 inline void QOpenGLExtraFunctions::glObjectPtrLabel(const void * ptr, GLsizei length, const GLchar * label)
2373 {
2374 Q_D(QOpenGLExtraFunctions);
2375 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2376 d->f.ObjectPtrLabel(ptr, length, label);
2377 Q_OPENGL_FUNCTIONS_DEBUG
2378 }
2379
2380 inline void QOpenGLExtraFunctions::glPatchParameteri(GLenum pname, GLint value)
2381 {
2382 Q_D(QOpenGLExtraFunctions);
2383 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2384 d->f.PatchParameteri(pname, value);
2385 Q_OPENGL_FUNCTIONS_DEBUG
2386 }
2387
2388 inline void QOpenGLExtraFunctions::glPopDebugGroup()
2389 {
2390 Q_D(QOpenGLExtraFunctions);
2391 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2392 d->f.PopDebugGroup();
2393 Q_OPENGL_FUNCTIONS_DEBUG
2394 }
2395
2396 inline void QOpenGLExtraFunctions::glPrimitiveBoundingBox(GLfloat minX, GLfloat minY, GLfloat minZ, GLfloat minW, GLfloat maxX, GLfloat maxY, GLfloat maxZ, GLfloat maxW)
2397 {
2398 Q_D(QOpenGLExtraFunctions);
2399 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2400 d->f.PrimitiveBoundingBox(minX, minY, minZ, minW, maxX, maxY, maxZ, maxW);
2401 Q_OPENGL_FUNCTIONS_DEBUG
2402 }
2403
2404 inline void QOpenGLExtraFunctions::glPushDebugGroup(GLenum source, GLuint id, GLsizei length, const GLchar * message)
2405 {
2406 Q_D(QOpenGLExtraFunctions);
2407 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2408 d->f.PushDebugGroup(source, id, length, message);
2409 Q_OPENGL_FUNCTIONS_DEBUG
2410 }
2411
2412 inline void QOpenGLExtraFunctions::glReadnPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void * data)
2413 {
2414 Q_D(QOpenGLExtraFunctions);
2415 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2416 d->f.ReadnPixels(x, y, width, height, format, type, bufSize, data);
2417 Q_OPENGL_FUNCTIONS_DEBUG
2418 }
2419
2420 inline void QOpenGLExtraFunctions::glSamplerParameterIiv(GLuint sampler, GLenum pname, const GLint * param)
2421 {
2422 Q_D(QOpenGLExtraFunctions);
2423 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2424 d->f.SamplerParameterIiv(sampler, pname, param);
2425 Q_OPENGL_FUNCTIONS_DEBUG
2426 }
2427
2428 inline void QOpenGLExtraFunctions::glSamplerParameterIuiv(GLuint sampler, GLenum pname, const GLuint * param)
2429 {
2430 Q_D(QOpenGLExtraFunctions);
2431 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2432 d->f.SamplerParameterIuiv(sampler, pname, param);
2433 Q_OPENGL_FUNCTIONS_DEBUG
2434 }
2435
2436 inline void QOpenGLExtraFunctions::glTexBuffer(GLenum target, GLenum internalformat, GLuint buffer)
2437 {
2438 Q_D(QOpenGLExtraFunctions);
2439 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2440 d->f.TexBuffer(target, internalformat, buffer);
2441 Q_OPENGL_FUNCTIONS_DEBUG
2442 }
2443
2444 inline void QOpenGLExtraFunctions::glTexBufferRange(GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size)
2445 {
2446 Q_D(QOpenGLExtraFunctions);
2447 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2448 d->f.TexBufferRange(target, internalformat, buffer, offset, size);
2449 Q_OPENGL_FUNCTIONS_DEBUG
2450 }
2451
2452 inline void QOpenGLExtraFunctions::glTexParameterIiv(GLenum target, GLenum pname, const GLint * params)
2453 {
2454 Q_D(QOpenGLExtraFunctions);
2455 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2456 d->f.TexParameterIiv(target, pname, params);
2457 Q_OPENGL_FUNCTIONS_DEBUG
2458 }
2459
2460 inline void QOpenGLExtraFunctions::glTexParameterIuiv(GLenum target, GLenum pname, const GLuint * params)
2461 {
2462 Q_D(QOpenGLExtraFunctions);
2463 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2464 d->f.TexParameterIuiv(target, pname, params);
2465 Q_OPENGL_FUNCTIONS_DEBUG
2466 }
2467
2468 inline void QOpenGLExtraFunctions::glTexStorage3DMultisample(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations)
2469 {
2470 Q_D(QOpenGLExtraFunctions);
2471 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2472 d->f.TexStorage3DMultisample(target, samples, internalformat, width, height, depth, fixedsamplelocations);
2473 Q_OPENGL_FUNCTIONS_DEBUG
2474 }
2475
2476 QT_END_NAMESPACE
2477
2478 #undef QT_OPENGL_DECLARE_FUNCTIONS
2479 #undef QT_OPENGL_COUNT_FUNCTIONS
2480 #undef QT_OPENGL_DECLARE
2481
2482 #ifdef Q_OS_WIN
2483 #pragma pop_macro("MemoryBarrier")
2484 #endif
2485
2486 #endif
2487
2488 #endif