Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Loading...
Searching...
No Matches
qopenglextrafunctions.h
Go to the documentation of this file.
1// Copyright (C) 2016 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
3
4#ifndef QOPENGLEXTRAFUNCTIONS_H
5#define QOPENGLEXTRAFUNCTIONS_H
6
7#include <QtGui/qtguiglobal.h>
8
9#ifndef QT_NO_OPENGL
10
11#include <QtGui/qopenglfunctions.h>
12
13// MemoryBarrier is a macro on some architectures on Windows
14#ifdef Q_OS_WIN
15#pragma push_macro("MemoryBarrier")
16#undef MemoryBarrier
17#endif
18
19// GLES build without having included gl32.h -> GLDEBUGPROC is still need for the protos, define it here
20#if QT_CONFIG(opengles2) && !QT_CONFIG(opengles32)
22#endif
23
25
27
28#undef glReadBuffer
29#undef glDrawRangeElements
30#undef glTexImage3D
31#undef glTexSubImage3D
32#undef glCopyTexSubImage3D
33#undef glCompressedTexImage3D
34#undef glCompressedTexSubImage3D
35#undef glGenQueries
36#undef glDeleteQueries
37#undef glIsQuery
38#undef glBeginQuery
39#undef glEndQuery
40#undef glGetQueryiv
41#undef glGetQueryObjectuiv
42#undef glUnmapBuffer
43#undef glGetBufferPointerv
44#undef glDrawBuffers
45#undef glUniformMatrix2x3fv
46#undef glUniformMatrix3x2fv
47#undef glUniformMatrix2x4fv
48#undef glUniformMatrix4x2fv
49#undef glUniformMatrix3x4fv
50#undef glUniformMatrix4x3fv
51#undef glBlitFramebuffer
52#undef glRenderbufferStorageMultisample
53#undef glFramebufferTextureLayer
54#undef glMapBufferRange
55#undef glFlushMappedBufferRange
56#undef glBindVertexArray
57#undef glDeleteVertexArrays
58#undef glGenVertexArrays
59#undef glIsVertexArray
60#undef glGetIntegeri_v
61#undef glBeginTransformFeedback
62#undef glEndTransformFeedback
63#undef glBindBufferRange
64#undef glBindBufferBase
65#undef glTransformFeedbackVaryings
66#undef glGetTransformFeedbackVarying
67#undef glVertexAttribIPointer
68#undef glGetVertexAttribIiv
69#undef glGetVertexAttribIuiv
70#undef glVertexAttribI4i
71#undef glVertexAttribI4ui
72#undef glVertexAttribI4iv
73#undef glVertexAttribI4uiv
74#undef glGetUniformuiv
75#undef glGetFragDataLocation
76#undef glUniform1ui
77#undef glUniform2ui
78#undef glUniform3ui
79#undef glUniform4ui
80#undef glUniform1uiv
81#undef glUniform2uiv
82#undef glUniform3uiv
83#undef glUniform4uiv
84#undef glClearBufferiv
85#undef glClearBufferuiv
86#undef glClearBufferfv
87#undef glClearBufferfi
88#undef glGetStringi
89#undef glCopyBufferSubData
90#undef glGetUniformIndices
91#undef glGetActiveUniformsiv
92#undef glGetUniformBlockIndex
93#undef glGetActiveUniformBlockiv
94#undef glGetActiveUniformBlockName
95#undef glUniformBlockBinding
96#undef glDrawArraysInstanced
97#undef glDrawElementsInstanced
98#undef glFenceSync
99#undef glIsSync
100#undef glDeleteSync
101#undef glClientWaitSync
102#undef glWaitSync
103#undef glGetInteger64v
104#undef glGetSynciv
105#undef glGetInteger64i_v
106#undef glGetBufferParameteri64v
107#undef glGenSamplers
108#undef glDeleteSamplers
109#undef glIsSampler
110#undef glBindSampler
111#undef glSamplerParameteri
112#undef glSamplerParameteriv
113#undef glSamplerParameterf
114#undef glSamplerParameterfv
115#undef glGetSamplerParameteriv
116#undef glGetSamplerParameterfv
117#undef glVertexAttribDivisor
118#undef glBindTransformFeedback
119#undef glDeleteTransformFeedbacks
120#undef glGenTransformFeedbacks
121#undef glIsTransformFeedback
122#undef glPauseTransformFeedback
123#undef glResumeTransformFeedback
124#undef glGetProgramBinary
125#undef glProgramBinary
126#undef glProgramParameteri
127#undef glInvalidateFramebuffer
128#undef glInvalidateSubFramebuffer
129#undef glTexStorage2D
130#undef glTexStorage3D
131#undef glGetInternalformativ
132
133#undef glDispatchCompute
134#undef glDispatchComputeIndirect
135#undef glDrawArraysIndirect
136#undef glDrawElementsIndirect
137#undef glFramebufferParameteri
138#undef glGetFramebufferParameteriv
139#undef glGetProgramInterfaceiv
140#undef glGetProgramResourceIndex
141#undef glGetProgramResourceName
142#undef glGetProgramResourceiv
143#undef glGetProgramResourceLocation
144#undef glUseProgramStages
145#undef glActiveShaderProgram
146#undef glCreateShaderProgramv
147#undef glBindProgramPipeline
148#undef glDeleteProgramPipelines
149#undef glGenProgramPipelines
150#undef glIsProgramPipeline
151#undef glGetProgramPipelineiv
152#undef glProgramUniform1i
153#undef glProgramUniform2i
154#undef glProgramUniform3i
155#undef glProgramUniform4i
156#undef glProgramUniform1ui
157#undef glProgramUniform2ui
158#undef glProgramUniform3ui
159#undef glProgramUniform4ui
160#undef glProgramUniform1f
161#undef glProgramUniform2f
162#undef glProgramUniform3f
163#undef glProgramUniform4f
164#undef glProgramUniform1iv
165#undef glProgramUniform2iv
166#undef glProgramUniform3iv
167#undef glProgramUniform4iv
168#undef glProgramUniform1uiv
169#undef glProgramUniform2uiv
170#undef glProgramUniform3uiv
171#undef glProgramUniform4uiv
172#undef glProgramUniform1fv
173#undef glProgramUniform2fv
174#undef glProgramUniform3fv
175#undef glProgramUniform4fv
176#undef glProgramUniformMatrix2fv
177#undef glProgramUniformMatrix3fv
178#undef glProgramUniformMatrix4fv
179#undef glProgramUniformMatrix2x3fv
180#undef glProgramUniformMatrix3x2fv
181#undef glProgramUniformMatrix2x4fv
182#undef glProgramUniformMatrix4x2fv
183#undef glProgramUniformMatrix3x4fv
184#undef glProgramUniformMatrix4x3fv
185#undef glValidateProgramPipeline
186#undef glGetProgramPipelineInfoLog
187#undef glBindImageTexture
188#undef glGetBooleani_v
189#undef glMemoryBarrier
190#undef glMemoryBarrierByRegion
191#undef glTexStorage2DMultisample
192#undef glGetMultisamplefv
193#undef glSampleMaski
194#undef glGetTexLevelParameteriv
195#undef glGetTexLevelParameterfv
196#undef glBindVertexBuffer
197#undef glVertexAttribFormat
198#undef glVertexAttribIFormat
199#undef glVertexAttribBinding
200#undef glVertexBindingDivisor
201
202#undef glBlendBarrier
203#undef glCopyImageSubData
204#undef glDebugMessageControl
205#undef glDebugMessageInsert
206#undef glDebugMessageCallback
207#undef glGetDebugMessageLog
208#undef glPushDebugGroup
209#undef glPopDebugGroup
210#undef glObjectLabel
211#undef glGetObjectLabel
212#undef glGetObjectPtrLabel
213#undef glGetPointerv
214#undef glEnablei
215#undef glDisablei
216#undef glBlendEquationi
217#undef glBlendEquationSeparatei
218#undef glBlendFunci
219#undef glBlendFuncSeparatei
220#undef glColorMaski
221#undef glIsEnabledi
222#undef glDrawElementsBaseVertex
223#undef glDrawRangeElementsBaseVertex
224#undef glDrawElementsInstancedBaseVertex
225#undef glFrameBufferTexture
226#undef glPrimitiveBoundingBox
227#undef glGetGraphicsResetStatus
228#undef glReadnPixels
229#undef glGetnUniformfv
230#undef glGetnUniformiv
231#undef glGetnUniformuiv
232#undef glMinSampleShading
233#undef glPatchParameteri
234#undef glTexParameterIiv
235#undef glTexParameterIuiv
236#undef glGetTexParameterIiv
237#undef glGetTexParameterIuiv
238#undef glSamplerParameterIiv
239#undef glSamplerParameterIuiv
240#undef glGetSamplerParameterIiv
241#undef glGetSamplerParameterIuiv
242#undef glTexBuffer
243#undef glTexBufferRange
244#undef glTexStorage3DMultisample
245
246class Q_GUI_EXPORT QOpenGLExtraFunctions : public QOpenGLFunctions
247{
248 Q_DECLARE_PRIVATE(QOpenGLExtraFunctions)
249
250public:
251 QOpenGLExtraFunctions();
252 QOpenGLExtraFunctions(QOpenGLContext *context);
253 ~QOpenGLExtraFunctions() {}
254
255 // GLES3
256 void glReadBuffer(GLenum mode);
257 void glDrawRangeElements(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices);
258 void glTexImage3D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels);
259 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);
260 void glCopyTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
261 void glCompressedTexImage3D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *data);
262 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);
263 void glGenQueries(GLsizei n, GLuint *ids);
264 void glDeleteQueries(GLsizei n, const GLuint *ids);
265 GLboolean glIsQuery(GLuint id);
266 void glBeginQuery(GLenum target, GLuint id);
267 void glEndQuery(GLenum target);
268 void glGetQueryiv(GLenum target, GLenum pname, GLint *params);
269 void glGetQueryObjectuiv(GLuint id, GLenum pname, GLuint *params);
270 GLboolean glUnmapBuffer(GLenum target);
271 void glGetBufferPointerv(GLenum target, GLenum pname, void **params);
272 void glDrawBuffers(GLsizei n, const GLenum *bufs);
273 void glUniformMatrix2x3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
274 void glUniformMatrix3x2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
275 void glUniformMatrix2x4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
276 void glUniformMatrix4x2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
277 void glUniformMatrix3x4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
278 void glUniformMatrix4x3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
279 void glBlitFramebuffer(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);
280 void glRenderbufferStorageMultisample(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
281 void glFramebufferTextureLayer(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer);
282 void *glMapBufferRange(GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access);
283 void glFlushMappedBufferRange(GLenum target, GLintptr offset, GLsizeiptr length);
284 void glBindVertexArray(GLuint array);
285 void glDeleteVertexArrays(GLsizei n, const GLuint *arrays);
286 void glGenVertexArrays(GLsizei n, GLuint *arrays);
287 GLboolean glIsVertexArray(GLuint array);
288 void glGetIntegeri_v(GLenum target, GLuint index, GLint *data);
289 void glBeginTransformFeedback(GLenum primitiveMode);
290 void glEndTransformFeedback(void);
291 void glBindBufferRange(GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size);
292 void glBindBufferBase(GLenum target, GLuint index, GLuint buffer);
293 void glTransformFeedbackVaryings(GLuint program, GLsizei count, const GLchar *const*varyings, GLenum bufferMode);
294 void glGetTransformFeedbackVarying(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name);
295 void glVertexAttribIPointer(GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer);
296 void glGetVertexAttribIiv(GLuint index, GLenum pname, GLint *params);
297 void glGetVertexAttribIuiv(GLuint index, GLenum pname, GLuint *params);
298 void glVertexAttribI4i(GLuint index, GLint x, GLint y, GLint z, GLint w);
299 void glVertexAttribI4ui(GLuint index, GLuint x, GLuint y, GLuint z, GLuint w);
300 void glVertexAttribI4iv(GLuint index, const GLint *v);
301 void glVertexAttribI4uiv(GLuint index, const GLuint *v);
302 void glGetUniformuiv(GLuint program, GLint location, GLuint *params);
303 GLint glGetFragDataLocation(GLuint program, const GLchar *name);
304 void glUniform1ui(GLint location, GLuint v0);
305 void glUniform2ui(GLint location, GLuint v0, GLuint v1);
306 void glUniform3ui(GLint location, GLuint v0, GLuint v1, GLuint v2);
307 void glUniform4ui(GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3);
308 void glUniform1uiv(GLint location, GLsizei count, const GLuint *value);
309 void glUniform2uiv(GLint location, GLsizei count, const GLuint *value);
310 void glUniform3uiv(GLint location, GLsizei count, const GLuint *value);
311 void glUniform4uiv(GLint location, GLsizei count, const GLuint *value);
312 void glClearBufferiv(GLenum buffer, GLint drawbuffer, const GLint *value);
313 void glClearBufferuiv(GLenum buffer, GLint drawbuffer, const GLuint *value);
314 void glClearBufferfv(GLenum buffer, GLint drawbuffer, const GLfloat *value);
315 void glClearBufferfi(GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil);
316 const GLubyte *glGetStringi(GLenum name, GLuint index);
317 void glCopyBufferSubData(GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size);
318 void glGetUniformIndices(GLuint program, GLsizei uniformCount, const GLchar *const*uniformNames, GLuint *uniformIndices);
319 void glGetActiveUniformsiv(GLuint program, GLsizei uniformCount, const GLuint *uniformIndices, GLenum pname, GLint *params);
320 GLuint glGetUniformBlockIndex(GLuint program, const GLchar *uniformBlockName);
321 void glGetActiveUniformBlockiv(GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint *params);
322 void glGetActiveUniformBlockName(GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformBlockName);
323 void glUniformBlockBinding(GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding);
324 void glDrawArraysInstanced(GLenum mode, GLint first, GLsizei count, GLsizei instancecount);
325 void glDrawElementsInstanced(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount);
326 GLsync glFenceSync(GLenum condition, GLbitfield flags);
327 GLboolean glIsSync(GLsync sync);
328 void glDeleteSync(GLsync sync);
329 GLenum glClientWaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout);
330 void glWaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout);
331 void glGetInteger64v(GLenum pname, GLint64 *data);
332 void glGetSynciv(GLsync sync, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values);
333 void glGetInteger64i_v(GLenum target, GLuint index, GLint64 *data);
334 void glGetBufferParameteri64v(GLenum target, GLenum pname, GLint64 *params);
335 void glGenSamplers(GLsizei count, GLuint *samplers);
336 void glDeleteSamplers(GLsizei count, const GLuint *samplers);
337 GLboolean glIsSampler(GLuint sampler);
338 void glBindSampler(GLuint unit, GLuint sampler);
339 void glSamplerParameteri(GLuint sampler, GLenum pname, GLint param);
340 void glSamplerParameteriv(GLuint sampler, GLenum pname, const GLint *param);
341 void glSamplerParameterf(GLuint sampler, GLenum pname, GLfloat param);
342 void glSamplerParameterfv(GLuint sampler, GLenum pname, const GLfloat *param);
343 void glGetSamplerParameteriv(GLuint sampler, GLenum pname, GLint *params);
344 void glGetSamplerParameterfv(GLuint sampler, GLenum pname, GLfloat *params);
345 void glVertexAttribDivisor(GLuint index, GLuint divisor);
346 void glBindTransformFeedback(GLenum target, GLuint id);
347 void glDeleteTransformFeedbacks(GLsizei n, const GLuint *ids);
348 void glGenTransformFeedbacks(GLsizei n, GLuint *ids);
349 GLboolean glIsTransformFeedback(GLuint id);
350 void glPauseTransformFeedback(void);
351 void glResumeTransformFeedback(void);
352 void glGetProgramBinary(GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, void *binary);
353 void glProgramBinary(GLuint program, GLenum binaryFormat, const void *binary, GLsizei length);
354 void glProgramParameteri(GLuint program, GLenum pname, GLint value);
355 void glInvalidateFramebuffer(GLenum target, GLsizei numAttachments, const GLenum *attachments);
356 void glInvalidateSubFramebuffer(GLenum target, GLsizei numAttachments, const GLenum *attachments, GLint x, GLint y, GLsizei width, GLsizei height);
357 void glTexStorage2D(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height);
358 void glTexStorage3D(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth);
359 void glGetInternalformativ(GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint *params);
360
361 // GLES 3.1
362 void glDispatchCompute(GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z);
363 void glDispatchComputeIndirect(GLintptr indirect);
364 void glDrawArraysIndirect(GLenum mode, const void *indirect);
365 void glDrawElementsIndirect(GLenum mode, GLenum type, const void *indirect);
366 void glFramebufferParameteri(GLenum target, GLenum pname, GLint param);
367 void glGetFramebufferParameteriv(GLenum target, GLenum pname, GLint *params);
368 void glGetProgramInterfaceiv(GLuint program, GLenum programInterface, GLenum pname, GLint *params);
369 GLuint glGetProgramResourceIndex(GLuint program, GLenum programInterface, const GLchar *name);
370 void glGetProgramResourceName(GLuint program, GLenum programInterface, GLuint index, GLsizei bufSize, GLsizei *length, GLchar *name);
371 void glGetProgramResourceiv(GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum *props, GLsizei bufSize, GLsizei *length, GLint *params);
372 GLint glGetProgramResourceLocation(GLuint program, GLenum programInterface, const GLchar *name);
373 void glUseProgramStages(GLuint pipeline, GLbitfield stages, GLuint program);
374 void glActiveShaderProgram(GLuint pipeline, GLuint program);
375 GLuint glCreateShaderProgramv(GLenum type, GLsizei count, const GLchar *const*strings);
376 void glBindProgramPipeline(GLuint pipeline);
377 void glDeleteProgramPipelines(GLsizei n, const GLuint *pipelines);
378 void glGenProgramPipelines(GLsizei n, GLuint *pipelines);
379 GLboolean glIsProgramPipeline(GLuint pipeline);
380 void glGetProgramPipelineiv(GLuint pipeline, GLenum pname, GLint *params);
381 void glProgramUniform1i(GLuint program, GLint location, GLint v0);
382 void glProgramUniform2i(GLuint program, GLint location, GLint v0, GLint v1);
383 void glProgramUniform3i(GLuint program, GLint location, GLint v0, GLint v1, GLint v2);
384 void glProgramUniform4i(GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3);
385 void glProgramUniform1ui(GLuint program, GLint location, GLuint v0);
386 void glProgramUniform2ui(GLuint program, GLint location, GLuint v0, GLuint v1);
387 void glProgramUniform3ui(GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2);
388 void glProgramUniform4ui(GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3);
389 void glProgramUniform1f(GLuint program, GLint location, GLfloat v0);
390 void glProgramUniform2f(GLuint program, GLint location, GLfloat v0, GLfloat v1);
391 void glProgramUniform3f(GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2);
392 void glProgramUniform4f(GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3);
393 void glProgramUniform1iv(GLuint program, GLint location, GLsizei count, const GLint *value);
394 void glProgramUniform2iv(GLuint program, GLint location, GLsizei count, const GLint *value);
395 void glProgramUniform3iv(GLuint program, GLint location, GLsizei count, const GLint *value);
396 void glProgramUniform4iv(GLuint program, GLint location, GLsizei count, const GLint *value);
397 void glProgramUniform1uiv(GLuint program, GLint location, GLsizei count, const GLuint *value);
398 void glProgramUniform2uiv(GLuint program, GLint location, GLsizei count, const GLuint *value);
399 void glProgramUniform3uiv(GLuint program, GLint location, GLsizei count, const GLuint *value);
400 void glProgramUniform4uiv(GLuint program, GLint location, GLsizei count, const GLuint *value);
401 void glProgramUniform1fv(GLuint program, GLint location, GLsizei count, const GLfloat *value);
402 void glProgramUniform2fv(GLuint program, GLint location, GLsizei count, const GLfloat *value);
403 void glProgramUniform3fv(GLuint program, GLint location, GLsizei count, const GLfloat *value);
404 void glProgramUniform4fv(GLuint program, GLint location, GLsizei count, const GLfloat *value);
405 void glProgramUniformMatrix2fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
406 void glProgramUniformMatrix3fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
407 void glProgramUniformMatrix4fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
408 void glProgramUniformMatrix2x3fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
409 void glProgramUniformMatrix3x2fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
410 void glProgramUniformMatrix2x4fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
411 void glProgramUniformMatrix4x2fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
412 void glProgramUniformMatrix3x4fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
413 void glProgramUniformMatrix4x3fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
414 void glValidateProgramPipeline(GLuint pipeline);
415 void glGetProgramPipelineInfoLog(GLuint pipeline, GLsizei bufSize, GLsizei *length, GLchar *infoLog);
416 void glBindImageTexture(GLuint unit, GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum access, GLenum format);
417 void glGetBooleani_v(GLenum target, GLuint index, GLboolean *data);
418 void glMemoryBarrier(GLbitfield barriers);
419 void glMemoryBarrierByRegion(GLbitfield barriers);
420 void glTexStorage2DMultisample(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations);
421 void glGetMultisamplefv(GLenum pname, GLuint index, GLfloat *val);
422 void glSampleMaski(GLuint maskNumber, GLbitfield mask);
423 void glGetTexLevelParameteriv(GLenum target, GLint level, GLenum pname, GLint *params);
424 void glGetTexLevelParameterfv(GLenum target, GLint level, GLenum pname, GLfloat *params);
425 void glBindVertexBuffer(GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride);
426 void glVertexAttribFormat(GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset);
427 void glVertexAttribIFormat(GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset);
428 void glVertexAttribBinding(GLuint attribindex, GLuint bindingindex);
429 void glVertexBindingDivisor(GLuint bindingindex, GLuint divisor);
430
431 // GLES 3.2
432 void glBlendBarrier(void);
433 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);
434 void glDebugMessageControl(GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled);
435 void glDebugMessageInsert(GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *buf);
436 void glDebugMessageCallback(GLDEBUGPROC callback, const void *userParam);
437 GLuint glGetDebugMessageLog(GLuint count, GLsizei bufSize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog);
438 void glPushDebugGroup(GLenum source, GLuint id, GLsizei length, const GLchar *message);
439 void glPopDebugGroup(void);
440 void glObjectLabel(GLenum identifier, GLuint name, GLsizei length, const GLchar *label);
441 void glGetObjectLabel(GLenum identifier, GLuint name, GLsizei bufSize, GLsizei *length, GLchar *label);
442 void glObjectPtrLabel(const void *ptr, GLsizei length, const GLchar *label);
443 void glGetObjectPtrLabel(const void *ptr, GLsizei bufSize, GLsizei *length, GLchar *label);
444 void glGetPointerv(GLenum pname, void **params);
445 void glEnablei(GLenum target, GLuint index);
446 void glDisablei(GLenum target, GLuint index);
447 void glBlendEquationi(GLuint buf, GLenum mode);
448 void glBlendEquationSeparatei(GLuint buf, GLenum modeRGB, GLenum modeAlpha);
449 void glBlendFunci(GLuint buf, GLenum src, GLenum dst);
450 void glBlendFuncSeparatei(GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha);
451 void glColorMaski(GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a);
452 GLboolean glIsEnabledi(GLenum target, GLuint index);
453 void glDrawElementsBaseVertex(GLenum mode, GLsizei count, GLenum type, const void *indices, GLint basevertex);
454 void glDrawRangeElementsBaseVertex(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices, GLint basevertex);
455 void glDrawElementsInstancedBaseVertex(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex);
456 void glFramebufferTexture(GLenum target, GLenum attachment, GLuint texture, GLint level);
457 void glPrimitiveBoundingBox(GLfloat minX, GLfloat minY, GLfloat minZ, GLfloat minW, GLfloat maxX, GLfloat maxY, GLfloat maxZ, GLfloat maxW);
458 GLenum glGetGraphicsResetStatus(void);
459 void glReadnPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void *data);
460 void glGetnUniformfv(GLuint program, GLint location, GLsizei bufSize, GLfloat *params);
461 void glGetnUniformiv(GLuint program, GLint location, GLsizei bufSize, GLint *params);
462 void glGetnUniformuiv(GLuint program, GLint location, GLsizei bufSize, GLuint *params);
463 void glMinSampleShading(GLfloat value);
464 void glPatchParameteri(GLenum pname, GLint value);
465 void glTexParameterIiv(GLenum target, GLenum pname, const GLint *params);
466 void glTexParameterIuiv(GLenum target, GLenum pname, const GLuint *params);
467 void glGetTexParameterIiv(GLenum target, GLenum pname, GLint *params);
468 void glGetTexParameterIuiv(GLenum target, GLenum pname, GLuint *params);
469 void glSamplerParameterIiv(GLuint sampler, GLenum pname, const GLint *param);
470 void glSamplerParameterIuiv(GLuint sampler, GLenum pname, const GLuint *param);
471 void glGetSamplerParameterIiv(GLuint sampler, GLenum pname, GLint *params);
472 void glGetSamplerParameterIuiv(GLuint sampler, GLenum pname, GLuint *params);
473 void glTexBuffer(GLenum target, GLenum internalformat, GLuint buffer);
474 void glTexBufferRange(GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size);
475 void glTexStorage3DMultisample(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations);
476
477private:
478 static bool isInitialized(const QOpenGLExtraFunctionsPrivate *d) { return d != nullptr; }
479};
480
481
482#define QT_OPENGL_DECLARE_FUNCTIONS(ret, name, args)
483 ret (QOPENGLF_APIENTRYP name)args;
484#define QT_OPENGL_COUNT_FUNCTIONS(ret, name, args) +1
485
486#define QT_OPENGL_DECLARE(FUNCTIONS) public
487 :
488 struct Functions {
489 FUNCTIONS(QT_OPENGL_DECLARE_FUNCTIONS)
490 };
491 union {
492 QFunctionPointer functions[FUNCTIONS(QT_OPENGL_COUNT_FUNCTIONS)];
493 Functions f;
494 }; private
495 :
496 void init(QOpenGLContext *context);
497
499{
500public:
501 QOpenGLExtraFunctionsPrivate(QOpenGLContext *ctx);
502
503 // GLES3
504#define QT_OPENGL_EXTRA_FUNCTIONS(F)
505 F(void, ReadBuffer, (GLenum mode))
506 F(void, DrawRangeElements, (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices))
507 F(void, TexImage3D, (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels))
508 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))
509 F(void, CopyTexSubImage3D, (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height))
510 F(void, CompressedTexImage3D, (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *data))
511 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))
512 F(void, GenQueries, (GLsizei n, GLuint *ids))
513 F(void, DeleteQueries, (GLsizei n, const GLuint *ids))
514 F(GLboolean, IsQuery, (GLuint id))
515 F(void, BeginQuery, (GLenum target, GLuint id))
516 F(void, EndQuery, (GLenum target))
517 F(void, GetQueryiv, (GLenum target, GLenum pname, GLint *params))
518 F(void, GetQueryObjectuiv, (GLuint id, GLenum pname, GLuint *params))
519 F(GLboolean, UnmapBuffer, (GLenum target))
520 F(void, GetBufferPointerv, (GLenum target, GLenum pname, void **params))
521 F(void, DrawBuffers, (GLsizei n, const GLenum *bufs))
522 F(void, UniformMatrix2x3fv, (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value))
523 F(void, UniformMatrix3x2fv, (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value))
524 F(void, UniformMatrix2x4fv, (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value))
525 F(void, UniformMatrix4x2fv, (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value))
526 F(void, UniformMatrix3x4fv, (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value))
527 F(void, UniformMatrix4x3fv, (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value))
528 F(void, BlitFramebuffer, (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter))
529 F(void, RenderbufferStorageMultisample, (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height))
530 F(void, FramebufferTextureLayer, (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer))
531 F(void *,MapBufferRange, (GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access))
532 F(void, FlushMappedBufferRange, (GLenum target, GLintptr offset, GLsizeiptr length))
533 F(void, BindVertexArray, (GLuint array))
534 F(void, DeleteVertexArrays, (GLsizei n, const GLuint *arrays))
535 F(void, GenVertexArrays, (GLsizei n, GLuint *arrays))
536 F(GLboolean, IsVertexArray, (GLuint array))
537 F(void, GetIntegeri_v, (GLenum target, GLuint index, GLint *data))
538 F(void, BeginTransformFeedback, (GLenum primitiveMode))
539 F(void, EndTransformFeedback, (void))
540 F(void, BindBufferRange, (GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size))
541 F(void, BindBufferBase, (GLenum target, GLuint index, GLuint buffer))
542 F(void, TransformFeedbackVaryings, (GLuint program, GLsizei count, const GLchar *const*varyings, GLenum bufferMode))
543 F(void, GetTransformFeedbackVarying, (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name))
544 F(void, VertexAttribIPointer, (GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer))
545 F(void, GetVertexAttribIiv, (GLuint index, GLenum pname, GLint *params))
546 F(void, GetVertexAttribIuiv, (GLuint index, GLenum pname, GLuint *params))
547 F(void, VertexAttribI4i, (GLuint index, GLint x, GLint y, GLint z, GLint w))
548 F(void, VertexAttribI4ui, (GLuint index, GLuint x, GLuint y, GLuint z, GLuint w))
549 F(void, VertexAttribI4iv, (GLuint index, const GLint *v))
550 F(void, VertexAttribI4uiv, (GLuint index, const GLuint *v))
551 F(void, GetUniformuiv, (GLuint program, GLint location, GLuint *params))
552 F(GLint, GetFragDataLocation, (GLuint program, const GLchar *name))
553 F(void, Uniform1ui, (GLint location, GLuint v0))
554 F(void, Uniform2ui, (GLint location, GLuint v0, GLuint v1))
555 F(void, Uniform3ui, (GLint location, GLuint v0, GLuint v1, GLuint v2))
556 F(void, Uniform4ui, (GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3))
557 F(void, Uniform1uiv, (GLint location, GLsizei count, const GLuint *value))
558 F(void, Uniform2uiv, (GLint location, GLsizei count, const GLuint *value))
559 F(void, Uniform3uiv, (GLint location, GLsizei count, const GLuint *value))
560 F(void, Uniform4uiv, (GLint location, GLsizei count, const GLuint *value))
561 F(void, ClearBufferiv, (GLenum buffer, GLint drawbuffer, const GLint *value))
562 F(void, ClearBufferuiv, (GLenum buffer, GLint drawbuffer, const GLuint *value))
563 F(void, ClearBufferfv, (GLenum buffer, GLint drawbuffer, const GLfloat *value))
564 F(void, ClearBufferfi, (GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil))
565 F(const GLubyte *, GetStringi, (GLenum name, GLuint index))
566 F(void, CopyBufferSubData, (GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size))
567 F(void, GetUniformIndices, (GLuint program, GLsizei uniformCount, const GLchar *const*uniformNames, GLuint *uniformIndices))
568 F(void, GetActiveUniformsiv, (GLuint program, GLsizei uniformCount, const GLuint *uniformIndices, GLenum pname, GLint *params))
569 F(GLuint, GetUniformBlockIndex, (GLuint program, const GLchar *uniformBlockName))
570 F(void, GetActiveUniformBlockiv, (GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint *params))
571 F(void, GetActiveUniformBlockName, (GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformBlockName))
572 F(void, UniformBlockBinding, (GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding))
573 F(void, DrawArraysInstanced, (GLenum mode, GLint first, GLsizei count, GLsizei instancecount))
574 F(void, DrawElementsInstanced, (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount))
575 F(GLsync, FenceSync, (GLenum condition, GLbitfield flags))
576 F(GLboolean, IsSync, (GLsync sync))
577 F(void, DeleteSync, (GLsync sync))
578 F(GLenum, ClientWaitSync, (GLsync sync, GLbitfield flags, GLuint64 timeout))
579 F(void, WaitSync, (GLsync sync, GLbitfield flags, GLuint64 timeout))
580 F(void, GetInteger64v, (GLenum pname, GLint64 *data))
581 F(void, GetSynciv, (GLsync sync, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values))
582 F(void, GetInteger64i_v, (GLenum target, GLuint index, GLint64 *data))
583 F(void, GetBufferParameteri64v, (GLenum target, GLenum pname, GLint64 *params))
584 F(void, GenSamplers, (GLsizei count, GLuint *samplers))
585 F(void, DeleteSamplers, (GLsizei count, const GLuint *samplers))
586 F(GLboolean, IsSampler, (GLuint sampler))
587 F(void, BindSampler, (GLuint unit, GLuint sampler))
588 F(void, SamplerParameteri, (GLuint sampler, GLenum pname, GLint param))
589 F(void, SamplerParameteriv, (GLuint sampler, GLenum pname, const GLint *param))
590 F(void, SamplerParameterf, (GLuint sampler, GLenum pname, GLfloat param))
591 F(void, SamplerParameterfv, (GLuint sampler, GLenum pname, const GLfloat *param))
592 F(void, GetSamplerParameteriv, (GLuint sampler, GLenum pname, GLint *params))
593 F(void, GetSamplerParameterfv, (GLuint sampler, GLenum pname, GLfloat *params))
594 F(void, VertexAttribDivisor, (GLuint index, GLuint divisor))
595 F(void, BindTransformFeedback, (GLenum target, GLuint id))
596 F(void, DeleteTransformFeedbacks, (GLsizei n, const GLuint *ids))
597 F(void, GenTransformFeedbacks, (GLsizei n, GLuint *ids))
598 F(GLboolean, IsTransformFeedback, (GLuint id))
599 F(void, PauseTransformFeedback, (void))
600 F(void, ResumeTransformFeedback, (void))
601 F(void, GetProgramBinary, (GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, void *binary))
602 F(void, ProgramBinary, (GLuint program, GLenum binaryFormat, const void *binary, GLsizei length))
603 F(void, ProgramParameteri, (GLuint program, GLenum pname, GLint value))
604 F(void, InvalidateFramebuffer, (GLenum target, GLsizei numAttachments, const GLenum *attachments))
605 F(void, InvalidateSubFramebuffer, (GLenum target, GLsizei numAttachments, const GLenum *attachments, GLint x, GLint y, GLsizei width, GLsizei height))
606 F(void, TexStorage2D, (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height))
607 F(void, TexStorage3D, (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth))
608 F(void, GetInternalformativ, (GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint *params))
609 F(void, DispatchCompute, (GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z))
610 F(void, DispatchComputeIndirect, (GLintptr indirect))
611 F(void, DrawArraysIndirect, (GLenum mode, const void *indirect))
612 F(void, DrawElementsIndirect, (GLenum mode, GLenum type, const void *indirect))
613 F(void, FramebufferParameteri, (GLenum target, GLenum pname, GLint param))
614 F(void, GetFramebufferParameteriv, (GLenum target, GLenum pname, GLint *params))
615 F(void, GetProgramInterfaceiv, (GLuint program, GLenum programInterface, GLenum pname, GLint *params))
616 F(GLuint, GetProgramResourceIndex, (GLuint program, GLenum programInterface, const GLchar *name))
617 F(void, GetProgramResourceName, (GLuint program, GLenum programInterface, GLuint index, GLsizei bufSize, GLsizei *length, GLchar *name))
618 F(void, GetProgramResourceiv, (GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum *props, GLsizei bufSize, GLsizei *length, GLint *params))
619 F(GLint, GetProgramResourceLocation, (GLuint program, GLenum programInterface, const GLchar *name))
620 F(void, UseProgramStages, (GLuint pipeline, GLbitfield stages, GLuint program))
621 F(void, ActiveShaderProgram, (GLuint pipeline, GLuint program))
622 F(GLuint, CreateShaderProgramv, (GLenum type, GLsizei count, const GLchar *const*strings))
623 F(void, BindProgramPipeline, (GLuint pipeline))
624 F(void, DeleteProgramPipelines, (GLsizei n, const GLuint *pipelines))
625 F(void, GenProgramPipelines, (GLsizei n, GLuint *pipelines))
626 F(GLboolean, IsProgramPipeline, (GLuint pipeline))
627 F(void, GetProgramPipelineiv, (GLuint pipeline, GLenum pname, GLint *params))
628 F(void, ProgramUniform1i, (GLuint program, GLint location, GLint v0))
629 F(void, ProgramUniform2i, (GLuint program, GLint location, GLint v0, GLint v1))
630 F(void, ProgramUniform3i, (GLuint program, GLint location, GLint v0, GLint v1, GLint v2))
631 F(void, ProgramUniform4i, (GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3))
632 F(void, ProgramUniform1ui, (GLuint program, GLint location, GLuint v0))
633 F(void, ProgramUniform2ui, (GLuint program, GLint location, GLuint v0, GLuint v1))
634 F(void, ProgramUniform3ui, (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2))
635 F(void, ProgramUniform4ui, (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3))
636 F(void, ProgramUniform1f, (GLuint program, GLint location, GLfloat v0))
637 F(void, ProgramUniform2f, (GLuint program, GLint location, GLfloat v0, GLfloat v1))
638 F(void, ProgramUniform3f, (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2))
639 F(void, ProgramUniform4f, (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3))
640 F(void, ProgramUniform1iv, (GLuint program, GLint location, GLsizei count, const GLint *value))
641 F(void, ProgramUniform2iv, (GLuint program, GLint location, GLsizei count, const GLint *value))
642 F(void, ProgramUniform3iv, (GLuint program, GLint location, GLsizei count, const GLint *value))
643 F(void, ProgramUniform4iv, (GLuint program, GLint location, GLsizei count, const GLint *value))
644 F(void, ProgramUniform1uiv, (GLuint program, GLint location, GLsizei count, const GLuint *value))
645 F(void, ProgramUniform2uiv, (GLuint program, GLint location, GLsizei count, const GLuint *value))
646 F(void, ProgramUniform3uiv, (GLuint program, GLint location, GLsizei count, const GLuint *value))
647 F(void, ProgramUniform4uiv, (GLuint program, GLint location, GLsizei count, const GLuint *value))
648 F(void, ProgramUniform1fv, (GLuint program, GLint location, GLsizei count, const GLfloat *value))
649 F(void, ProgramUniform2fv, (GLuint program, GLint location, GLsizei count, const GLfloat *value))
650 F(void, ProgramUniform3fv, (GLuint program, GLint location, GLsizei count, const GLfloat *value))
651 F(void, ProgramUniform4fv, (GLuint program, GLint location, GLsizei count, const GLfloat *value))
652 F(void, ProgramUniformMatrix2fv, (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value))
653 F(void, ProgramUniformMatrix3fv, (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value))
654 F(void, ProgramUniformMatrix4fv, (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value))
655 F(void, ProgramUniformMatrix2x3fv, (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value))
656 F(void, ProgramUniformMatrix3x2fv, (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value))
657 F(void, ProgramUniformMatrix2x4fv, (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value))
658 F(void, ProgramUniformMatrix4x2fv, (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value))
659 F(void, ProgramUniformMatrix3x4fv, (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value))
660 F(void, ProgramUniformMatrix4x3fv, (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value))
661 F(void, ValidateProgramPipeline, (GLuint pipeline))
662 F(void, GetProgramPipelineInfoLog, (GLuint pipeline, GLsizei bufSize, GLsizei *length, GLchar *infoLog))
663 F(void, BindImageTexture, (GLuint unit, GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum access, GLenum format))
664 F(void, GetBooleani_v, (GLenum target, GLuint index, GLboolean *data))
665 F(void, MemoryBarrier, (GLbitfield barriers))
666 F(void, MemoryBarrierByRegion, (GLbitfield barriers))
667 F(void, TexStorage2DMultisample, (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations))
668 F(void, GetMultisamplefv, (GLenum pname, GLuint index, GLfloat *val))
669 F(void, SampleMaski, (GLuint maskNumber, GLbitfield mask))
670 F(void, GetTexLevelParameteriv, (GLenum target, GLint level, GLenum pname, GLint *params))
671 F(void, GetTexLevelParameterfv, (GLenum target, GLint level, GLenum pname, GLfloat *params))
672 F(void, BindVertexBuffer, (GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride))
673 F(void, VertexAttribFormat, (GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset))
674 F(void, VertexAttribIFormat, (GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset))
675 F(void, VertexAttribBinding, (GLuint attribindex, GLuint bindingindex))
676 F(void, VertexBindingDivisor, (GLuint bindingindex, GLuint divisor))
677 F(void, BlendBarrier, (void))
678 F(void, BlendEquationSeparatei, (GLuint buf, GLenum modeRGB, GLenum modeAlpha))
679 F(void, BlendEquationi, (GLuint buf, GLenum mode))
680 F(void, BlendFuncSeparatei, (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha))
681 F(void, BlendFunci, (GLuint buf, GLenum src, GLenum dst))
682 F(void, ColorMaski, (GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a))
683 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))
684 F(void, DebugMessageCallback, (GLDEBUGPROC callback, const void * userParam))
685 F(void, DebugMessageControl, (GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint * ids, GLboolean enabled))
686 F(void, DebugMessageInsert, (GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar * buf))
687 F(void, Disablei, (GLenum target, GLuint index))
688 F(void, DrawElementsBaseVertex, (GLenum mode, GLsizei count, GLenum type, const void * indices, GLint basevertex))
689 F(void, DrawElementsInstancedBaseVertex, (GLenum mode, GLsizei count, GLenum type, const void * indices, GLsizei instancecount, GLint basevertex))
690 F(void, DrawRangeElementsBaseVertex, (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void * indices, GLint basevertex))
691 F(void, Enablei, (GLenum target, GLuint index))
692 F(void, FramebufferTexture, (GLenum target, GLenum attachment, GLuint texture, GLint level))
693 F(GLuint, GetDebugMessageLog, (GLuint count, GLsizei bufSize, GLenum* sources, GLenum* types, GLuint* ids, GLenum* severities, GLsizei* lengths, GLchar* messageLog))
694 F(GLenum, GetGraphicsResetStatus, (void))
695 F(void, GetObjectLabel, (GLenum identifier, GLuint name, GLsizei bufSize, GLsizei* length, GLchar* label))
696 F(void, GetObjectPtrLabel, (const void * ptr, GLsizei bufSize, GLsizei* length, GLchar* label))
697 F(void, GetPointerv, (GLenum pname, void ** params))
698 F(void, GetSamplerParameterIiv, (GLuint sampler, GLenum pname, GLint* params))
699 F(void, GetSamplerParameterIuiv, (GLuint sampler, GLenum pname, GLuint* params))
700 F(void, GetTexParameterIiv, (GLenum target, GLenum pname, GLint* params))
701 F(void, GetTexParameterIuiv, (GLenum target, GLenum pname, GLuint* params))
702 F(void, GetnUniformfv, (GLuint program, GLint location, GLsizei bufSize, GLfloat* params))
703 F(void, GetnUniformiv, (GLuint program, GLint location, GLsizei bufSize, GLint* params))
704 F(void, GetnUniformuiv, (GLuint program, GLint location, GLsizei bufSize, GLuint* params))
705 F(GLboolean, IsEnabledi, (GLenum target, GLuint index))
706 F(void, MinSampleShading, (GLfloat value))
707 F(void, ObjectLabel, (GLenum identifier, GLuint name, GLsizei length, const GLchar * label))
708 F(void, ObjectPtrLabel, (const void * ptr, GLsizei length, const GLchar * label))
709 F(void, PatchParameteri, (GLenum pname, GLint value))
710 F(void, PopDebugGroup, (void))
711 F(void, PrimitiveBoundingBox, (GLfloat minX, GLfloat minY, GLfloat minZ, GLfloat minW, GLfloat maxX, GLfloat maxY, GLfloat maxZ, GLfloat maxW))
712 F(void, PushDebugGroup, (GLenum source, GLuint id, GLsizei length, const GLchar * message))
713 F(void, ReadnPixels, (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void * data))
714 F(void, SamplerParameterIiv, (GLuint sampler, GLenum pname, const GLint * param))
715 F(void, SamplerParameterIuiv, (GLuint sampler, GLenum pname, const GLuint * param))
716 F(void, TexBuffer, (GLenum target, GLenum internalformat, GLuint buffer))
717 F(void, TexBufferRange, (GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size))
718 F(void, TexParameterIiv, (GLenum target, GLenum pname, const GLint * params))
719 F(void, TexParameterIuiv, (GLenum target, GLenum pname, const GLuint * params))
720 F(void, TexStorage3DMultisample, (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations))
721
722 QT_OPENGL_DECLARE(QT_OPENGL_EXTRA_FUNCTIONS)
723};
724
725// GLES 3.0 and 3.1
726
727inline void QOpenGLExtraFunctions::glBeginQuery(GLenum target, GLuint id)
728{
729 Q_D(QOpenGLExtraFunctions);
730 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
731 d->f.BeginQuery(target, id);
733}
734
735inline void QOpenGLExtraFunctions::glBeginTransformFeedback(GLenum primitiveMode)
736{
737 Q_D(QOpenGLExtraFunctions);
738 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
739 d->f.BeginTransformFeedback(primitiveMode);
741}
742
743inline void QOpenGLExtraFunctions::glBindBufferBase(GLenum target, GLuint index, GLuint buffer)
744{
745 Q_D(QOpenGLExtraFunctions);
746 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
747 d->f.BindBufferBase(target, index, buffer);
749}
750
751inline void QOpenGLExtraFunctions::glBindBufferRange(GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size)
752{
753 Q_D(QOpenGLExtraFunctions);
754 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
755 d->f.BindBufferRange(target, index, buffer, offset, size);
757}
758
759inline void QOpenGLExtraFunctions::glBindSampler(GLuint unit, GLuint sampler)
760{
761 Q_D(QOpenGLExtraFunctions);
762 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
763 d->f.BindSampler(unit, sampler);
765}
766
767inline void QOpenGLExtraFunctions::glBindTransformFeedback(GLenum target, GLuint id)
768{
769 Q_D(QOpenGLExtraFunctions);
770 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
771 d->f.BindTransformFeedback(target, id);
773}
774
775inline void QOpenGLExtraFunctions::glBindVertexArray(GLuint array)
776{
777 Q_D(QOpenGLExtraFunctions);
778 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
779 d->f.BindVertexArray(array);
781}
782
783inline void QOpenGLExtraFunctions::glBlitFramebuffer(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter)
784{
785 Q_D(QOpenGLExtraFunctions);
786 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
787 d->f.BlitFramebuffer(srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter);
789}
790
791inline void QOpenGLExtraFunctions::glClearBufferfi(GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil)
792{
793 Q_D(QOpenGLExtraFunctions);
794 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
795 d->f.ClearBufferfi(buffer, drawbuffer, depth, stencil);
797}
798
799inline void QOpenGLExtraFunctions::glClearBufferfv(GLenum buffer, GLint drawbuffer, const GLfloat * value)
800{
801 Q_D(QOpenGLExtraFunctions);
802 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
803 d->f.ClearBufferfv(buffer, drawbuffer, value);
805}
806
807inline void QOpenGLExtraFunctions::glClearBufferiv(GLenum buffer, GLint drawbuffer, const GLint * value)
808{
809 Q_D(QOpenGLExtraFunctions);
810 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
811 d->f.ClearBufferiv(buffer, drawbuffer, value);
813}
814
815inline void QOpenGLExtraFunctions::glClearBufferuiv(GLenum buffer, GLint drawbuffer, const GLuint * value)
816{
817 Q_D(QOpenGLExtraFunctions);
818 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
819 d->f.ClearBufferuiv(buffer, drawbuffer, value);
821}
822
823inline GLenum QOpenGLExtraFunctions::glClientWaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout)
824{
825 Q_D(QOpenGLExtraFunctions);
826 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
827 GLenum result = d->f.ClientWaitSync(sync, flags, timeout);
829 return result;
830}
831
832inline void QOpenGLExtraFunctions::glCompressedTexImage3D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void * data)
833{
834 Q_D(QOpenGLExtraFunctions);
835 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
836 d->f.CompressedTexImage3D(target, level, internalformat, width, height, depth, border, imageSize, data);
838}
839
840inline 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)
841{
842 Q_D(QOpenGLExtraFunctions);
843 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
844 d->f.CompressedTexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, data);
846}
847
848inline void QOpenGLExtraFunctions::glCopyBufferSubData(GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size)
849{
850 Q_D(QOpenGLExtraFunctions);
851 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
852 d->f.CopyBufferSubData(readTarget, writeTarget, readOffset, writeOffset, size);
854}
855
856inline void QOpenGLExtraFunctions::glCopyTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height)
857{
858 Q_D(QOpenGLExtraFunctions);
859 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
860 d->f.CopyTexSubImage3D(target, level, xoffset, yoffset, zoffset, x, y, width, height);
862}
863
864inline void QOpenGLExtraFunctions::glDeleteQueries(GLsizei n, const GLuint * ids)
865{
866 Q_D(QOpenGLExtraFunctions);
867 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
868 d->f.DeleteQueries(n, ids);
870}
871
872inline void QOpenGLExtraFunctions::glDeleteSamplers(GLsizei count, const GLuint * samplers)
873{
874 Q_D(QOpenGLExtraFunctions);
875 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
876 d->f.DeleteSamplers(count, samplers);
878}
879
880inline void QOpenGLExtraFunctions::glDeleteSync(GLsync sync)
881{
882 Q_D(QOpenGLExtraFunctions);
883 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
884 d->f.DeleteSync(sync);
886}
887
888inline void QOpenGLExtraFunctions::glDeleteTransformFeedbacks(GLsizei n, const GLuint * ids)
889{
890 Q_D(QOpenGLExtraFunctions);
891 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
892 d->f.DeleteTransformFeedbacks(n, ids);
894}
895
896inline void QOpenGLExtraFunctions::glDeleteVertexArrays(GLsizei n, const GLuint * arrays)
897{
898 Q_D(QOpenGLExtraFunctions);
899 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
900 d->f.DeleteVertexArrays(n, arrays);
902}
903
904inline void QOpenGLExtraFunctions::glDrawArraysInstanced(GLenum mode, GLint first, GLsizei count, GLsizei instancecount)
905{
906 Q_D(QOpenGLExtraFunctions);
907 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
908 d->f.DrawArraysInstanced(mode, first, count, instancecount);
910}
911
912inline void QOpenGLExtraFunctions::glDrawBuffers(GLsizei n, const GLenum * bufs)
913{
914 Q_D(QOpenGLExtraFunctions);
915 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
916 d->f.DrawBuffers(n, bufs);
918}
919
920inline void QOpenGLExtraFunctions::glDrawElementsInstanced(GLenum mode, GLsizei count, GLenum type, const void * indices, GLsizei instancecount)
921{
922 Q_D(QOpenGLExtraFunctions);
923 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
924 d->f.DrawElementsInstanced(mode, count, type, indices, instancecount);
926}
927
928inline void QOpenGLExtraFunctions::glDrawRangeElements(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void * indices)
929{
930 Q_D(QOpenGLExtraFunctions);
931 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
932 d->f.DrawRangeElements(mode, start, end, count, type, indices);
934}
935
936inline void QOpenGLExtraFunctions::glEndQuery(GLenum target)
937{
938 Q_D(QOpenGLExtraFunctions);
939 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
940 d->f.EndQuery(target);
942}
943
944inline void QOpenGLExtraFunctions::glEndTransformFeedback()
945{
946 Q_D(QOpenGLExtraFunctions);
947 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
948 d->f.EndTransformFeedback();
950}
951
952inline GLsync QOpenGLExtraFunctions::glFenceSync(GLenum condition, GLbitfield flags)
953{
954 Q_D(QOpenGLExtraFunctions);
955 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
956 GLsync result = d->f.FenceSync(condition, flags);
958 return result;
959}
960
961inline void QOpenGLExtraFunctions::glFlushMappedBufferRange(GLenum target, GLintptr offset, GLsizeiptr length)
962{
963 Q_D(QOpenGLExtraFunctions);
964 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
965 d->f.FlushMappedBufferRange(target, offset, length);
967}
968
969inline void QOpenGLExtraFunctions::glFramebufferTextureLayer(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer)
970{
971 Q_D(QOpenGLExtraFunctions);
972 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
973 d->f.FramebufferTextureLayer(target, attachment, texture, level, layer);
975}
976
977inline void QOpenGLExtraFunctions::glGenQueries(GLsizei n, GLuint* ids)
978{
979 Q_D(QOpenGLExtraFunctions);
980 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
981 d->f.GenQueries(n, ids);
983}
984
985inline void QOpenGLExtraFunctions::glGenSamplers(GLsizei count, GLuint* samplers)
986{
987 Q_D(QOpenGLExtraFunctions);
988 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
989 d->f.GenSamplers(count, samplers);
991}
992
993inline void QOpenGLExtraFunctions::glGenTransformFeedbacks(GLsizei n, GLuint* ids)
994{
995 Q_D(QOpenGLExtraFunctions);
996 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
997 d->f.GenTransformFeedbacks(n, ids);
999}
1000
1001inline void QOpenGLExtraFunctions::glGenVertexArrays(GLsizei n, GLuint* arrays)
1002{
1003 Q_D(QOpenGLExtraFunctions);
1004 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1005 d->f.GenVertexArrays(n, arrays);
1007}
1008
1009inline 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);
1015}
1016
1017inline 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);
1023}
1024
1025inline 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);
1031}
1032
1033inline 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);
1039}
1040
1041inline 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);
1047}
1048
1049inline 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);
1055 return result;
1056}
1057
1058inline 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);
1064}
1065
1066inline void QOpenGLExtraFunctions::glGetInteger64v(GLenum pname, GLint64* data)
1067{
1068 Q_D(QOpenGLExtraFunctions);
1069 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1070 d->f.GetInteger64v(pname, data);
1072}
1073
1074inline 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);
1080}
1081
1082inline 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);
1088}
1089
1090inline 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);
1096}
1097
1098inline 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);
1104}
1105
1106inline 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);
1112}
1113
1114inline 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);
1120}
1121
1122inline 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);
1128}
1129
1130inline 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);
1136 return result;
1137}
1138
1139inline 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);
1145}
1146
1147inline 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);
1153}
1154
1155inline 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);
1161 return result;
1162}
1163
1164inline 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);
1170}
1171
1172inline 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);
1178}
1179
1180inline 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);
1186}
1187
1188inline 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);
1194}
1195
1196inline 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);
1202}
1203
1204inline 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);
1210}
1211
1212inline GLboolean QOpenGLExtraFunctions::glIsQuery(GLuint id)
1213{
1214 Q_D(QOpenGLExtraFunctions);
1215 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1216 GLboolean result = d->f.IsQuery(id);
1218 return result;
1219}
1220
1221inline GLboolean QOpenGLExtraFunctions::glIsSampler(GLuint sampler)
1222{
1223 Q_D(QOpenGLExtraFunctions);
1224 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1225 GLboolean result = d->f.IsSampler(sampler);
1227 return result;
1228}
1229
1230inline GLboolean QOpenGLExtraFunctions::glIsSync(GLsync sync)
1231{
1232 Q_D(QOpenGLExtraFunctions);
1233 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1234 GLboolean result = d->f.IsSync(sync);
1236 return result;
1237}
1238
1239inline GLboolean QOpenGLExtraFunctions::glIsTransformFeedback(GLuint id)
1240{
1241 Q_D(QOpenGLExtraFunctions);
1242 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1243 GLboolean result = d->f.IsTransformFeedback(id);
1245 return result;
1246}
1247
1248inline GLboolean QOpenGLExtraFunctions::glIsVertexArray(GLuint array)
1249{
1250 Q_D(QOpenGLExtraFunctions);
1251 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1252 GLboolean result = d->f.IsVertexArray(array);
1254 return result;
1255}
1256
1257inline 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);
1263 return result;
1264}
1265
1266inline void QOpenGLExtraFunctions::glPauseTransformFeedback()
1267{
1268 Q_D(QOpenGLExtraFunctions);
1269 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1270 d->f.PauseTransformFeedback();
1272}
1273
1274inline 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);
1280}
1281
1282inline 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);
1288}
1289
1290inline void QOpenGLExtraFunctions::glReadBuffer(GLenum src)
1291{
1292 Q_D(QOpenGLExtraFunctions);
1293 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1294 d->f.ReadBuffer(src);
1296}
1297
1298inline 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);
1304}
1305
1306inline void QOpenGLExtraFunctions::glResumeTransformFeedback()
1307{
1308 Q_D(QOpenGLExtraFunctions);
1309 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1310 d->f.ResumeTransformFeedback();
1312}
1313
1314inline 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);
1320}
1321
1322inline 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);
1328}
1329
1330inline 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);
1336}
1337
1338inline 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);
1344}
1345
1346inline 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);
1352}
1353
1354inline 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);
1360}
1361
1362inline 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);
1368}
1369
1370inline 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);
1376}
1377
1378inline 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);
1384}
1385
1386inline void QOpenGLExtraFunctions::glUniform1ui(GLint location, GLuint v0)
1387{
1388 Q_D(QOpenGLExtraFunctions);
1389 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1390 d->f.Uniform1ui(location, v0);
1392}
1393
1394inline 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);
1400}
1401
1402inline 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);
1408}
1409
1410inline 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);
1416}
1417
1418inline 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);
1424}
1425
1426inline 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);
1432}
1433
1434inline 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);
1440}
1441
1442inline 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);
1448}
1449
1450inline 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);
1456}
1457
1458inline 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);
1464}
1465
1466inline 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);
1472}
1473
1474inline 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);
1480}
1481
1482inline 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);
1488}
1489
1490inline 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);
1496}
1497
1498inline 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);
1504}
1505
1506inline GLboolean QOpenGLExtraFunctions::glUnmapBuffer(GLenum target)
1507{
1508 Q_D(QOpenGLExtraFunctions);
1509 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1510 GLboolean result = d->f.UnmapBuffer(target);
1512 return result;
1513}
1514
1515inline void QOpenGLExtraFunctions::glVertexAttribDivisor(GLuint index, GLuint divisor)
1516{
1517 Q_D(QOpenGLExtraFunctions);
1518 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1519 d->f.VertexAttribDivisor(index, divisor);
1521}
1522
1523inline 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);
1529}
1530
1531inline 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);
1537}
1538
1539inline 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);
1545}
1546
1547inline 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);
1553}
1554
1555inline 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);
1561}
1562
1563inline 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);
1569}
1570
1571inline void QOpenGLExtraFunctions::glActiveShaderProgram(GLuint pipeline, GLuint program)
1572{
1573 Q_D(QOpenGLExtraFunctions);
1574 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1575 d->f.ActiveShaderProgram(pipeline, program);
1577}
1578
1579inline 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);
1585}
1586
1587inline void QOpenGLExtraFunctions::glBindProgramPipeline(GLuint pipeline)
1588{
1589 Q_D(QOpenGLExtraFunctions);
1590 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1591 d->f.BindProgramPipeline(pipeline);
1593}
1594
1595inline 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);
1601}
1602
1603inline 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);
1609 return result;
1610}
1611
1612inline 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);
1618}
1619
1620inline 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);
1626}
1627
1628inline void QOpenGLExtraFunctions::glDispatchComputeIndirect(GLintptr indirect)
1629{
1630 Q_D(QOpenGLExtraFunctions);
1631 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1632 d->f.DispatchComputeIndirect(indirect);
1634}
1635
1636inline 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);
1642}
1643
1644inline 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);
1650}
1651
1652inline 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);
1658}
1659
1660inline void QOpenGLExtraFunctions::glGenProgramPipelines(GLsizei n, GLuint* pipelines)
1661{
1662 Q_D(QOpenGLExtraFunctions);
1663 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1664 d->f.GenProgramPipelines(n, pipelines);
1666}
1667
1668inline 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);
1674}
1675
1676inline 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);
1682}
1683
1684inline 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);
1690}
1691
1692inline 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);
1698}
1699
1700inline 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);
1706}
1707
1708inline 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);
1714}
1715
1716inline 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);
1722 return result;
1723}
1724
1725inline 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);
1731 return result;
1732}
1733
1734inline 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);
1740}
1741
1742inline 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);
1748}
1749
1750inline 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);
1756}
1757
1758inline 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);
1764}
1765
1766inline GLboolean QOpenGLExtraFunctions::glIsProgramPipeline(GLuint pipeline)
1767{
1768 Q_D(QOpenGLExtraFunctions);
1769 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1770 GLboolean result = d->f.IsProgramPipeline(pipeline);
1772 return result;
1773}
1774
1775inline void QOpenGLExtraFunctions::glMemoryBarrier(GLbitfield barriers)
1776{
1777 Q_D(QOpenGLExtraFunctions);
1778 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1779 d->f.MemoryBarrier(barriers);
1781}
1782
1783inline void QOpenGLExtraFunctions::glMemoryBarrierByRegion(GLbitfield barriers)
1784{
1785 Q_D(QOpenGLExtraFunctions);
1786 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1787 d->f.MemoryBarrierByRegion(barriers);
1789}
1790
1791inline 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);
1797}
1798
1799inline 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);
1805}
1806
1807inline 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);
1813}
1814
1815inline 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);
1821}
1822
1823inline 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);
1829}
1830
1831inline 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);
1837}
1838
1839inline 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);
1845}
1846
1847inline 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);
1853}
1854
1855inline 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);
1861}
1862
1863inline 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);
1869}
1870
1871inline 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);
1877}
1878
1879inline 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);
1885}
1886
1887inline 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);
1893}
1894
1895inline 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);
1901}
1902
1903inline 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);
1909}
1910
1911inline 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);
1917}
1918
1919inline 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);
1925}
1926
1927inline 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);
1933}
1934
1935inline 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);
1941}
1942
1943inline 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);
1949}
1950
1951inline 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);
1957}
1958
1959inline 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);
1965}
1966
1967inline 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);
1973}
1974
1975inline 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);
1981}
1982
1983inline 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);
1989}
1990
1991inline 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);
1997}
1998
1999inline 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);
2005}
2006
2007inline 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);
2013}
2014
2015inline 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);
2021}
2022
2023inline 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);
2029}
2030
2031inline 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);
2037}
2038
2039inline 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);
2045}
2046
2047inline 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);
2053}
2054
2055inline void QOpenGLExtraFunctions::glSampleMaski(GLuint maskNumber, GLbitfield mask)
2056{
2057 Q_D(QOpenGLExtraFunctions);
2058 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2059 d->f.SampleMaski(maskNumber, mask);
2061}
2062
2063inline 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);
2069}
2070
2071inline 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);
2077}
2078
2079inline void QOpenGLExtraFunctions::glValidateProgramPipeline(GLuint pipeline)
2080{
2081 Q_D(QOpenGLExtraFunctions);
2082 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2083 d->f.ValidateProgramPipeline(pipeline);
2085}
2086
2087inline void QOpenGLExtraFunctions::glVertexAttribBinding(GLuint attribindex, GLuint bindingindex)
2088{
2089 Q_D(QOpenGLExtraFunctions);
2090 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2091 d->f.VertexAttribBinding(attribindex, bindingindex);
2093}
2094
2095inline 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);
2101}
2102
2103inline 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);
2109}
2110
2111inline void QOpenGLExtraFunctions::glVertexBindingDivisor(GLuint bindingindex, GLuint divisor)
2112{
2113 Q_D(QOpenGLExtraFunctions);
2114 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2115 d->f.VertexBindingDivisor(bindingindex, divisor);
2117}
2118
2119// GLES 3.2
2120
2121inline void QOpenGLExtraFunctions::glBlendBarrier()
2122{
2123 Q_D(QOpenGLExtraFunctions);
2124 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2125 d->f.BlendBarrier();
2127}
2128
2129inline 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);
2135}
2136
2137inline void QOpenGLExtraFunctions::glBlendEquationi(GLuint buf, GLenum mode)
2138{
2139 Q_D(QOpenGLExtraFunctions);
2140 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2141 d->f.BlendEquationi(buf, mode);
2143}
2144
2145inline 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);
2151}
2152
2153inline 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);
2159}
2160
2161inline 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);
2167}
2168
2169inline 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);
2175}
2176
2177inline 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);
2183}
2184
2185inline 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);
2191}
2192
2193inline 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);
2199}
2200
2201inline void QOpenGLExtraFunctions::glDisablei(GLenum target, GLuint index)
2202{
2203 Q_D(QOpenGLExtraFunctions);
2204 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2205 d->f.Disablei(target, index);
2207}
2208
2209inline 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);
2215}
2216
2217inline 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);
2223}
2224
2225inline 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);
2231}
2232
2233inline void QOpenGLExtraFunctions::glEnablei(GLenum target, GLuint index)
2234{
2235 Q_D(QOpenGLExtraFunctions);
2236 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2237 d->f.Enablei(target, index);
2239}
2240
2241inline 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);
2247}
2248
2249inline 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);
2255 return result;
2256}
2257
2258inline GLenum QOpenGLExtraFunctions::glGetGraphicsResetStatus()
2259{
2260 Q_D(QOpenGLExtraFunctions);
2261 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2262 GLenum result = d->f.GetGraphicsResetStatus();
2264 return result;
2265}
2266
2267inline 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);
2273}
2274
2275inline 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);
2281}
2282
2283inline void QOpenGLExtraFunctions::glGetPointerv(GLenum pname, void ** params)
2284{
2285 Q_D(QOpenGLExtraFunctions);
2286 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2287 d->f.GetPointerv(pname, params);
2289}
2290
2291inline 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);
2297}
2298
2299inline 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);
2305}
2306
2307inline 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);
2313}
2314
2315inline 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);
2321}
2322
2323inline 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);
2329}
2330
2331inline 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);
2337}
2338
2339inline 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);
2345}
2346
2347inline 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);
2353 return result;
2354}
2355
2356inline void QOpenGLExtraFunctions::glMinSampleShading(GLfloat value)
2357{
2358 Q_D(QOpenGLExtraFunctions);
2359 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2360 d->f.MinSampleShading(value);
2362}
2363
2364inline 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);
2370}
2371
2372inline 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);
2378}
2379
2380inline void QOpenGLExtraFunctions::glPatchParameteri(GLenum pname, GLint value)
2381{
2382 Q_D(QOpenGLExtraFunctions);
2383 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2384 d->f.PatchParameteri(pname, value);
2386}
2387
2388inline void QOpenGLExtraFunctions::glPopDebugGroup()
2389{
2390 Q_D(QOpenGLExtraFunctions);
2391 Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2392 d->f.PopDebugGroup();
2394}
2395
2396inline 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);
2402}
2403
2404inline 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);
2410}
2411
2412inline 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);
2418}
2419
2420inline 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);
2426}
2427
2428inline 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);
2434}
2435
2436inline 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);
2442}
2443
2444inline 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);
2450}
2451
2452inline 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);
2458}
2459
2460inline 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);
2466}
2467
2468inline 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);
2474}
2475
2476QT_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 // QT_NO_OPENGL
2487
2488#endif
QOpenGLExtraFunctionsPrivate(QOpenGLContext *ctx)
The QOpenGLExtraFunctions class provides cross-platform access to the OpenGL ES 3....
Combined button and popup list for selecting options.
Q_GLOBAL_STATIC(QReadWriteLock, g_updateMutex)
#define GL_FRAMEBUFFER_SRGB_CAPABLE_EXT
#define QT_OPENGL_DECLARE(FUNCTIONS)
#define QT_OPENGL_COUNT_FUNCTIONS(ret, name, args)
#define RESOLVE(name)
#define QT_OPENGL_IMPLEMENT(CLASS, FUNCTIONS)
static int qt_gl_resolve_extensions()
static QOpenGLFunctionsPrivateEx * qt_gl_functions(QOpenGLContext *context=nullptr)
static int qt_gl_resolve_features()
#define QT_OPENGL_FUNCTION_NAMES(ret, name, args)
#define Q_OPENGL_FUNCTIONS_DEBUG
void freeResource(QOpenGLContext *) override
QOpenGLFunctionsPrivateEx(QOpenGLContext *context)