QtBase  v6.3.1
qopenglextrafunctions.h
Go to the documentation of this file.
1 /****************************************************************************
2 **
3 ** Copyright (C) 2016 The Qt Company Ltd.
4 ** Contact: https://www.qt.io/licensing/
5 **
6 ** This file is part of the QtGui module of the Qt Toolkit.
7 **
8 ** $QT_BEGIN_LICENSE:LGPL$
9 ** Commercial License Usage
10 ** Licensees holding valid commercial Qt licenses may use this file in
11 ** accordance with the commercial license agreement provided with the
12 ** Software or, alternatively, in accordance with the terms contained in
13 ** a written agreement between you and The Qt Company. For licensing terms
14 ** and conditions see https://www.qt.io/terms-conditions. For further
15 ** information use the contact form at https://www.qt.io/contact-us.
16 **
17 ** GNU Lesser General Public License Usage
18 ** Alternatively, this file may be used under the terms of the GNU Lesser
19 ** General Public License version 3 as published by the Free Software
20 ** Foundation and appearing in the file LICENSE.LGPL3 included in the
21 ** packaging of this file. Please review the following information to
22 ** ensure the GNU Lesser General Public License version 3 requirements
23 ** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
24 **
25 ** GNU General Public License Usage
26 ** Alternatively, this file may be used under the terms of the GNU
27 ** General Public License version 2.0 or (at your option) the GNU General
28 ** Public license version 3 or any later version approved by the KDE Free
29 ** Qt Foundation. The licenses are as published by the Free Software
30 ** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
31 ** included in the packaging of this file. Please review the following
32 ** information to ensure the GNU General Public License requirements will
33 ** be met: https://www.gnu.org/licenses/gpl-2.0.html and
34 ** https://www.gnu.org/licenses/gpl-3.0.html.
35 **
36 ** $QT_END_LICENSE$
37 **
38 ****************************************************************************/
39 
40 #ifndef QOPENGLEXTRAFUNCTIONS_H
41 #define QOPENGLEXTRAFUNCTIONS_H
42 
43 #include <QtGui/qtguiglobal.h>
44 
45 #ifndef QT_NO_OPENGL
46 
47 #include <QtGui/qopenglfunctions.h>
48 
49 // MemoryBarrier is a macro on some architectures on Windows
50 #ifdef Q_OS_WIN
51 #pragma push_macro("MemoryBarrier")
52 #undef MemoryBarrier
53 #endif
54 
55 // GLES build without having included gl32.h -> GLDEBUGPROC is still need for the protos, define it here
56 #if QT_CONFIG(opengles2) && !QT_CONFIG(opengles32)
58 #endif
59 
61 
63 
64 #undef glReadBuffer
65 #undef glDrawRangeElements
66 #undef glTexImage3D
67 #undef glTexSubImage3D
68 #undef glCopyTexSubImage3D
69 #undef glCompressedTexImage3D
70 #undef glCompressedTexSubImage3D
71 #undef glGenQueries
72 #undef glDeleteQueries
73 #undef glIsQuery
74 #undef glBeginQuery
75 #undef glEndQuery
76 #undef glGetQueryiv
77 #undef glGetQueryObjectuiv
78 #undef glUnmapBuffer
79 #undef glGetBufferPointerv
80 #undef glDrawBuffers
81 #undef glUniformMatrix2x3fv
82 #undef glUniformMatrix3x2fv
83 #undef glUniformMatrix2x4fv
84 #undef glUniformMatrix4x2fv
85 #undef glUniformMatrix3x4fv
86 #undef glUniformMatrix4x3fv
87 #undef glBlitFramebuffer
88 #undef glRenderbufferStorageMultisample
89 #undef glFramebufferTextureLayer
90 #undef glMapBufferRange
91 #undef glFlushMappedBufferRange
92 #undef glBindVertexArray
93 #undef glDeleteVertexArrays
94 #undef glGenVertexArrays
95 #undef glIsVertexArray
96 #undef glGetIntegeri_v
97 #undef glBeginTransformFeedback
98 #undef glEndTransformFeedback
99 #undef glBindBufferRange
100 #undef glBindBufferBase
101 #undef glTransformFeedbackVaryings
102 #undef glGetTransformFeedbackVarying
103 #undef glVertexAttribIPointer
104 #undef glGetVertexAttribIiv
105 #undef glGetVertexAttribIuiv
106 #undef glVertexAttribI4i
107 #undef glVertexAttribI4ui
108 #undef glVertexAttribI4iv
109 #undef glVertexAttribI4uiv
110 #undef glGetUniformuiv
111 #undef glGetFragDataLocation
112 #undef glUniform1ui
113 #undef glUniform2ui
114 #undef glUniform3ui
115 #undef glUniform4ui
116 #undef glUniform1uiv
117 #undef glUniform2uiv
118 #undef glUniform3uiv
119 #undef glUniform4uiv
120 #undef glClearBufferiv
121 #undef glClearBufferuiv
122 #undef glClearBufferfv
123 #undef glClearBufferfi
124 #undef glGetStringi
125 #undef glCopyBufferSubData
126 #undef glGetUniformIndices
127 #undef glGetActiveUniformsiv
128 #undef glGetUniformBlockIndex
129 #undef glGetActiveUniformBlockiv
130 #undef glGetActiveUniformBlockName
131 #undef glUniformBlockBinding
132 #undef glDrawArraysInstanced
133 #undef glDrawElementsInstanced
134 #undef glFenceSync
135 #undef glIsSync
136 #undef glDeleteSync
137 #undef glClientWaitSync
138 #undef glWaitSync
139 #undef glGetInteger64v
140 #undef glGetSynciv
141 #undef glGetInteger64i_v
142 #undef glGetBufferParameteri64v
143 #undef glGenSamplers
144 #undef glDeleteSamplers
145 #undef glIsSampler
146 #undef glBindSampler
147 #undef glSamplerParameteri
148 #undef glSamplerParameteriv
149 #undef glSamplerParameterf
150 #undef glSamplerParameterfv
151 #undef glGetSamplerParameteriv
152 #undef glGetSamplerParameterfv
153 #undef glVertexAttribDivisor
154 #undef glBindTransformFeedback
155 #undef glDeleteTransformFeedbacks
156 #undef glGenTransformFeedbacks
157 #undef glIsTransformFeedback
158 #undef glPauseTransformFeedback
159 #undef glResumeTransformFeedback
160 #undef glGetProgramBinary
161 #undef glProgramBinary
162 #undef glProgramParameteri
163 #undef glInvalidateFramebuffer
164 #undef glInvalidateSubFramebuffer
165 #undef glTexStorage2D
166 #undef glTexStorage3D
167 #undef glGetInternalformativ
168 
169 #undef glDispatchCompute
170 #undef glDispatchComputeIndirect
171 #undef glDrawArraysIndirect
172 #undef glDrawElementsIndirect
173 #undef glFramebufferParameteri
174 #undef glGetFramebufferParameteriv
175 #undef glGetProgramInterfaceiv
176 #undef glGetProgramResourceIndex
177 #undef glGetProgramResourceName
178 #undef glGetProgramResourceiv
179 #undef glGetProgramResourceLocation
180 #undef glUseProgramStages
181 #undef glActiveShaderProgram
182 #undef glCreateShaderProgramv
183 #undef glBindProgramPipeline
184 #undef glDeleteProgramPipelines
185 #undef glGenProgramPipelines
186 #undef glIsProgramPipeline
187 #undef glGetProgramPipelineiv
188 #undef glProgramUniform1i
189 #undef glProgramUniform2i
190 #undef glProgramUniform3i
191 #undef glProgramUniform4i
192 #undef glProgramUniform1ui
193 #undef glProgramUniform2ui
194 #undef glProgramUniform3ui
195 #undef glProgramUniform4ui
196 #undef glProgramUniform1f
197 #undef glProgramUniform2f
198 #undef glProgramUniform3f
199 #undef glProgramUniform4f
200 #undef glProgramUniform1iv
201 #undef glProgramUniform2iv
202 #undef glProgramUniform3iv
203 #undef glProgramUniform4iv
204 #undef glProgramUniform1uiv
205 #undef glProgramUniform2uiv
206 #undef glProgramUniform3uiv
207 #undef glProgramUniform4uiv
208 #undef glProgramUniform1fv
209 #undef glProgramUniform2fv
210 #undef glProgramUniform3fv
211 #undef glProgramUniform4fv
212 #undef glProgramUniformMatrix2fv
213 #undef glProgramUniformMatrix3fv
214 #undef glProgramUniformMatrix4fv
215 #undef glProgramUniformMatrix2x3fv
216 #undef glProgramUniformMatrix3x2fv
217 #undef glProgramUniformMatrix2x4fv
218 #undef glProgramUniformMatrix4x2fv
219 #undef glProgramUniformMatrix3x4fv
220 #undef glProgramUniformMatrix4x3fv
221 #undef glValidateProgramPipeline
222 #undef glGetProgramPipelineInfoLog
223 #undef glBindImageTexture
224 #undef glGetBooleani_v
225 #undef glMemoryBarrier
226 #undef glMemoryBarrierByRegion
227 #undef glTexStorage2DMultisample
228 #undef glGetMultisamplefv
229 #undef glSampleMaski
230 #undef glGetTexLevelParameteriv
231 #undef glGetTexLevelParameterfv
232 #undef glBindVertexBuffer
233 #undef glVertexAttribFormat
234 #undef glVertexAttribIFormat
235 #undef glVertexAttribBinding
236 #undef glVertexBindingDivisor
237 
238 #undef glBlendBarrier
239 #undef glCopyImageSubData
240 #undef glDebugMessageControl
241 #undef glDebugMessageInsert
242 #undef glDebugMessageCallback
243 #undef glGetDebugMessageLog
244 #undef glPushDebugGroup
245 #undef glPopDebugGroup
246 #undef glObjectLabel
247 #undef glGetObjectLabel
248 #undef glGetObjectPtrLabel
249 #undef glGetPointerv
250 #undef glEnablei
251 #undef glDisablei
252 #undef glBlendEquationi
253 #undef glBlendEquationSeparatei
254 #undef glBlendFunci
255 #undef glBlendFuncSeparatei
256 #undef glColorMaski
257 #undef glIsEnabledi
258 #undef glDrawElementsBaseVertex
259 #undef glDrawRangeElementsBaseVertex
260 #undef glDrawElementsInstancedBaseVertex
261 #undef glFrameBufferTexture
262 #undef glPrimitiveBoundingBox
263 #undef glGetGraphicsResetStatus
264 #undef glReadnPixels
265 #undef glGetnUniformfv
266 #undef glGetnUniformiv
267 #undef glGetnUniformuiv
268 #undef glMinSampleShading
269 #undef glPatchParameteri
270 #undef glTexParameterIiv
271 #undef glTexParameterIuiv
272 #undef glGetTexParameterIiv
273 #undef glGetTexParameterIuiv
274 #undef glSamplerParameterIiv
275 #undef glSamplerParameterIuiv
276 #undef glGetSamplerParameterIiv
277 #undef glGetSamplerParameterIuiv
278 #undef glTexBuffer
279 #undef glTexBufferRange
280 #undef glTexStorage3DMultisample
281 
282 class Q_GUI_EXPORT QOpenGLExtraFunctions : public QOpenGLFunctions
283 {
284  Q_DECLARE_PRIVATE(QOpenGLExtraFunctions)
285 
286 public:
290 
291  // GLES3
292  void glReadBuffer(GLenum mode);
293  void glDrawRangeElements(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices);
299  void glGenQueries(GLsizei n, GLuint *ids);
300  void glDeleteQueries(GLsizei n, const GLuint *ids);
301  GLboolean glIsQuery(GLuint id);
302  void glBeginQuery(GLenum target, GLuint id);
303  void glEndQuery(GLenum target);
304  void glGetQueryiv(GLenum target, GLenum pname, GLint *params);
305  void glGetQueryObjectuiv(GLuint id, GLenum pname, GLuint *params);
306  GLboolean glUnmapBuffer(GLenum target);
307  void glGetBufferPointerv(GLenum target, GLenum pname, void **params);
308  void glDrawBuffers(GLsizei n, const GLenum *bufs);
309  void glUniformMatrix2x3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
310  void glUniformMatrix3x2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
311  void glUniformMatrix2x4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
312  void glUniformMatrix4x2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
313  void glUniformMatrix3x4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
314  void glUniformMatrix4x3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
316  void glRenderbufferStorageMultisample(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
317  void glFramebufferTextureLayer(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer);
318  void *glMapBufferRange(GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access);
319  void glFlushMappedBufferRange(GLenum target, GLintptr offset, GLsizeiptr length);
320  void glBindVertexArray(GLuint array);
321  void glDeleteVertexArrays(GLsizei n, const GLuint *arrays);
322  void glGenVertexArrays(GLsizei n, GLuint *arrays);
323  GLboolean glIsVertexArray(GLuint array);
324  void glGetIntegeri_v(GLenum target, GLuint index, GLint *data);
325  void glBeginTransformFeedback(GLenum primitiveMode);
326  void glEndTransformFeedback(void);
327  void glBindBufferRange(GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size);
328  void glBindBufferBase(GLenum target, GLuint index, GLuint buffer);
329  void glTransformFeedbackVaryings(GLuint program, GLsizei count, const GLchar *const*varyings, GLenum bufferMode);
330  void glGetTransformFeedbackVarying(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name);
331  void glVertexAttribIPointer(GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer);
332  void glGetVertexAttribIiv(GLuint index, GLenum pname, GLint *params);
333  void glGetVertexAttribIuiv(GLuint index, GLenum pname, GLuint *params);
334  void glVertexAttribI4i(GLuint index, GLint x, GLint y, GLint z, GLint w);
335  void glVertexAttribI4ui(GLuint index, GLuint x, GLuint y, GLuint z, GLuint w);
336  void glVertexAttribI4iv(GLuint index, const GLint *v);
337  void glVertexAttribI4uiv(GLuint index, const GLuint *v);
338  void glGetUniformuiv(GLuint program, GLint location, GLuint *params);
339  GLint glGetFragDataLocation(GLuint program, const GLchar *name);
340  void glUniform1ui(GLint location, GLuint v0);
341  void glUniform2ui(GLint location, GLuint v0, GLuint v1);
342  void glUniform3ui(GLint location, GLuint v0, GLuint v1, GLuint v2);
343  void glUniform4ui(GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3);
344  void glUniform1uiv(GLint location, GLsizei count, const GLuint *value);
345  void glUniform2uiv(GLint location, GLsizei count, const GLuint *value);
346  void glUniform3uiv(GLint location, GLsizei count, const GLuint *value);
347  void glUniform4uiv(GLint location, GLsizei count, const GLuint *value);
348  void glClearBufferiv(GLenum buffer, GLint drawbuffer, const GLint *value);
349  void glClearBufferuiv(GLenum buffer, GLint drawbuffer, const GLuint *value);
350  void glClearBufferfv(GLenum buffer, GLint drawbuffer, const GLfloat *value);
351  void glClearBufferfi(GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil);
352  const GLubyte *glGetStringi(GLenum name, GLuint index);
353  void glCopyBufferSubData(GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size);
354  void glGetUniformIndices(GLuint program, GLsizei uniformCount, const GLchar *const*uniformNames, GLuint *uniformIndices);
355  void glGetActiveUniformsiv(GLuint program, GLsizei uniformCount, const GLuint *uniformIndices, GLenum pname, GLint *params);
356  GLuint glGetUniformBlockIndex(GLuint program, const GLchar *uniformBlockName);
357  void glGetActiveUniformBlockiv(GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint *params);
358  void glGetActiveUniformBlockName(GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformBlockName);
359  void glUniformBlockBinding(GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding);
360  void glDrawArraysInstanced(GLenum mode, GLint first, GLsizei count, GLsizei instancecount);
361  void glDrawElementsInstanced(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount);
362  GLsync glFenceSync(GLenum condition, GLbitfield flags);
363  GLboolean glIsSync(GLsync sync);
364  void glDeleteSync(GLsync sync);
365  GLenum glClientWaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout);
366  void glWaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout);
367  void glGetInteger64v(GLenum pname, GLint64 *data);
368  void glGetSynciv(GLsync sync, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values);
369  void glGetInteger64i_v(GLenum target, GLuint index, GLint64 *data);
370  void glGetBufferParameteri64v(GLenum target, GLenum pname, GLint64 *params);
371  void glGenSamplers(GLsizei count, GLuint *samplers);
372  void glDeleteSamplers(GLsizei count, const GLuint *samplers);
373  GLboolean glIsSampler(GLuint sampler);
374  void glBindSampler(GLuint unit, GLuint sampler);
375  void glSamplerParameteri(GLuint sampler, GLenum pname, GLint param);
376  void glSamplerParameteriv(GLuint sampler, GLenum pname, const GLint *param);
377  void glSamplerParameterf(GLuint sampler, GLenum pname, GLfloat param);
378  void glSamplerParameterfv(GLuint sampler, GLenum pname, const GLfloat *param);
379  void glGetSamplerParameteriv(GLuint sampler, GLenum pname, GLint *params);
380  void glGetSamplerParameterfv(GLuint sampler, GLenum pname, GLfloat *params);
381  void glVertexAttribDivisor(GLuint index, GLuint divisor);
382  void glBindTransformFeedback(GLenum target, GLuint id);
383  void glDeleteTransformFeedbacks(GLsizei n, const GLuint *ids);
384  void glGenTransformFeedbacks(GLsizei n, GLuint *ids);
385  GLboolean glIsTransformFeedback(GLuint id);
386  void glPauseTransformFeedback(void);
387  void glResumeTransformFeedback(void);
388  void glGetProgramBinary(GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, void *binary);
389  void glProgramBinary(GLuint program, GLenum binaryFormat, const void *binary, GLsizei length);
390  void glProgramParameteri(GLuint program, GLenum pname, GLint value);
391  void glInvalidateFramebuffer(GLenum target, GLsizei numAttachments, const GLenum *attachments);
392  void glInvalidateSubFramebuffer(GLenum target, GLsizei numAttachments, const GLenum *attachments, GLint x, GLint y, GLsizei width, GLsizei height);
395  void glGetInternalformativ(GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint *params);
396 
397  // GLES 3.1
398  void glDispatchCompute(GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z);
399  void glDispatchComputeIndirect(GLintptr indirect);
400  void glDrawArraysIndirect(GLenum mode, const void *indirect);
401  void glDrawElementsIndirect(GLenum mode, GLenum type, const void *indirect);
402  void glFramebufferParameteri(GLenum target, GLenum pname, GLint param);
403  void glGetFramebufferParameteriv(GLenum target, GLenum pname, GLint *params);
404  void glGetProgramInterfaceiv(GLuint program, GLenum programInterface, GLenum pname, GLint *params);
405  GLuint glGetProgramResourceIndex(GLuint program, GLenum programInterface, const GLchar *name);
406  void glGetProgramResourceName(GLuint program, GLenum programInterface, GLuint index, GLsizei bufSize, GLsizei *length, GLchar *name);
408  GLint glGetProgramResourceLocation(GLuint program, GLenum programInterface, const GLchar *name);
409  void glUseProgramStages(GLuint pipeline, GLbitfield stages, GLuint program);
410  void glActiveShaderProgram(GLuint pipeline, GLuint program);
411  GLuint glCreateShaderProgramv(GLenum type, GLsizei count, const GLchar *const*strings);
412  void glBindProgramPipeline(GLuint pipeline);
413  void glDeleteProgramPipelines(GLsizei n, const GLuint *pipelines);
414  void glGenProgramPipelines(GLsizei n, GLuint *pipelines);
415  GLboolean glIsProgramPipeline(GLuint pipeline);
416  void glGetProgramPipelineiv(GLuint pipeline, GLenum pname, GLint *params);
417  void glProgramUniform1i(GLuint program, GLint location, GLint v0);
418  void glProgramUniform2i(GLuint program, GLint location, GLint v0, GLint v1);
419  void glProgramUniform3i(GLuint program, GLint location, GLint v0, GLint v1, GLint v2);
420  void glProgramUniform4i(GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3);
421  void glProgramUniform1ui(GLuint program, GLint location, GLuint v0);
422  void glProgramUniform2ui(GLuint program, GLint location, GLuint v0, GLuint v1);
423  void glProgramUniform3ui(GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2);
424  void glProgramUniform4ui(GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3);
425  void glProgramUniform1f(GLuint program, GLint location, GLfloat v0);
426  void glProgramUniform2f(GLuint program, GLint location, GLfloat v0, GLfloat v1);
427  void glProgramUniform3f(GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2);
428  void glProgramUniform4f(GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3);
429  void glProgramUniform1iv(GLuint program, GLint location, GLsizei count, const GLint *value);
430  void glProgramUniform2iv(GLuint program, GLint location, GLsizei count, const GLint *value);
431  void glProgramUniform3iv(GLuint program, GLint location, GLsizei count, const GLint *value);
432  void glProgramUniform4iv(GLuint program, GLint location, GLsizei count, const GLint *value);
433  void glProgramUniform1uiv(GLuint program, GLint location, GLsizei count, const GLuint *value);
434  void glProgramUniform2uiv(GLuint program, GLint location, GLsizei count, const GLuint *value);
435  void glProgramUniform3uiv(GLuint program, GLint location, GLsizei count, const GLuint *value);
436  void glProgramUniform4uiv(GLuint program, GLint location, GLsizei count, const GLuint *value);
437  void glProgramUniform1fv(GLuint program, GLint location, GLsizei count, const GLfloat *value);
438  void glProgramUniform2fv(GLuint program, GLint location, GLsizei count, const GLfloat *value);
439  void glProgramUniform3fv(GLuint program, GLint location, GLsizei count, const GLfloat *value);
440  void glProgramUniform4fv(GLuint program, GLint location, GLsizei count, const GLfloat *value);
441  void glProgramUniformMatrix2fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
442  void glProgramUniformMatrix3fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
443  void glProgramUniformMatrix4fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
444  void glProgramUniformMatrix2x3fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
445  void glProgramUniformMatrix3x2fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
446  void glProgramUniformMatrix2x4fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
447  void glProgramUniformMatrix4x2fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
448  void glProgramUniformMatrix3x4fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
449  void glProgramUniformMatrix4x3fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
450  void glValidateProgramPipeline(GLuint pipeline);
451  void glGetProgramPipelineInfoLog(GLuint pipeline, GLsizei bufSize, GLsizei *length, GLchar *infoLog);
453  void glGetBooleani_v(GLenum target, GLuint index, GLboolean *data);
454  void glMemoryBarrier(GLbitfield barriers);
455  void glMemoryBarrierByRegion(GLbitfield barriers);
457  void glGetMultisamplefv(GLenum pname, GLuint index, GLfloat *val);
458  void glSampleMaski(GLuint maskNumber, GLbitfield mask);
459  void glGetTexLevelParameteriv(GLenum target, GLint level, GLenum pname, GLint *params);
460  void glGetTexLevelParameterfv(GLenum target, GLint level, GLenum pname, GLfloat *params);
461  void glBindVertexBuffer(GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride);
463  void glVertexAttribIFormat(GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset);
464  void glVertexAttribBinding(GLuint attribindex, GLuint bindingindex);
465  void glVertexBindingDivisor(GLuint bindingindex, GLuint divisor);
466 
467  // GLES 3.2
468  void glBlendBarrier(void);
470  void glDebugMessageControl(GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled);
471  void glDebugMessageInsert(GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *buf);
472  void glDebugMessageCallback(GLDEBUGPROC callback, const void *userParam);
474  void glPushDebugGroup(GLenum source, GLuint id, GLsizei length, const GLchar *message);
475  void glPopDebugGroup(void);
476  void glObjectLabel(GLenum identifier, GLuint name, GLsizei length, const GLchar *label);
477  void glGetObjectLabel(GLenum identifier, GLuint name, GLsizei bufSize, GLsizei *length, GLchar *label);
478  void glObjectPtrLabel(const void *ptr, GLsizei length, const GLchar *label);
479  void glGetObjectPtrLabel(const void *ptr, GLsizei bufSize, GLsizei *length, GLchar *label);
480  void glGetPointerv(GLenum pname, void **params);
481  void glEnablei(GLenum target, GLuint index);
482  void glDisablei(GLenum target, GLuint index);
483  void glBlendEquationi(GLuint buf, GLenum mode);
484  void glBlendEquationSeparatei(GLuint buf, GLenum modeRGB, GLenum modeAlpha);
485  void glBlendFunci(GLuint buf, GLenum src, GLenum dst);
486  void glBlendFuncSeparatei(GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha);
487  void glColorMaski(GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a);
488  GLboolean glIsEnabledi(GLenum target, GLuint index);
489  void glDrawElementsBaseVertex(GLenum mode, GLsizei count, GLenum type, const void *indices, GLint basevertex);
490  void glDrawRangeElementsBaseVertex(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices, GLint basevertex);
491  void glDrawElementsInstancedBaseVertex(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex);
492  void glFramebufferTexture(GLenum target, GLenum attachment, GLuint texture, GLint level);
493  void glPrimitiveBoundingBox(GLfloat minX, GLfloat minY, GLfloat minZ, GLfloat minW, GLfloat maxX, GLfloat maxY, GLfloat maxZ, GLfloat maxW);
494  GLenum glGetGraphicsResetStatus(void);
495  void glReadnPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void *data);
496  void glGetnUniformfv(GLuint program, GLint location, GLsizei bufSize, GLfloat *params);
497  void glGetnUniformiv(GLuint program, GLint location, GLsizei bufSize, GLint *params);
498  void glGetnUniformuiv(GLuint program, GLint location, GLsizei bufSize, GLuint *params);
499  void glMinSampleShading(GLfloat value);
500  void glPatchParameteri(GLenum pname, GLint value);
501  void glTexParameterIiv(GLenum target, GLenum pname, const GLint *params);
502  void glTexParameterIuiv(GLenum target, GLenum pname, const GLuint *params);
503  void glGetTexParameterIiv(GLenum target, GLenum pname, GLint *params);
504  void glGetTexParameterIuiv(GLenum target, GLenum pname, GLuint *params);
505  void glSamplerParameterIiv(GLuint sampler, GLenum pname, const GLint *param);
506  void glSamplerParameterIuiv(GLuint sampler, GLenum pname, const GLuint *param);
507  void glGetSamplerParameterIiv(GLuint sampler, GLenum pname, GLint *params);
508  void glGetSamplerParameterIuiv(GLuint sampler, GLenum pname, GLuint *params);
509  void glTexBuffer(GLenum target, GLenum internalformat, GLuint buffer);
512 
513 private:
514  static bool isInitialized(const QOpenGLExtraFunctionsPrivate *d) { return d != nullptr; }
515 };
516 
517 
518 #define QT_OPENGL_DECLARE_FUNCTIONS(ret, name, args) \
519  ret (QOPENGLF_APIENTRYP name)args;
520 #define QT_OPENGL_COUNT_FUNCTIONS(ret, name, args) +1
521 
522 #define QT_OPENGL_DECLARE(FUNCTIONS) \
523 public: \
524  struct Functions { \
525  FUNCTIONS(QT_OPENGL_DECLARE_FUNCTIONS) \
526  }; \
527  union { \
528  QFunctionPointer functions[FUNCTIONS(QT_OPENGL_COUNT_FUNCTIONS)]; \
529  Functions f; \
530  }; \
531 private: \
532  void init(QOpenGLContext *context);
533 
535 {
536 public:
538 
539  // GLES3
540 #define QT_OPENGL_EXTRA_FUNCTIONS(F) \
541  F(void, ReadBuffer, (GLenum mode)) \
542  F(void, DrawRangeElements, (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices)) \
543  F(void, TexImage3D, (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels)) \
544  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)) \
545  F(void, CopyTexSubImage3D, (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height)) \
546  F(void, CompressedTexImage3D, (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *data)) \
547  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)) \
548  F(void, GenQueries, (GLsizei n, GLuint *ids)) \
549  F(void, DeleteQueries, (GLsizei n, const GLuint *ids)) \
550  F(GLboolean, IsQuery, (GLuint id)) \
551  F(void, BeginQuery, (GLenum target, GLuint id)) \
552  F(void, EndQuery, (GLenum target)) \
553  F(void, GetQueryiv, (GLenum target, GLenum pname, GLint *params)) \
554  F(void, GetQueryObjectuiv, (GLuint id, GLenum pname, GLuint *params)) \
555  F(GLboolean, UnmapBuffer, (GLenum target)) \
556  F(void, GetBufferPointerv, (GLenum target, GLenum pname, void **params)) \
557  F(void, DrawBuffers, (GLsizei n, const GLenum *bufs)) \
558  F(void, UniformMatrix2x3fv, (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)) \
559  F(void, UniformMatrix3x2fv, (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)) \
560  F(void, UniformMatrix2x4fv, (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)) \
561  F(void, UniformMatrix4x2fv, (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)) \
562  F(void, UniformMatrix3x4fv, (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)) \
563  F(void, UniformMatrix4x3fv, (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)) \
564  F(void, BlitFramebuffer, (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter)) \
565  F(void, RenderbufferStorageMultisample, (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height)) \
566  F(void, FramebufferTextureLayer, (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer)) \
567  F(void *,MapBufferRange, (GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access)) \
568  F(void, FlushMappedBufferRange, (GLenum target, GLintptr offset, GLsizeiptr length)) \
569  F(void, BindVertexArray, (GLuint array)) \
570  F(void, DeleteVertexArrays, (GLsizei n, const GLuint *arrays)) \
571  F(void, GenVertexArrays, (GLsizei n, GLuint *arrays)) \
572  F(GLboolean, IsVertexArray, (GLuint array)) \
573  F(void, GetIntegeri_v, (GLenum target, GLuint index, GLint *data)) \
574  F(void, BeginTransformFeedback, (GLenum primitiveMode)) \
575  F(void, EndTransformFeedback, (void)) \
576  F(void, BindBufferRange, (GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size)) \
577  F(void, BindBufferBase, (GLenum target, GLuint index, GLuint buffer)) \
578  F(void, TransformFeedbackVaryings, (GLuint program, GLsizei count, const GLchar *const*varyings, GLenum bufferMode)) \
579  F(void, GetTransformFeedbackVarying, (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name)) \
580  F(void, VertexAttribIPointer, (GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer)) \
581  F(void, GetVertexAttribIiv, (GLuint index, GLenum pname, GLint *params)) \
582  F(void, GetVertexAttribIuiv, (GLuint index, GLenum pname, GLuint *params)) \
583  F(void, VertexAttribI4i, (GLuint index, GLint x, GLint y, GLint z, GLint w)) \
584  F(void, VertexAttribI4ui, (GLuint index, GLuint x, GLuint y, GLuint z, GLuint w)) \
585  F(void, VertexAttribI4iv, (GLuint index, const GLint *v)) \
586  F(void, VertexAttribI4uiv, (GLuint index, const GLuint *v)) \
587  F(void, GetUniformuiv, (GLuint program, GLint location, GLuint *params)) \
588  F(GLint, GetFragDataLocation, (GLuint program, const GLchar *name)) \
589  F(void, Uniform1ui, (GLint location, GLuint v0)) \
590  F(void, Uniform2ui, (GLint location, GLuint v0, GLuint v1)) \
591  F(void, Uniform3ui, (GLint location, GLuint v0, GLuint v1, GLuint v2)) \
592  F(void, Uniform4ui, (GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3)) \
593  F(void, Uniform1uiv, (GLint location, GLsizei count, const GLuint *value)) \
594  F(void, Uniform2uiv, (GLint location, GLsizei count, const GLuint *value)) \
595  F(void, Uniform3uiv, (GLint location, GLsizei count, const GLuint *value)) \
596  F(void, Uniform4uiv, (GLint location, GLsizei count, const GLuint *value)) \
597  F(void, ClearBufferiv, (GLenum buffer, GLint drawbuffer, const GLint *value)) \
598  F(void, ClearBufferuiv, (GLenum buffer, GLint drawbuffer, const GLuint *value)) \
599  F(void, ClearBufferfv, (GLenum buffer, GLint drawbuffer, const GLfloat *value)) \
600  F(void, ClearBufferfi, (GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil)) \
601  F(const GLubyte *, GetStringi, (GLenum name, GLuint index)) \
602  F(void, CopyBufferSubData, (GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size)) \
603  F(void, GetUniformIndices, (GLuint program, GLsizei uniformCount, const GLchar *const*uniformNames, GLuint *uniformIndices)) \
604  F(void, GetActiveUniformsiv, (GLuint program, GLsizei uniformCount, const GLuint *uniformIndices, GLenum pname, GLint *params)) \
605  F(GLuint, GetUniformBlockIndex, (GLuint program, const GLchar *uniformBlockName)) \
606  F(void, GetActiveUniformBlockiv, (GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint *params)) \
607  F(void, GetActiveUniformBlockName, (GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformBlockName)) \
608  F(void, UniformBlockBinding, (GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding)) \
609  F(void, DrawArraysInstanced, (GLenum mode, GLint first, GLsizei count, GLsizei instancecount)) \
610  F(void, DrawElementsInstanced, (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount)) \
611  F(GLsync, FenceSync, (GLenum condition, GLbitfield flags)) \
612  F(GLboolean, IsSync, (GLsync sync)) \
613  F(void, DeleteSync, (GLsync sync)) \
614  F(GLenum, ClientWaitSync, (GLsync sync, GLbitfield flags, GLuint64 timeout)) \
615  F(void, WaitSync, (GLsync sync, GLbitfield flags, GLuint64 timeout)) \
616  F(void, GetInteger64v, (GLenum pname, GLint64 *data)) \
617  F(void, GetSynciv, (GLsync sync, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values)) \
618  F(void, GetInteger64i_v, (GLenum target, GLuint index, GLint64 *data)) \
619  F(void, GetBufferParameteri64v, (GLenum target, GLenum pname, GLint64 *params)) \
620  F(void, GenSamplers, (GLsizei count, GLuint *samplers)) \
621  F(void, DeleteSamplers, (GLsizei count, const GLuint *samplers)) \
622  F(GLboolean, IsSampler, (GLuint sampler)) \
623  F(void, BindSampler, (GLuint unit, GLuint sampler)) \
624  F(void, SamplerParameteri, (GLuint sampler, GLenum pname, GLint param)) \
625  F(void, SamplerParameteriv, (GLuint sampler, GLenum pname, const GLint *param)) \
626  F(void, SamplerParameterf, (GLuint sampler, GLenum pname, GLfloat param)) \
627  F(void, SamplerParameterfv, (GLuint sampler, GLenum pname, const GLfloat *param)) \
628  F(void, GetSamplerParameteriv, (GLuint sampler, GLenum pname, GLint *params)) \
629  F(void, GetSamplerParameterfv, (GLuint sampler, GLenum pname, GLfloat *params)) \
630  F(void, VertexAttribDivisor, (GLuint index, GLuint divisor)) \
631  F(void, BindTransformFeedback, (GLenum target, GLuint id)) \
632  F(void, DeleteTransformFeedbacks, (GLsizei n, const GLuint *ids)) \
633  F(void, GenTransformFeedbacks, (GLsizei n, GLuint *ids)) \
634  F(GLboolean, IsTransformFeedback, (GLuint id)) \
635  F(void, PauseTransformFeedback, (void)) \
636  F(void, ResumeTransformFeedback, (void)) \
637  F(void, GetProgramBinary, (GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, void *binary)) \
638  F(void, ProgramBinary, (GLuint program, GLenum binaryFormat, const void *binary, GLsizei length)) \
639  F(void, ProgramParameteri, (GLuint program, GLenum pname, GLint value)) \
640  F(void, InvalidateFramebuffer, (GLenum target, GLsizei numAttachments, const GLenum *attachments)) \
641  F(void, InvalidateSubFramebuffer, (GLenum target, GLsizei numAttachments, const GLenum *attachments, GLint x, GLint y, GLsizei width, GLsizei height)) \
642  F(void, TexStorage2D, (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height)) \
643  F(void, TexStorage3D, (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth)) \
644  F(void, GetInternalformativ, (GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint *params)) \
645  F(void, DispatchCompute, (GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z)) \
646  F(void, DispatchComputeIndirect, (GLintptr indirect)) \
647  F(void, DrawArraysIndirect, (GLenum mode, const void *indirect)) \
648  F(void, DrawElementsIndirect, (GLenum mode, GLenum type, const void *indirect)) \
649  F(void, FramebufferParameteri, (GLenum target, GLenum pname, GLint param)) \
650  F(void, GetFramebufferParameteriv, (GLenum target, GLenum pname, GLint *params)) \
651  F(void, GetProgramInterfaceiv, (GLuint program, GLenum programInterface, GLenum pname, GLint *params)) \
652  F(GLuint, GetProgramResourceIndex, (GLuint program, GLenum programInterface, const GLchar *name)) \
653  F(void, GetProgramResourceName, (GLuint program, GLenum programInterface, GLuint index, GLsizei bufSize, GLsizei *length, GLchar *name)) \
654  F(void, GetProgramResourceiv, (GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum *props, GLsizei bufSize, GLsizei *length, GLint *params)) \
655  F(GLint, GetProgramResourceLocation, (GLuint program, GLenum programInterface, const GLchar *name)) \
656  F(void, UseProgramStages, (GLuint pipeline, GLbitfield stages, GLuint program)) \
657  F(void, ActiveShaderProgram, (GLuint pipeline, GLuint program)) \
658  F(GLuint, CreateShaderProgramv, (GLenum type, GLsizei count, const GLchar *const*strings)) \
659  F(void, BindProgramPipeline, (GLuint pipeline)) \
660  F(void, DeleteProgramPipelines, (GLsizei n, const GLuint *pipelines)) \
661  F(void, GenProgramPipelines, (GLsizei n, GLuint *pipelines)) \
662  F(GLboolean, IsProgramPipeline, (GLuint pipeline)) \
663  F(void, GetProgramPipelineiv, (GLuint pipeline, GLenum pname, GLint *params)) \
664  F(void, ProgramUniform1i, (GLuint program, GLint location, GLint v0)) \
665  F(void, ProgramUniform2i, (GLuint program, GLint location, GLint v0, GLint v1)) \
666  F(void, ProgramUniform3i, (GLuint program, GLint location, GLint v0, GLint v1, GLint v2)) \
667  F(void, ProgramUniform4i, (GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3)) \
668  F(void, ProgramUniform1ui, (GLuint program, GLint location, GLuint v0)) \
669  F(void, ProgramUniform2ui, (GLuint program, GLint location, GLuint v0, GLuint v1)) \
670  F(void, ProgramUniform3ui, (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2)) \
671  F(void, ProgramUniform4ui, (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3)) \
672  F(void, ProgramUniform1f, (GLuint program, GLint location, GLfloat v0)) \
673  F(void, ProgramUniform2f, (GLuint program, GLint location, GLfloat v0, GLfloat v1)) \
674  F(void, ProgramUniform3f, (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2)) \
675  F(void, ProgramUniform4f, (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3)) \
676  F(void, ProgramUniform1iv, (GLuint program, GLint location, GLsizei count, const GLint *value)) \
677  F(void, ProgramUniform2iv, (GLuint program, GLint location, GLsizei count, const GLint *value)) \
678  F(void, ProgramUniform3iv, (GLuint program, GLint location, GLsizei count, const GLint *value)) \
679  F(void, ProgramUniform4iv, (GLuint program, GLint location, GLsizei count, const GLint *value)) \
680  F(void, ProgramUniform1uiv, (GLuint program, GLint location, GLsizei count, const GLuint *value)) \
681  F(void, ProgramUniform2uiv, (GLuint program, GLint location, GLsizei count, const GLuint *value)) \
682  F(void, ProgramUniform3uiv, (GLuint program, GLint location, GLsizei count, const GLuint *value)) \
683  F(void, ProgramUniform4uiv, (GLuint program, GLint location, GLsizei count, const GLuint *value)) \
684  F(void, ProgramUniform1fv, (GLuint program, GLint location, GLsizei count, const GLfloat *value)) \
685  F(void, ProgramUniform2fv, (GLuint program, GLint location, GLsizei count, const GLfloat *value)) \
686  F(void, ProgramUniform3fv, (GLuint program, GLint location, GLsizei count, const GLfloat *value)) \
687  F(void, ProgramUniform4fv, (GLuint program, GLint location, GLsizei count, const GLfloat *value)) \
688  F(void, ProgramUniformMatrix2fv, (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)) \
689  F(void, ProgramUniformMatrix3fv, (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)) \
690  F(void, ProgramUniformMatrix4fv, (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)) \
691  F(void, ProgramUniformMatrix2x3fv, (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)) \
692  F(void, ProgramUniformMatrix3x2fv, (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)) \
693  F(void, ProgramUniformMatrix2x4fv, (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)) \
694  F(void, ProgramUniformMatrix4x2fv, (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)) \
695  F(void, ProgramUniformMatrix3x4fv, (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)) \
696  F(void, ProgramUniformMatrix4x3fv, (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)) \
697  F(void, ValidateProgramPipeline, (GLuint pipeline)) \
698  F(void, GetProgramPipelineInfoLog, (GLuint pipeline, GLsizei bufSize, GLsizei *length, GLchar *infoLog)) \
699  F(void, BindImageTexture, (GLuint unit, GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum access, GLenum format)) \
700  F(void, GetBooleani_v, (GLenum target, GLuint index, GLboolean *data)) \
701  F(void, MemoryBarrier, (GLbitfield barriers)) \
702  F(void, MemoryBarrierByRegion, (GLbitfield barriers)) \
703  F(void, TexStorage2DMultisample, (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations)) \
704  F(void, GetMultisamplefv, (GLenum pname, GLuint index, GLfloat *val)) \
705  F(void, SampleMaski, (GLuint maskNumber, GLbitfield mask)) \
706  F(void, GetTexLevelParameteriv, (GLenum target, GLint level, GLenum pname, GLint *params)) \
707  F(void, GetTexLevelParameterfv, (GLenum target, GLint level, GLenum pname, GLfloat *params)) \
708  F(void, BindVertexBuffer, (GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride)) \
709  F(void, VertexAttribFormat, (GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset)) \
710  F(void, VertexAttribIFormat, (GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset)) \
711  F(void, VertexAttribBinding, (GLuint attribindex, GLuint bindingindex)) \
712  F(void, VertexBindingDivisor, (GLuint bindingindex, GLuint divisor)) \
713  F(void, BlendBarrier, (void)) \
714  F(void, BlendEquationSeparatei, (GLuint buf, GLenum modeRGB, GLenum modeAlpha)) \
715  F(void, BlendEquationi, (GLuint buf, GLenum mode)) \
716  F(void, BlendFuncSeparatei, (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha)) \
717  F(void, BlendFunci, (GLuint buf, GLenum src, GLenum dst)) \
718  F(void, ColorMaski, (GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a)) \
719  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)) \
720  F(void, DebugMessageCallback, (GLDEBUGPROC callback, const void * userParam)) \
721  F(void, DebugMessageControl, (GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint * ids, GLboolean enabled)) \
722  F(void, DebugMessageInsert, (GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar * buf)) \
723  F(void, Disablei, (GLenum target, GLuint index)) \
724  F(void, DrawElementsBaseVertex, (GLenum mode, GLsizei count, GLenum type, const void * indices, GLint basevertex)) \
725  F(void, DrawElementsInstancedBaseVertex, (GLenum mode, GLsizei count, GLenum type, const void * indices, GLsizei instancecount, GLint basevertex)) \
726  F(void, DrawRangeElementsBaseVertex, (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void * indices, GLint basevertex)) \
727  F(void, Enablei, (GLenum target, GLuint index)) \
728  F(void, FramebufferTexture, (GLenum target, GLenum attachment, GLuint texture, GLint level)) \
729  F(GLuint, GetDebugMessageLog, (GLuint count, GLsizei bufSize, GLenum* sources, GLenum* types, GLuint* ids, GLenum* severities, GLsizei* lengths, GLchar* messageLog)) \
730  F(GLenum, GetGraphicsResetStatus, (void)) \
731  F(void, GetObjectLabel, (GLenum identifier, GLuint name, GLsizei bufSize, GLsizei* length, GLchar* label)) \
732  F(void, GetObjectPtrLabel, (const void * ptr, GLsizei bufSize, GLsizei* length, GLchar* label)) \
733  F(void, GetPointerv, (GLenum pname, void ** params)) \
734  F(void, GetSamplerParameterIiv, (GLuint sampler, GLenum pname, GLint* params)) \
735  F(void, GetSamplerParameterIuiv, (GLuint sampler, GLenum pname, GLuint* params)) \
736  F(void, GetTexParameterIiv, (GLenum target, GLenum pname, GLint* params)) \
737  F(void, GetTexParameterIuiv, (GLenum target, GLenum pname, GLuint* params)) \
738  F(void, GetnUniformfv, (GLuint program, GLint location, GLsizei bufSize, GLfloat* params)) \
739  F(void, GetnUniformiv, (GLuint program, GLint location, GLsizei bufSize, GLint* params)) \
740  F(void, GetnUniformuiv, (GLuint program, GLint location, GLsizei bufSize, GLuint* params)) \
741  F(GLboolean, IsEnabledi, (GLenum target, GLuint index)) \
742  F(void, MinSampleShading, (GLfloat value)) \
743  F(void, ObjectLabel, (GLenum identifier, GLuint name, GLsizei length, const GLchar * label)) \
744  F(void, ObjectPtrLabel, (const void * ptr, GLsizei length, const GLchar * label)) \
745  F(void, PatchParameteri, (GLenum pname, GLint value)) \
746  F(void, PopDebugGroup, (void)) \
747  F(void, PrimitiveBoundingBox, (GLfloat minX, GLfloat minY, GLfloat minZ, GLfloat minW, GLfloat maxX, GLfloat maxY, GLfloat maxZ, GLfloat maxW)) \
748  F(void, PushDebugGroup, (GLenum source, GLuint id, GLsizei length, const GLchar * message)) \
749  F(void, ReadnPixels, (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void * data)) \
750  F(void, SamplerParameterIiv, (GLuint sampler, GLenum pname, const GLint * param)) \
751  F(void, SamplerParameterIuiv, (GLuint sampler, GLenum pname, const GLuint * param)) \
752  F(void, TexBuffer, (GLenum target, GLenum internalformat, GLuint buffer)) \
753  F(void, TexBufferRange, (GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size)) \
754  F(void, TexParameterIiv, (GLenum target, GLenum pname, const GLint * params)) \
755  F(void, TexParameterIuiv, (GLenum target, GLenum pname, const GLuint * params)) \
756  F(void, TexStorage3DMultisample, (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations)) \
757 
759 };
760 
761 // GLES 3.0 and 3.1
762 
764 {
766  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
767  d->f.BeginQuery(target, id);
769 }
770 
772 {
774  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
775  d->f.BeginTransformFeedback(primitiveMode);
777 }
778 
780 {
782  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
783  d->f.BindBufferBase(target, index, buffer);
785 }
786 
788 {
790  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
791  d->f.BindBufferRange(target, index, buffer, offset, size);
793 }
794 
796 {
798  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
799  d->f.BindSampler(unit, sampler);
801 }
802 
804 {
806  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
807  d->f.BindTransformFeedback(target, id);
809 }
810 
812 {
814  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
815  d->f.BindVertexArray(array);
817 }
818 
820 {
822  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
823  d->f.BlitFramebuffer(srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter);
825 }
826 
828 {
830  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
831  d->f.ClearBufferfi(buffer, drawbuffer, depth, stencil);
833 }
834 
836 {
838  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
839  d->f.ClearBufferfv(buffer, drawbuffer, value);
841 }
842 
844 {
846  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
847  d->f.ClearBufferiv(buffer, drawbuffer, value);
849 }
850 
852 {
854  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
855  d->f.ClearBufferuiv(buffer, drawbuffer, value);
857 }
858 
860 {
862  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
863  GLenum result = d->f.ClientWaitSync(sync, flags, timeout);
865  return result;
866 }
867 
869 {
871  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
872  d->f.CompressedTexImage3D(target, level, internalformat, width, height, depth, border, imageSize, data);
874 }
875 
877 {
879  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
880  d->f.CompressedTexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, data);
882 }
883 
885 {
887  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
888  d->f.CopyBufferSubData(readTarget, writeTarget, readOffset, writeOffset, size);
890 }
891 
893 {
895  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
896  d->f.CopyTexSubImage3D(target, level, xoffset, yoffset, zoffset, x, y, width, height);
898 }
899 
901 {
903  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
904  d->f.DeleteQueries(n, ids);
906 }
907 
909 {
911  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
912  d->f.DeleteSamplers(count, samplers);
914 }
915 
917 {
919  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
920  d->f.DeleteSync(sync);
922 }
923 
925 {
927  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
928  d->f.DeleteTransformFeedbacks(n, ids);
930 }
931 
933 {
935  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
936  d->f.DeleteVertexArrays(n, arrays);
938 }
939 
941 {
943  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
944  d->f.DrawArraysInstanced(mode, first, count, instancecount);
946 }
947 
949 {
951  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
952  d->f.DrawBuffers(n, bufs);
954 }
955 
957 {
959  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
960  d->f.DrawElementsInstanced(mode, count, type, indices, instancecount);
962 }
963 
965 {
967  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
968  d->f.DrawRangeElements(mode, start, end, count, type, indices);
970 }
971 
973 {
975  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
976  d->f.EndQuery(target);
978 }
979 
981 {
983  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
984  d->f.EndTransformFeedback();
986 }
987 
989 {
991  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
992  GLsync result = d->f.FenceSync(condition, flags);
994  return result;
995 }
996 
998 {
1000  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1001  d->f.FlushMappedBufferRange(target, offset, length);
1003 }
1004 
1006 {
1007  Q_D(QOpenGLExtraFunctions);
1008  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1009  d->f.FramebufferTextureLayer(target, attachment, texture, level, layer);
1011 }
1012 
1014 {
1015  Q_D(QOpenGLExtraFunctions);
1016  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1017  d->f.GenQueries(n, ids);
1019 }
1020 
1022 {
1023  Q_D(QOpenGLExtraFunctions);
1024  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1025  d->f.GenSamplers(count, samplers);
1027 }
1028 
1030 {
1031  Q_D(QOpenGLExtraFunctions);
1032  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1033  d->f.GenTransformFeedbacks(n, ids);
1035 }
1036 
1038 {
1039  Q_D(QOpenGLExtraFunctions);
1040  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1041  d->f.GenVertexArrays(n, arrays);
1043 }
1044 
1046 {
1047  Q_D(QOpenGLExtraFunctions);
1048  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1049  d->f.GetActiveUniformBlockName(program, uniformBlockIndex, bufSize, length, uniformBlockName);
1051 }
1052 
1054 {
1055  Q_D(QOpenGLExtraFunctions);
1056  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1057  d->f.GetActiveUniformBlockiv(program, uniformBlockIndex, pname, params);
1059 }
1060 
1062 {
1063  Q_D(QOpenGLExtraFunctions);
1064  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1065  d->f.GetActiveUniformsiv(program, uniformCount, uniformIndices, pname, params);
1067 }
1068 
1070 {
1071  Q_D(QOpenGLExtraFunctions);
1072  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1073  d->f.GetBufferParameteri64v(target, pname, params);
1075 }
1076 
1078 {
1079  Q_D(QOpenGLExtraFunctions);
1080  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1081  d->f.GetBufferPointerv(target, pname, params);
1083 }
1084 
1086 {
1087  Q_D(QOpenGLExtraFunctions);
1088  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1089  GLint result = d->f.GetFragDataLocation(program, name);
1091  return result;
1092 }
1093 
1095 {
1096  Q_D(QOpenGLExtraFunctions);
1097  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1098  d->f.GetInteger64i_v(target, index, data);
1100 }
1101 
1103 {
1104  Q_D(QOpenGLExtraFunctions);
1105  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1106  d->f.GetInteger64v(pname, data);
1108 }
1109 
1111 {
1112  Q_D(QOpenGLExtraFunctions);
1113  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1114  d->f.GetIntegeri_v(target, index, data);
1116 }
1117 
1119 {
1120  Q_D(QOpenGLExtraFunctions);
1121  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1122  d->f.GetInternalformativ(target, internalformat, pname, bufSize, params);
1124 }
1125 
1127 {
1128  Q_D(QOpenGLExtraFunctions);
1129  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1130  d->f.GetProgramBinary(program, bufSize, length, binaryFormat, binary);
1132 }
1133 
1135 {
1136  Q_D(QOpenGLExtraFunctions);
1137  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1138  d->f.GetQueryObjectuiv(id, pname, params);
1140 }
1141 
1143 {
1144  Q_D(QOpenGLExtraFunctions);
1145  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1146  d->f.GetQueryiv(target, pname, params);
1148 }
1149 
1151 {
1152  Q_D(QOpenGLExtraFunctions);
1153  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1154  d->f.GetSamplerParameterfv(sampler, pname, params);
1156 }
1157 
1159 {
1160  Q_D(QOpenGLExtraFunctions);
1161  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1162  d->f.GetSamplerParameteriv(sampler, pname, params);
1164 }
1165 
1167 {
1168  Q_D(QOpenGLExtraFunctions);
1169  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1170  const GLubyte * result = d->f.GetStringi(name, index);
1172  return result;
1173 }
1174 
1176 {
1177  Q_D(QOpenGLExtraFunctions);
1178  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1179  d->f.GetSynciv(sync, pname, bufSize, length, values);
1181 }
1182 
1184 {
1185  Q_D(QOpenGLExtraFunctions);
1186  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1187  d->f.GetTransformFeedbackVarying(program, index, bufSize, length, size, type, name);
1189 }
1190 
1192 {
1193  Q_D(QOpenGLExtraFunctions);
1194  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1195  GLuint result = d->f.GetUniformBlockIndex(program, uniformBlockName);
1197  return result;
1198 }
1199 
1201 {
1202  Q_D(QOpenGLExtraFunctions);
1203  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1204  d->f.GetUniformIndices(program, uniformCount, uniformNames, uniformIndices);
1206 }
1207 
1209 {
1210  Q_D(QOpenGLExtraFunctions);
1211  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1212  d->f.GetUniformuiv(program, location, params);
1214 }
1215 
1217 {
1218  Q_D(QOpenGLExtraFunctions);
1219  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1220  d->f.GetVertexAttribIiv(index, pname, params);
1222 }
1223 
1225 {
1226  Q_D(QOpenGLExtraFunctions);
1227  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1228  d->f.GetVertexAttribIuiv(index, pname, params);
1230 }
1231 
1233 {
1234  Q_D(QOpenGLExtraFunctions);
1235  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1236  d->f.InvalidateFramebuffer(target, numAttachments, attachments);
1238 }
1239 
1241 {
1242  Q_D(QOpenGLExtraFunctions);
1243  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1244  d->f.InvalidateSubFramebuffer(target, numAttachments, attachments, x, y, width, height);
1246 }
1247 
1249 {
1250  Q_D(QOpenGLExtraFunctions);
1251  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1252  GLboolean result = d->f.IsQuery(id);
1254  return result;
1255 }
1256 
1258 {
1259  Q_D(QOpenGLExtraFunctions);
1260  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1261  GLboolean result = d->f.IsSampler(sampler);
1263  return result;
1264 }
1265 
1267 {
1268  Q_D(QOpenGLExtraFunctions);
1269  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1270  GLboolean result = d->f.IsSync(sync);
1272  return result;
1273 }
1274 
1276 {
1277  Q_D(QOpenGLExtraFunctions);
1278  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1279  GLboolean result = d->f.IsTransformFeedback(id);
1281  return result;
1282 }
1283 
1285 {
1286  Q_D(QOpenGLExtraFunctions);
1287  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1288  GLboolean result = d->f.IsVertexArray(array);
1290  return result;
1291 }
1292 
1294 {
1295  Q_D(QOpenGLExtraFunctions);
1296  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1297  void *result = d->f.MapBufferRange(target, offset, length, access);
1299  return result;
1300 }
1301 
1303 {
1304  Q_D(QOpenGLExtraFunctions);
1305  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1306  d->f.PauseTransformFeedback();
1308 }
1309 
1311 {
1312  Q_D(QOpenGLExtraFunctions);
1313  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1314  d->f.ProgramBinary(program, binaryFormat, binary, length);
1316 }
1317 
1319 {
1320  Q_D(QOpenGLExtraFunctions);
1321  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1322  d->f.ProgramParameteri(program, pname, value);
1324 }
1325 
1327 {
1328  Q_D(QOpenGLExtraFunctions);
1329  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1330  d->f.ReadBuffer(src);
1332 }
1333 
1335 {
1336  Q_D(QOpenGLExtraFunctions);
1337  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1338  d->f.RenderbufferStorageMultisample(target, samples, internalformat, width, height);
1340 }
1341 
1343 {
1344  Q_D(QOpenGLExtraFunctions);
1345  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1346  d->f.ResumeTransformFeedback();
1348 }
1349 
1351 {
1352  Q_D(QOpenGLExtraFunctions);
1353  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1354  d->f.SamplerParameterf(sampler, pname, param);
1356 }
1357 
1359 {
1360  Q_D(QOpenGLExtraFunctions);
1361  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1362  d->f.SamplerParameterfv(sampler, pname, param);
1364 }
1365 
1367 {
1368  Q_D(QOpenGLExtraFunctions);
1369  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1370  d->f.SamplerParameteri(sampler, pname, param);
1372 }
1373 
1375 {
1376  Q_D(QOpenGLExtraFunctions);
1377  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1378  d->f.SamplerParameteriv(sampler, pname, param);
1380 }
1381 
1383 {
1384  Q_D(QOpenGLExtraFunctions);
1385  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1386  d->f.TexImage3D(target, level, internalformat, width, height, depth, border, format, type, pixels);
1388 }
1389 
1391 {
1392  Q_D(QOpenGLExtraFunctions);
1393  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1394  d->f.TexStorage2D(target, levels, internalformat, width, height);
1396 }
1397 
1399 {
1400  Q_D(QOpenGLExtraFunctions);
1401  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1402  d->f.TexStorage3D(target, levels, internalformat, width, height, depth);
1404 }
1405 
1407 {
1408  Q_D(QOpenGLExtraFunctions);
1409  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1410  d->f.TexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels);
1412 }
1413 
1415 {
1416  Q_D(QOpenGLExtraFunctions);
1417  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1418  d->f.TransformFeedbackVaryings(program, count, varyings, bufferMode);
1420 }
1421 
1423 {
1424  Q_D(QOpenGLExtraFunctions);
1425  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1426  d->f.Uniform1ui(location, v0);
1428 }
1429 
1431 {
1432  Q_D(QOpenGLExtraFunctions);
1433  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1434  d->f.Uniform1uiv(location, count, value);
1436 }
1437 
1439 {
1440  Q_D(QOpenGLExtraFunctions);
1441  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1442  d->f.Uniform2ui(location, v0, v1);
1444 }
1445 
1447 {
1448  Q_D(QOpenGLExtraFunctions);
1449  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1450  d->f.Uniform2uiv(location, count, value);
1452 }
1453 
1455 {
1456  Q_D(QOpenGLExtraFunctions);
1457  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1458  d->f.Uniform3ui(location, v0, v1, v2);
1460 }
1461 
1463 {
1464  Q_D(QOpenGLExtraFunctions);
1465  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1466  d->f.Uniform3uiv(location, count, value);
1468 }
1469 
1471 {
1472  Q_D(QOpenGLExtraFunctions);
1473  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1474  d->f.Uniform4ui(location, v0, v1, v2, v3);
1476 }
1477 
1479 {
1480  Q_D(QOpenGLExtraFunctions);
1481  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1482  d->f.Uniform4uiv(location, count, value);
1484 }
1485 
1487 {
1488  Q_D(QOpenGLExtraFunctions);
1489  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1490  d->f.UniformBlockBinding(program, uniformBlockIndex, uniformBlockBinding);
1492 }
1493 
1495 {
1496  Q_D(QOpenGLExtraFunctions);
1497  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1498  d->f.UniformMatrix2x3fv(location, count, transpose, value);
1500 }
1501 
1503 {
1504  Q_D(QOpenGLExtraFunctions);
1505  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1506  d->f.UniformMatrix2x4fv(location, count, transpose, value);
1508 }
1509 
1511 {
1512  Q_D(QOpenGLExtraFunctions);
1513  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1514  d->f.UniformMatrix3x2fv(location, count, transpose, value);
1516 }
1517 
1519 {
1520  Q_D(QOpenGLExtraFunctions);
1521  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1522  d->f.UniformMatrix3x4fv(location, count, transpose, value);
1524 }
1525 
1527 {
1528  Q_D(QOpenGLExtraFunctions);
1529  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1530  d->f.UniformMatrix4x2fv(location, count, transpose, value);
1532 }
1533 
1535 {
1536  Q_D(QOpenGLExtraFunctions);
1537  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1538  d->f.UniformMatrix4x3fv(location, count, transpose, value);
1540 }
1541 
1543 {
1544  Q_D(QOpenGLExtraFunctions);
1545  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1546  GLboolean result = d->f.UnmapBuffer(target);
1548  return result;
1549 }
1550 
1552 {
1553  Q_D(QOpenGLExtraFunctions);
1554  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1555  d->f.VertexAttribDivisor(index, divisor);
1557 }
1558 
1560 {
1561  Q_D(QOpenGLExtraFunctions);
1562  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1563  d->f.VertexAttribI4i(index, x, y, z, w);
1565 }
1566 
1568 {
1569  Q_D(QOpenGLExtraFunctions);
1570  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1571  d->f.VertexAttribI4iv(index, v);
1573 }
1574 
1576 {
1577  Q_D(QOpenGLExtraFunctions);
1578  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1579  d->f.VertexAttribI4ui(index, x, y, z, w);
1581 }
1582 
1584 {
1585  Q_D(QOpenGLExtraFunctions);
1586  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1587  d->f.VertexAttribI4uiv(index, v);
1589 }
1590 
1592 {
1593  Q_D(QOpenGLExtraFunctions);
1594  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1595  d->f.VertexAttribIPointer(index, size, type, stride, pointer);
1597 }
1598 
1600 {
1601  Q_D(QOpenGLExtraFunctions);
1602  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1603  d->f.WaitSync(sync, flags, timeout);
1605 }
1606 
1608 {
1609  Q_D(QOpenGLExtraFunctions);
1610  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1611  d->f.ActiveShaderProgram(pipeline, program);
1613 }
1614 
1616 {
1617  Q_D(QOpenGLExtraFunctions);
1618  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1619  d->f.BindImageTexture(unit, texture, level, layered, layer, access, format);
1621 }
1622 
1624 {
1625  Q_D(QOpenGLExtraFunctions);
1626  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1627  d->f.BindProgramPipeline(pipeline);
1629 }
1630 
1632 {
1633  Q_D(QOpenGLExtraFunctions);
1634  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1635  d->f.BindVertexBuffer(bindingindex, buffer, offset, stride);
1637 }
1638 
1640 {
1641  Q_D(QOpenGLExtraFunctions);
1642  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1643  GLuint result = d->f.CreateShaderProgramv(type, count, strings);
1645  return result;
1646 }
1647 
1649 {
1650  Q_D(QOpenGLExtraFunctions);
1651  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1652  d->f.DeleteProgramPipelines(n, pipelines);
1654 }
1655 
1657 {
1658  Q_D(QOpenGLExtraFunctions);
1659  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1660  d->f.DispatchCompute(num_groups_x, num_groups_y, num_groups_z);
1662 }
1663 
1665 {
1666  Q_D(QOpenGLExtraFunctions);
1667  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1668  d->f.DispatchComputeIndirect(indirect);
1670 }
1671 
1673 {
1674  Q_D(QOpenGLExtraFunctions);
1675  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1676  d->f.DrawArraysIndirect(mode, indirect);
1678 }
1679 
1681 {
1682  Q_D(QOpenGLExtraFunctions);
1683  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1684  d->f.DrawElementsIndirect(mode, type, indirect);
1686 }
1687 
1689 {
1690  Q_D(QOpenGLExtraFunctions);
1691  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1692  d->f.FramebufferParameteri(target, pname, param);
1694 }
1695 
1697 {
1698  Q_D(QOpenGLExtraFunctions);
1699  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1700  d->f.GenProgramPipelines(n, pipelines);
1702 }
1703 
1705 {
1706  Q_D(QOpenGLExtraFunctions);
1707  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1708  d->f.GetBooleani_v(target, index, data);
1710 }
1711 
1713 {
1714  Q_D(QOpenGLExtraFunctions);
1715  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1716  d->f.GetFramebufferParameteriv(target, pname, params);
1718 }
1719 
1721 {
1722  Q_D(QOpenGLExtraFunctions);
1723  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1724  d->f.GetMultisamplefv(pname, index, val);
1726 }
1727 
1729 {
1730  Q_D(QOpenGLExtraFunctions);
1731  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1732  d->f.GetProgramInterfaceiv(program, programInterface, pname, params);
1734 }
1735 
1737 {
1738  Q_D(QOpenGLExtraFunctions);
1739  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1740  d->f.GetProgramPipelineInfoLog(pipeline, bufSize, length, infoLog);
1742 }
1743 
1745 {
1746  Q_D(QOpenGLExtraFunctions);
1747  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1748  d->f.GetProgramPipelineiv(pipeline, pname, params);
1750 }
1751 
1753 {
1754  Q_D(QOpenGLExtraFunctions);
1755  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1756  GLuint result = d->f.GetProgramResourceIndex(program, programInterface, name);
1758  return result;
1759 }
1760 
1762 {
1763  Q_D(QOpenGLExtraFunctions);
1764  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1765  GLint result = d->f.GetProgramResourceLocation(program, programInterface, name);
1767  return result;
1768 }
1769 
1771 {
1772  Q_D(QOpenGLExtraFunctions);
1773  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1774  d->f.GetProgramResourceName(program, programInterface, index, bufSize, length, name);
1776 }
1777 
1779 {
1780  Q_D(QOpenGLExtraFunctions);
1781  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1782  d->f.GetProgramResourceiv(program, programInterface, index, propCount, props, bufSize, length, params);
1784 }
1785 
1787 {
1788  Q_D(QOpenGLExtraFunctions);
1789  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1790  d->f.GetTexLevelParameterfv(target, level, pname, params);
1792 }
1793 
1795 {
1796  Q_D(QOpenGLExtraFunctions);
1797  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1798  d->f.GetTexLevelParameteriv(target, level, pname, params);
1800 }
1801 
1803 {
1804  Q_D(QOpenGLExtraFunctions);
1805  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1806  GLboolean result = d->f.IsProgramPipeline(pipeline);
1808  return result;
1809 }
1810 
1812 {
1813  Q_D(QOpenGLExtraFunctions);
1814  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1815  d->f.MemoryBarrier(barriers);
1817 }
1818 
1820 {
1821  Q_D(QOpenGLExtraFunctions);
1822  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1823  d->f.MemoryBarrierByRegion(barriers);
1825 }
1826 
1828 {
1829  Q_D(QOpenGLExtraFunctions);
1830  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1831  d->f.ProgramUniform1f(program, location, v0);
1833 }
1834 
1836 {
1837  Q_D(QOpenGLExtraFunctions);
1838  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1839  d->f.ProgramUniform1fv(program, location, count, value);
1841 }
1842 
1844 {
1845  Q_D(QOpenGLExtraFunctions);
1846  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1847  d->f.ProgramUniform1i(program, location, v0);
1849 }
1850 
1852 {
1853  Q_D(QOpenGLExtraFunctions);
1854  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1855  d->f.ProgramUniform1iv(program, location, count, value);
1857 }
1858 
1860 {
1861  Q_D(QOpenGLExtraFunctions);
1862  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1863  d->f.ProgramUniform1ui(program, location, v0);
1865 }
1866 
1868 {
1869  Q_D(QOpenGLExtraFunctions);
1870  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1871  d->f.ProgramUniform1uiv(program, location, count, value);
1873 }
1874 
1876 {
1877  Q_D(QOpenGLExtraFunctions);
1878  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1879  d->f.ProgramUniform2f(program, location, v0, v1);
1881 }
1882 
1884 {
1885  Q_D(QOpenGLExtraFunctions);
1886  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1887  d->f.ProgramUniform2fv(program, location, count, value);
1889 }
1890 
1892 {
1893  Q_D(QOpenGLExtraFunctions);
1894  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1895  d->f.ProgramUniform2i(program, location, v0, v1);
1897 }
1898 
1900 {
1901  Q_D(QOpenGLExtraFunctions);
1902  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1903  d->f.ProgramUniform2iv(program, location, count, value);
1905 }
1906 
1908 {
1909  Q_D(QOpenGLExtraFunctions);
1910  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1911  d->f.ProgramUniform2ui(program, location, v0, v1);
1913 }
1914 
1916 {
1917  Q_D(QOpenGLExtraFunctions);
1918  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1919  d->f.ProgramUniform2uiv(program, location, count, value);
1921 }
1922 
1924 {
1925  Q_D(QOpenGLExtraFunctions);
1926  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1927  d->f.ProgramUniform3f(program, location, v0, v1, v2);
1929 }
1930 
1932 {
1933  Q_D(QOpenGLExtraFunctions);
1934  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1935  d->f.ProgramUniform3fv(program, location, count, value);
1937 }
1938 
1940 {
1941  Q_D(QOpenGLExtraFunctions);
1942  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1943  d->f.ProgramUniform3i(program, location, v0, v1, v2);
1945 }
1946 
1948 {
1949  Q_D(QOpenGLExtraFunctions);
1950  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1951  d->f.ProgramUniform3iv(program, location, count, value);
1953 }
1954 
1956 {
1957  Q_D(QOpenGLExtraFunctions);
1958  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1959  d->f.ProgramUniform3ui(program, location, v0, v1, v2);
1961 }
1962 
1964 {
1965  Q_D(QOpenGLExtraFunctions);
1966  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1967  d->f.ProgramUniform3uiv(program, location, count, value);
1969 }
1970 
1972 {
1973  Q_D(QOpenGLExtraFunctions);
1974  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1975  d->f.ProgramUniform4f(program, location, v0, v1, v2, v3);
1977 }
1978 
1980 {
1981  Q_D(QOpenGLExtraFunctions);
1982  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1983  d->f.ProgramUniform4fv(program, location, count, value);
1985 }
1986 
1988 {
1989  Q_D(QOpenGLExtraFunctions);
1990  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1991  d->f.ProgramUniform4i(program, location, v0, v1, v2, v3);
1993 }
1994 
1996 {
1997  Q_D(QOpenGLExtraFunctions);
1998  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1999  d->f.ProgramUniform4iv(program, location, count, value);
2001 }
2002 
2004 {
2005  Q_D(QOpenGLExtraFunctions);
2006  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2007  d->f.ProgramUniform4ui(program, location, v0, v1, v2, v3);
2009 }
2010 
2012 {
2013  Q_D(QOpenGLExtraFunctions);
2014  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2015  d->f.ProgramUniform4uiv(program, location, count, value);
2017 }
2018 
2020 {
2021  Q_D(QOpenGLExtraFunctions);
2022  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2023  d->f.ProgramUniformMatrix2fv(program, location, count, transpose, value);
2025 }
2026 
2028 {
2029  Q_D(QOpenGLExtraFunctions);
2030  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2031  d->f.ProgramUniformMatrix2x3fv(program, location, count, transpose, value);
2033 }
2034 
2036 {
2037  Q_D(QOpenGLExtraFunctions);
2038  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2039  d->f.ProgramUniformMatrix2x4fv(program, location, count, transpose, value);
2041 }
2042 
2044 {
2045  Q_D(QOpenGLExtraFunctions);
2046  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2047  d->f.ProgramUniformMatrix3fv(program, location, count, transpose, value);
2049 }
2050 
2052 {
2053  Q_D(QOpenGLExtraFunctions);
2054  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2055  d->f.ProgramUniformMatrix3x2fv(program, location, count, transpose, value);
2057 }
2058 
2060 {
2061  Q_D(QOpenGLExtraFunctions);
2062  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2063  d->f.ProgramUniformMatrix3x4fv(program, location, count, transpose, value);
2065 }
2066 
2068 {
2069  Q_D(QOpenGLExtraFunctions);
2070  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2071  d->f.ProgramUniformMatrix4fv(program, location, count, transpose, value);
2073 }
2074 
2076 {
2077  Q_D(QOpenGLExtraFunctions);
2078  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2079  d->f.ProgramUniformMatrix4x2fv(program, location, count, transpose, value);
2081 }
2082 
2084 {
2085  Q_D(QOpenGLExtraFunctions);
2086  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2087  d->f.ProgramUniformMatrix4x3fv(program, location, count, transpose, value);
2089 }
2090 
2092 {
2093  Q_D(QOpenGLExtraFunctions);
2094  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2095  d->f.SampleMaski(maskNumber, mask);
2097 }
2098 
2100 {
2101  Q_D(QOpenGLExtraFunctions);
2102  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2103  d->f.TexStorage2DMultisample(target, samples, internalformat, width, height, fixedsamplelocations);
2105 }
2106 
2108 {
2109  Q_D(QOpenGLExtraFunctions);
2110  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2111  d->f.UseProgramStages(pipeline, stages, program);
2113 }
2114 
2116 {
2117  Q_D(QOpenGLExtraFunctions);
2118  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2119  d->f.ValidateProgramPipeline(pipeline);
2121 }
2122 
2124 {
2125  Q_D(QOpenGLExtraFunctions);
2126  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2127  d->f.VertexAttribBinding(attribindex, bindingindex);
2129 }
2130 
2132 {
2133  Q_D(QOpenGLExtraFunctions);
2134  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2135  d->f.VertexAttribFormat(attribindex, size, type, normalized, relativeoffset);
2137 }
2138 
2140 {
2141  Q_D(QOpenGLExtraFunctions);
2142  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2143  d->f.VertexAttribIFormat(attribindex, size, type, relativeoffset);
2145 }
2146 
2148 {
2149  Q_D(QOpenGLExtraFunctions);
2150  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2151  d->f.VertexBindingDivisor(bindingindex, divisor);
2153 }
2154 
2155 // GLES 3.2
2156 
2158 {
2159  Q_D(QOpenGLExtraFunctions);
2160  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2161  d->f.BlendBarrier();
2163 }
2164 
2166 {
2167  Q_D(QOpenGLExtraFunctions);
2168  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2169  d->f.BlendEquationSeparatei(buf, modeRGB, modeAlpha);
2171 }
2172 
2174 {
2175  Q_D(QOpenGLExtraFunctions);
2176  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2177  d->f.BlendEquationi(buf, mode);
2179 }
2180 
2182 {
2183  Q_D(QOpenGLExtraFunctions);
2184  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2185  d->f.BlendFuncSeparatei(buf, srcRGB, dstRGB, srcAlpha, dstAlpha);
2187 }
2188 
2190 {
2191  Q_D(QOpenGLExtraFunctions);
2192  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2193  d->f.BlendFunci(buf, src, dst);
2195 }
2196 
2198 {
2199  Q_D(QOpenGLExtraFunctions);
2200  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2201  d->f.ColorMaski(index, r, g, b, a);
2203 }
2204 
2206 {
2207  Q_D(QOpenGLExtraFunctions);
2208  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2211 }
2212 
2214 {
2215  Q_D(QOpenGLExtraFunctions);
2216  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2217  d->f.DebugMessageCallback(callback, userParam);
2219 }
2220 
2222 {
2223  Q_D(QOpenGLExtraFunctions);
2224  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2225  d->f.DebugMessageControl(source, type, severity, count, ids, enabled);
2227 }
2228 
2230 {
2231  Q_D(QOpenGLExtraFunctions);
2232  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2233  d->f.DebugMessageInsert(source, type, id, severity, length, buf);
2235 }
2236 
2238 {
2239  Q_D(QOpenGLExtraFunctions);
2240  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2241  d->f.Disablei(target, index);
2243 }
2244 
2246 {
2247  Q_D(QOpenGLExtraFunctions);
2248  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2249  d->f.DrawElementsBaseVertex(mode, count, type, indices, basevertex);
2251 }
2252 
2254 {
2255  Q_D(QOpenGLExtraFunctions);
2256  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2257  d->f.DrawElementsInstancedBaseVertex(mode, count, type, indices, instancecount, basevertex);
2259 }
2260 
2262 {
2263  Q_D(QOpenGLExtraFunctions);
2264  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2265  d->f.DrawRangeElementsBaseVertex(mode, start, end, count, type, indices, basevertex);
2267 }
2268 
2270 {
2271  Q_D(QOpenGLExtraFunctions);
2272  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2273  d->f.Enablei(target, index);
2275 }
2276 
2278 {
2279  Q_D(QOpenGLExtraFunctions);
2280  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2281  d->f.FramebufferTexture(target, attachment, texture, level);
2283 }
2284 
2286 {
2287  Q_D(QOpenGLExtraFunctions);
2288  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2289  GLuint result = d->f.GetDebugMessageLog(count, bufSize, sources, types, ids, severities, lengths, messageLog);
2291  return result;
2292 }
2293 
2295 {
2296  Q_D(QOpenGLExtraFunctions);
2297  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2298  GLenum result = d->f.GetGraphicsResetStatus();
2300  return result;
2301 }
2302 
2304 {
2305  Q_D(QOpenGLExtraFunctions);
2306  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2307  d->f.GetObjectLabel(identifier, name, bufSize, length, label);
2309 }
2310 
2312 {
2313  Q_D(QOpenGLExtraFunctions);
2314  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2315  d->f.GetObjectPtrLabel(ptr, bufSize, length, label);
2317 }
2318 
2320 {
2321  Q_D(QOpenGLExtraFunctions);
2322  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2323  d->f.GetPointerv(pname, params);
2325 }
2326 
2328 {
2329  Q_D(QOpenGLExtraFunctions);
2330  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2331  d->f.GetSamplerParameterIiv(sampler, pname, params);
2333 }
2334 
2336 {
2337  Q_D(QOpenGLExtraFunctions);
2338  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2339  d->f.GetSamplerParameterIuiv(sampler, pname, params);
2341 }
2342 
2344 {
2345  Q_D(QOpenGLExtraFunctions);
2346  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2347  d->f.GetTexParameterIiv(target, pname, params);
2349 }
2350 
2352 {
2353  Q_D(QOpenGLExtraFunctions);
2354  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2355  d->f.GetTexParameterIuiv(target, pname, params);
2357 }
2358 
2360 {
2361  Q_D(QOpenGLExtraFunctions);
2362  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2363  d->f.GetnUniformfv(program, location, bufSize, params);
2365 }
2366 
2368 {
2369  Q_D(QOpenGLExtraFunctions);
2370  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2371  d->f.GetnUniformiv(program, location, bufSize, params);
2373 }
2374 
2376 {
2377  Q_D(QOpenGLExtraFunctions);
2378  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2379  d->f.GetnUniformuiv(program, location, bufSize, params);
2381 }
2382 
2384 {
2385  Q_D(QOpenGLExtraFunctions);
2386  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2387  GLboolean result = d->f.IsEnabledi(target, index);
2389  return result;
2390 }
2391 
2393 {
2394  Q_D(QOpenGLExtraFunctions);
2395  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2396  d->f.MinSampleShading(value);
2398 }
2399 
2401 {
2402  Q_D(QOpenGLExtraFunctions);
2403  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2404  d->f.ObjectLabel(identifier, name, length, label);
2406 }
2407 
2408 inline void QOpenGLExtraFunctions::glObjectPtrLabel(const void * ptr, GLsizei length, const GLchar * label)
2409 {
2410  Q_D(QOpenGLExtraFunctions);
2411  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2412  d->f.ObjectPtrLabel(ptr, length, label);
2414 }
2415 
2417 {
2418  Q_D(QOpenGLExtraFunctions);
2419  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2420  d->f.PatchParameteri(pname, value);
2422 }
2423 
2425 {
2426  Q_D(QOpenGLExtraFunctions);
2427  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2428  d->f.PopDebugGroup();
2430 }
2431 
2433 {
2434  Q_D(QOpenGLExtraFunctions);
2435  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2436  d->f.PrimitiveBoundingBox(minX, minY, minZ, minW, maxX, maxY, maxZ, maxW);
2438 }
2439 
2441 {
2442  Q_D(QOpenGLExtraFunctions);
2443  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2444  d->f.PushDebugGroup(source, id, length, message);
2446 }
2447 
2449 {
2450  Q_D(QOpenGLExtraFunctions);
2451  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2452  d->f.ReadnPixels(x, y, width, height, format, type, bufSize, data);
2454 }
2455 
2457 {
2458  Q_D(QOpenGLExtraFunctions);
2459  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2460  d->f.SamplerParameterIiv(sampler, pname, param);
2462 }
2463 
2465 {
2466  Q_D(QOpenGLExtraFunctions);
2467  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2468  d->f.SamplerParameterIuiv(sampler, pname, param);
2470 }
2471 
2473 {
2474  Q_D(QOpenGLExtraFunctions);
2475  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2476  d->f.TexBuffer(target, internalformat, buffer);
2478 }
2479 
2481 {
2482  Q_D(QOpenGLExtraFunctions);
2483  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2484  d->f.TexBufferRange(target, internalformat, buffer, offset, size);
2486 }
2487 
2489 {
2490  Q_D(QOpenGLExtraFunctions);
2491  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2492  d->f.TexParameterIiv(target, pname, params);
2494 }
2495 
2497 {
2498  Q_D(QOpenGLExtraFunctions);
2499  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2500  d->f.TexParameterIuiv(target, pname, params);
2502 }
2503 
2505 {
2506  Q_D(QOpenGLExtraFunctions);
2507  Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2508  d->f.TexStorage3DMultisample(target, samples, internalformat, width, height, depth, fixedsamplelocations);
2510 }
2511 
2513 
2514 #undef QT_OPENGL_DECLARE_FUNCTIONS
2515 #undef QT_OPENGL_COUNT_FUNCTIONS
2516 #undef QT_OPENGL_DECLARE
2517 
2518 #ifdef Q_OS_WIN
2519 #pragma pop_macro("MemoryBarrier")
2520 #endif
2521 
2522 #endif // QT_NO_OPENGL
2523 
2524 #endif
The QOpenGLContext class represents a native OpenGL context, enabling OpenGL rendering on a QSurface.
The QOpenGLExtraFunctions class provides cross-platform access to the OpenGL ES 3....
void glPatchParameteri(GLenum pname, GLint value)
void glGetIntegeri_v(GLenum target, GLuint index, GLint *data)
void glProgramUniform1iv(GLuint program, GLint location, GLsizei count, const GLint *value)
void glBlendFunci(GLuint buf, GLenum src, GLenum dst)
void glDrawElementsIndirect(GLenum mode, GLenum type, const void *indirect)
void glDeleteProgramPipelines(GLsizei n, const GLuint *pipelines)
void glSamplerParameterIuiv(GLuint sampler, GLenum pname, const GLuint *param)
void glGetnUniformiv(GLuint program, GLint location, GLsizei bufSize, GLint *params)
void glGetPointerv(GLenum pname, void **params)
void glDebugMessageInsert(GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *buf)
void glGetActiveUniformsiv(GLuint program, GLsizei uniformCount, const GLuint *uniformIndices, GLenum pname, GLint *params)
void glValidateProgramPipeline(GLuint pipeline)
void glProgramUniform2i(GLuint program, GLint location, GLint v0, GLint v1)
void glDrawElementsInstanced(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount)
void glInvalidateSubFramebuffer(GLenum target, GLsizei numAttachments, const GLenum *attachments, GLint x, GLint y, GLsizei width, GLsizei height)
void glEnablei(GLenum target, GLuint index)
GLint glGetProgramResourceLocation(GLuint program, GLenum programInterface, const GLchar *name)
void glUniform1ui(GLint location, GLuint v0)
void glProgramUniform3fv(GLuint program, GLint location, GLsizei count, const GLfloat *value)
void glProgramUniformMatrix4x2fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)
void glGetUniformIndices(GLuint program, GLsizei uniformCount, const GLchar *const *uniformNames, GLuint *uniformIndices)
void glMemoryBarrierByRegion(GLbitfield barriers)
void glGetVertexAttribIuiv(GLuint index, GLenum pname, GLuint *params)
void glTexParameterIuiv(GLenum target, GLenum pname, const GLuint *params)
void glUniformMatrix4x2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)
void glSampleMaski(GLuint maskNumber, GLbitfield mask)
void glGetVertexAttribIiv(GLuint index, GLenum pname, GLint *params)
void glGenTransformFeedbacks(GLsizei n, GLuint *ids)
void glFramebufferTexture(GLenum target, GLenum attachment, GLuint texture, GLint level)
void glDebugMessageControl(GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled)
void glUniformMatrix3x4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)
void glGetnUniformuiv(GLuint program, GLint location, GLsizei bufSize, GLuint *params)
void glGetProgramInterfaceiv(GLuint program, GLenum programInterface, GLenum pname, GLint *params)
GLint glGetFragDataLocation(GLuint program, const GLchar *name)
void glProgramUniform4uiv(GLuint program, GLint location, GLsizei count, const GLuint *value)
void glVertexAttribI4ui(GLuint index, GLuint x, GLuint y, GLuint z, GLuint w)
void glGenVertexArrays(GLsizei n, GLuint *arrays)
void glProgramUniformMatrix4x3fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)
void glDrawArraysInstanced(GLenum mode, GLint first, GLsizei count, GLsizei instancecount)
void glVertexAttribI4iv(GLuint index, const GLint *v)
void glProgramUniform1ui(GLuint program, GLint location, GLuint v0)
void glSamplerParameterIiv(GLuint sampler, GLenum pname, const GLint *param)
GLboolean glIsEnabledi(GLenum target, GLuint index)
void glBindVertexBuffer(GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride)
void glGetQueryiv(GLenum target, GLenum pname, GLint *params)
GLsync glFenceSync(GLenum condition, GLbitfield flags)
void glTransformFeedbackVaryings(GLuint program, GLsizei count, const GLchar *const *varyings, GLenum bufferMode)
void glGetTexParameterIiv(GLenum target, GLenum pname, GLint *params)
void glBindImageTexture(GLuint unit, GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum access, GLenum format)
void glInvalidateFramebuffer(GLenum target, GLsizei numAttachments, const GLenum *attachments)
void glProgramUniform2iv(GLuint program, GLint location, GLsizei count, const GLint *value)
void glGetProgramResourceiv(GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum *props, GLsizei bufSize, GLsizei *length, GLint *params)
GLboolean glIsProgramPipeline(GLuint pipeline)
void glGenQueries(GLsizei n, GLuint *ids)
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)
void glBindProgramPipeline(GLuint pipeline)
void glGetBooleani_v(GLenum target, GLuint index, GLboolean *data)
void glProgramUniform3i(GLuint program, GLint location, GLint v0, GLint v1, GLint v2)
void * glMapBufferRange(GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access)
void glFlushMappedBufferRange(GLenum target, GLintptr offset, GLsizeiptr length)
void glProgramUniform4i(GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3)
GLboolean glIsSampler(GLuint sampler)
void glDrawElementsBaseVertex(GLenum mode, GLsizei count, GLenum type, const void *indices, GLint basevertex)
void glUniformBlockBinding(GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding)
void glDrawArraysIndirect(GLenum mode, const void *indirect)
void glProgramUniformMatrix2x4fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)
void glDispatchComputeIndirect(GLintptr indirect)
void glUniform3ui(GLint location, GLuint v0, GLuint v1, GLuint v2)
void glTexBufferRange(GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size)
void glProgramUniform3iv(GLuint program, GLint location, GLsizei count, const GLint *value)
void glProgramUniform2ui(GLuint program, GLint location, GLuint v0, GLuint v1)
void glVertexAttribDivisor(GLuint index, GLuint divisor)
void glGetProgramPipelineInfoLog(GLuint pipeline, GLsizei bufSize, GLsizei *length, GLchar *infoLog)
GLboolean glIsQuery(GLuint id)
void glClearBufferfv(GLenum buffer, GLint drawbuffer, const GLfloat *value)
void glDeleteVertexArrays(GLsizei n, const GLuint *arrays)
void glTexStorage2DMultisample(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations)
GLboolean glUnmapBuffer(GLenum target)
void glGetActiveUniformBlockName(GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformBlockName)
void glFramebufferTextureLayer(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer)
void glVertexAttribIPointer(GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer)
void glSamplerParameterf(GLuint sampler, GLenum pname, GLfloat param)
void glPushDebugGroup(GLenum source, GLuint id, GLsizei length, const GLchar *message)
void glDeleteQueries(GLsizei n, const GLuint *ids)
void glVertexAttribI4i(GLuint index, GLint x, GLint y, GLint z, GLint w)
void glDrawRangeElements(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices)
void glGetObjectPtrLabel(const void *ptr, GLsizei bufSize, GLsizei *length, GLchar *label)
void glGetProgramResourceName(GLuint program, GLenum programInterface, GLuint index, GLsizei bufSize, GLsizei *length, GLchar *name)
void glGetActiveUniformBlockiv(GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint *params)
void glBeginQuery(GLenum target, GLuint id)
void glProgramUniformMatrix3x4fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)
void glUniform2uiv(GLint location, GLsizei count, const GLuint *value)
void glVertexBindingDivisor(GLuint bindingindex, GLuint divisor)
void glPrimitiveBoundingBox(GLfloat minX, GLfloat minY, GLfloat minZ, GLfloat minW, GLfloat maxX, GLfloat maxY, GLfloat maxZ, GLfloat maxW)
void glUseProgramStages(GLuint pipeline, GLbitfield stages, GLuint program)
void glSamplerParameterfv(GLuint sampler, GLenum pname, const GLfloat *param)
GLuint glGetProgramResourceIndex(GLuint program, GLenum programInterface, const GLchar *name)
void glProgramUniform2uiv(GLuint program, GLint location, GLsizei count, const GLuint *value)
void glUniform4uiv(GLint location, GLsizei count, const GLuint *value)
void glProgramUniform4fv(GLuint program, GLint location, GLsizei count, const GLfloat *value)
void glBlitFramebuffer(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter)
GLboolean glIsSync(GLsync sync)
void glDisablei(GLenum target, GLuint index)
void glWaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout)
void glDrawRangeElementsBaseVertex(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices, GLint basevertex)
void glActiveShaderProgram(GLuint pipeline, GLuint program)
void glGenSamplers(GLsizei count, GLuint *samplers)
void glTexStorage3DMultisample(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations)
void glUniformMatrix4x3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)
void glProgramUniform1f(GLuint program, GLint location, GLfloat v0)
void glFramebufferParameteri(GLenum target, GLenum pname, GLint param)
void glUniformMatrix3x2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)
void glProgramParameteri(GLuint program, GLenum pname, GLint value)
void glUniformMatrix2x4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)
void glGetSamplerParameteriv(GLuint sampler, GLenum pname, GLint *params)
void glClearBufferuiv(GLenum buffer, GLint drawbuffer, const GLuint *value)
void glProgramUniform3uiv(GLuint program, GLint location, GLsizei count, const GLuint *value)
void glGetBufferPointerv(GLenum target, GLenum pname, void **params)
void glSamplerParameteriv(GLuint sampler, GLenum pname, const GLint *param)
void glGetProgramPipelineiv(GLuint pipeline, GLenum pname, GLint *params)
void glTexStorage2D(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height)
void glGetSamplerParameterIiv(GLuint sampler, GLenum pname, GLint *params)
GLboolean glIsTransformFeedback(GLuint id)
void glGetProgramBinary(GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, void *binary)
void glGetQueryObjectuiv(GLuint id, GLenum pname, GLuint *params)
void glRenderbufferStorageMultisample(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height)
void glUniform4ui(GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3)
void glTexStorage3D(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth)
void glMinSampleShading(GLfloat value)
void glTexImage3D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels)
void glDispatchCompute(GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z)
void glTexParameterIiv(GLenum target, GLenum pname, const GLint *params)
void glColorMaski(GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a)
void glReadnPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void *data)
void glProgramUniformMatrix2fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)
void glClearBufferfi(GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil)
void glProgramUniform4f(GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3)
void glProgramUniform1uiv(GLuint program, GLint location, GLsizei count, const GLuint *value)
void glBindVertexArray(GLuint array)
void glProgramUniform4ui(GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3)
void glVertexAttribIFormat(GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset)
const GLubyte * glGetStringi(GLenum name, GLuint index)
void glVertexAttribI4uiv(GLuint index, const GLuint *v)
void glGenProgramPipelines(GLsizei n, GLuint *pipelines)
void glTexBuffer(GLenum target, GLenum internalformat, GLuint buffer)
void glGetObjectLabel(GLenum identifier, GLuint name, GLsizei bufSize, GLsizei *length, GLchar *label)
void glSamplerParameteri(GLuint sampler, GLenum pname, GLint param)
void glVertexAttribFormat(GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset)
void glUniform1uiv(GLint location, GLsizei count, const GLuint *value)
void glCompressedTexImage3D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *data)
void glProgramUniform1fv(GLuint program, GLint location, GLsizei count, const GLfloat *value)
void glUniform3uiv(GLint location, GLsizei count, const GLuint *value)
void glBeginTransformFeedback(GLenum primitiveMode)
void glClearBufferiv(GLenum buffer, GLint drawbuffer, const GLint *value)
void glProgramUniform2f(GLuint program, GLint location, GLfloat v0, GLfloat v1)
GLboolean glIsVertexArray(GLuint array)
void glGetnUniformfv(GLuint program, GLint location, GLsizei bufSize, GLfloat *params)
void glGetTexLevelParameterfv(GLenum target, GLint level, GLenum pname, GLfloat *params)
void glBlendEquationSeparatei(GLuint buf, GLenum modeRGB, GLenum modeAlpha)
void glBlendFuncSeparatei(GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha)
void glMemoryBarrier(GLbitfield barriers)
void glGetUniformuiv(GLuint program, GLint location, GLuint *params)
void glProgramUniformMatrix3x2fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)
void glVertexAttribBinding(GLuint attribindex, GLuint bindingindex)
GLuint glCreateShaderProgramv(GLenum type, GLsizei count, const GLchar *const *strings)
void glDeleteSync(GLsync sync)
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)
void glGetFramebufferParameteriv(GLenum target, GLenum pname, GLint *params)
void glGetBufferParameteri64v(GLenum target, GLenum pname, GLint64 *params)
void glDeleteTransformFeedbacks(GLsizei n, const GLuint *ids)
GLuint glGetDebugMessageLog(GLuint count, GLsizei bufSize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog)
void glDeleteSamplers(GLsizei count, const GLuint *samplers)
void glBindBufferRange(GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size)
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)
void glProgramUniform3ui(GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2)
void glGetTexParameterIuiv(GLenum target, GLenum pname, GLuint *params)
void glGetSynciv(GLsync sync, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values)
void glProgramUniformMatrix4fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)
void glUniform2ui(GLint location, GLuint v0, GLuint v1)
void glUniformMatrix2x3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)
void glDrawBuffers(GLsizei n, const GLenum *bufs)
void glGetSamplerParameterfv(GLuint sampler, GLenum pname, GLfloat *params)
void glBindTransformFeedback(GLenum target, GLuint id)
void glProgramUniformMatrix3fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)
void glGetInteger64i_v(GLenum target, GLuint index, GLint64 *data)
void glGetMultisamplefv(GLenum pname, GLuint index, GLfloat *val)
GLenum glClientWaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout)
void glBindBufferBase(GLenum target, GLuint index, GLuint buffer)
void glProgramUniform1i(GLuint program, GLint location, GLint v0)
void glCopyTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height)
void glDebugMessageCallback(GLDEBUGPROC callback, const void *userParam)
void glObjectPtrLabel(const void *ptr, GLsizei length, const GLchar *label)
void glProgramBinary(GLuint program, GLenum binaryFormat, const void *binary, GLsizei length)
void glGetTransformFeedbackVarying(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name)
GLuint glGetUniformBlockIndex(GLuint program, const GLchar *uniformBlockName)
void glProgramUniform4iv(GLuint program, GLint location, GLsizei count, const GLint *value)
void glGetInternalformativ(GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint *params)
void glGetSamplerParameterIuiv(GLuint sampler, GLenum pname, GLuint *params)
void glBlendEquationi(GLuint buf, GLenum mode)
void glEndQuery(GLenum target)
void glDrawElementsInstancedBaseVertex(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex)
void glGetTexLevelParameteriv(GLenum target, GLint level, GLenum pname, GLint *params)
void glProgramUniform3f(GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2)
void glProgramUniformMatrix2x3fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)
void glBindSampler(GLuint unit, GLuint sampler)
void glReadBuffer(GLenum mode)
void glProgramUniform2fv(GLuint program, GLint location, GLsizei count, const GLfloat *value)
void glObjectLabel(GLenum identifier, GLuint name, GLsizei length, const GLchar *label)
void glGetInteger64v(GLenum pname, GLint64 *data)
void glCopyBufferSubData(GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size)
QOpenGLExtraFunctionsPrivate(QOpenGLContext *ctx)
The QOpenGLFunctions class provides cross-platform access to the OpenGL ES 2.0 API.
static bool isInitialized(const QOpenGLFunctionsPrivate *d)
png_const_structrp png_const_inforp int * unit
Definition: png.h:2159
void
Definition: png.h:1080
EGLOutputLayerEXT EGLint EGLAttrib value
EGLOutputLayerEXT layer
ptrdiff_t GLintptr
Definition: qopengl.h:189
uint64_t GLuint64
Definition: qopengl.h:259
GLenum GLuint GLenum GLsizei length
Definition: qopengl.h:270
#define QOPENGLF_APIENTRY
Definition: qopengl.h:296
GLenum GLuint id
[6]
Definition: qopengl.h:270
GLenum GLuint GLenum GLsizei const GLchar const GLvoid * userParam
Definition: qopengl.h:270
void(APIENTRY * GLDEBUGPROC)(GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *message, const GLvoid *userParam)
Definition: qopengl.h:278
int64_t GLint64
Definition: qopengl.h:258
GLenum type
Definition: qopengl.h:270
ptrdiff_t GLsizeiptr
Definition: qopengl.h:190
GLenum GLuint GLenum GLsizei const GLchar * message
Definition: qopengl.h:270
GLenum GLuint GLenum severity
Definition: qopengl.h:270
struct __GLsync * GLsync
Definition: qopengl.h:260
char GLchar
Definition: qopengl.h:184
GLenum modeRGB
GLint location
GLenum GLenum modeAlpha
GLsizei GLenum GLsizei GLsizei GLsizei GLboolean fixedsamplelocations
GLint GLint GLint GLint dstX0
GLint GLfloat GLfloat GLfloat v2
GLenum GLsizei GLsizei GLint * values
[16]
GLsizei GLsizei GLenum void * binary
GLenum GLint GLint GLint GLint GLuint GLenum GLint GLint GLint GLint dstZ
GLboolean GLboolean GLboolean b
typedef GLint(GL_APIENTRYP PFNGLGETPROGRAMRESOURCELOCATIONINDEXEXTPROC)(GLuint program
GLbitfield stages
GLsizei const GLfloat * v
[13]
GLint GLboolean layered
GLuint GLfloat GLfloat GLfloat GLfloat GLfloat z
GLenum GLint GLint GLint GLint GLuint GLenum GLint GLint GLint GLint GLsizei GLsizei srcHeight
GLsizei GLenum GLenum GLuint GLenum * severities
GLint GLint GLint GLint GLint x
[0]
GLint GLenum GLsizei GLsizei GLsizei depth
typedef GLfloat(GL_APIENTRYP PFNGLGETPATHLENGTHNVPROC)(GLuint path
GLsizei samples
GLenum mode
GLenum programInterface
GLenum GLint GLint GLint GLint GLuint GLenum GLint GLint GLint dstY
GLenum GLuint GLint level
GLboolean r
[2]
GLfloat GLfloat GLfloat w
[0]
const GLuint * pipelines
GLint GLsizei GLsizei height
GLfloat GLfloat GLfloat GLfloat GLfloat maxY
GLboolean GLboolean GLboolean GLboolean a
[7]
GLuint divisor
GLenum srcTarget
GLenum GLuint GLintptr GLsizeiptr size
[1]
GLuint index
[2]
GLenum condition
GLuint GLuint end
GLenum GLint GLint GLint srcY
GLenum GLenum GLsizei const GLuint * ids
GLenum GLint GLint GLint GLint GLuint GLenum GLint GLint dstX
GLsizei GLenum GLenum * types
GLsizei const GLchar ** strings
[1]
GLenum srcRGB
GLuint sampler
GLenum GLenum GLenum GLenum dstAlpha
GLint srcY0
GLenum GLint GLint GLint GLint GLuint GLenum GLint GLint GLint GLint GLsizei srcWidth
GLenum GLenum GLsizei count
const GLenum * bufs
GLenum pname
const void * indirect
GLbitfield GLuint64 timeout
[4]
GLfloat minY
GLint GLenum GLsizei GLsizei GLsizei GLint border
GLenum GLenum GLsizei const GLuint GLboolean enabled
GLsizei GLsizei GLchar * infoLog
GLint GLint srcX1
GLsizei levels
GLenum GLenum GLenum srcAlpha
GLsizei GLenum GLenum GLuint GLenum GLsizei * lengths
GLenum src
const void GLsizei GLsizei stride
GLenum GLuint buffer
GLint GLint GLint yoffset
GLint GLsizei width
GLint GLint GLint GLint zoffset
GLint GLsizei GLboolean transpose
GLenum GLint GLint srcX
GLenum GLenum dstRGB
GLenum GLint GLint GLint GLint GLuint GLenum GLint dstLevel
typedef GLsizei(GL_APIENTRYP PFNGLGETFRAMEBUFFERPIXELLOCALSTORAGESIZEEXTPROC)(GLuint target)
GLenum GLint GLint GLint GLint GLuint GLenum dstTarget
GLenum GLint srcLevel
GLenum writeTarget
GLenum GLenum dst
GLenum GLintptr readOffset
GLuint GLsizei const GLchar * label
[43]
GLint GLint GLint GLint GLint GLint dstX1
GLenum GLint GLint GLint GLint srcZ
typedef GLenum(GL_APIENTRYP PFNGLGETGRAPHICSRESETSTATUSKHRPROC)(void)
GLenum access
GLint GLfloat v0
GLfloat GLfloat GLfloat minW
GLenum GLuint GLenum GLsizei const GLchar * buf
GLenum target
GLenum GLintptr GLintptr writeOffset
GLbitfield flags
GLsizei GLenum const void GLint basevertex
GLint GLfloat GLfloat v1
GLsizei GLenum GLenum GLuint GLenum GLsizei GLchar * messageLog
GLsizei const GLenum * attachments
GLenum GLuint texture
GLsizei GLenum const void GLsizei instancecount
GLint GLint GLint GLint GLint GLint GLint GLbitfield GLenum filter
GLuint program
GLint GLenum internalformat
const GLuint * arrays
GLfloat GLfloat GLfloat GLfloat GLfloat GLfloat GLfloat maxW
GLenum GLuint GLsizei const GLenum * props
GLint GLint xoffset
typedef GLboolean(GL_APIENTRYP PFNGLISENABLEDIOESPROC)(GLenum target
GLint GLsizei GLsizei GLenum GLenum GLsizei void * data
GLuint start
GLenum const GLint * param
GLenum GLuint GLintptr offset
GLboolean GLboolean g
GLenum GLint GLint GLint GLint GLuint dstName
GLfloat GLfloat GLfloat GLfloat GLfloat GLfloat maxZ
GLint GLfloat GLfloat GLfloat GLfloat v3
GLsizei GLsizei GLenum * binaryFormat
GLint GLenum GLsizei GLsizei GLsizei GLint GLenum GLenum const void * pixels
GLenum GLint GLint GLint GLint GLuint GLenum GLint GLint GLint GLint GLsizei GLsizei GLsizei srcDepth
GLenum attachment
GLenum GLuint GLsizei propCount
GLuint name
GLint first
GLsizei bufSize
GLint GLint GLint srcY1
typedef GLuint(GL_APIENTRYP PFNGLGETDEBUGMESSAGELOGKHRPROC)(GLuint count
GLint GLint GLint GLint GLint GLint GLint GLbitfield mask
GLsizei GLenum * sources
GLfloat n
GLint GLsizei GLsizei GLenum format
GLint GLint GLint GLint GLint dstY0
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei imageSize
GLint GLint GLint GLint GLint GLint GLint dstY1
GLsizei GLenum const void * indices
GLsizei numAttachments
GLint y
GLfloat GLfloat minZ
GLfloat GLfloat GLfloat GLfloat maxX
GLsizei GLsizei GLchar * source
void ** params
GLuint GLuint num_groups_z
Definition: qopenglext.h:2474
const GLchar * uniformBlockName
Definition: qopenglext.h:1374
GLuint GLint srcX0
Definition: qopenglext.h:2665
GLsizei uniformCount
Definition: qopenglext.h:1371
GLsizei const GLchar *const * varyings
Definition: qopenglext.h:1141
GLuint GLfloat * val
Definition: qopenglext.h:1513
GLsizei const GLchar *const GLenum bufferMode
Definition: qopenglext.h:1141
GLenum array
Definition: qopenglext.h:7028
GLuint num_groups_y
Definition: qopenglext.h:2474
typedef GLbitfield(APIENTRYP PFNGLQUERYMATRIXXOESPROC)(GLfixed *mantissa
GLuint * samplers
Definition: qopenglext.h:1558
GLint GLenum GLboolean GLuint relativeoffset
Definition: qopenglext.h:2500
GLsizei const GLchar *const GLuint * uniformIndices
Definition: qopenglext.h:1371
GLsizei const void * pointer
Definition: qopenglext.h:384
GLbitfield GLuint srcName
Definition: qopenglext.h:9407
GLint GLenum GLboolean normalized
Definition: qopenglext.h:752
GLuint64EXT * result
[6]
Definition: qopenglext.h:10932
GLuint GLuint uniformBlockBinding
Definition: qopenglext.h:1377
GLuint bindingindex
Definition: qopenglext.h:2503
GLint GLfloat GLint stencil
Definition: qopenglext.h:1187
GLuint attribindex
Definition: qopenglext.h:2712
GLuint uniformBlockIndex
Definition: qopenglext.h:1375
GLint drawbuffer
Definition: qopenglext.h:1184
GLsizei const GLchar *const * uniformNames
Definition: qopenglext.h:1371
#define QT_OPENGL_EXTRA_FUNCTIONS(F)
#define QT_OPENGL_DECLARE(FUNCTIONS)
#define Q_OPENGL_FUNCTIONS_DEBUG
#define Q_ASSERT(cond)
Definition: qrandom.cpp:84