1// Copyright (C) 2021 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
3
4#include "qopenglfunctions.h"
5#include "qopenglextrafunctions.h"
6#include "qopenglextensions_p.h"
7#include "qdebug.h"
8#include <QtGui/private/qopenglcontext_p.h>
9#include <QtGui/private/qopengl_p.h>
10#include <QtGui/private/qguiapplication_p.h>
11#include <qpa/qplatformintegration.h>
12#include <qpa/qplatformnativeinterface.h>
13
14#ifdef Q_OS_INTEGRITY
15#include <EGL/egl.h>
16#endif
17
18#ifndef GL_FRAMEBUFFER_SRGB_CAPABLE_EXT
19#define GL_FRAMEBUFFER_SRGB_CAPABLE_EXT 0x8DBA
20#endif
21
22QT_BEGIN_NAMESPACE
23
24using namespace Qt::StringLiterals;
25
26#define QT_OPENGL_COUNT_FUNCTIONS(ret, name, args) +1
27#define QT_OPENGL_FUNCTION_NAMES(ret, name, args) \
28 "gl"#name"\0"
29#define QT_OPENGL_FLAGS(ret, name, args) \
30 0,
31#define QT_OPENGL_IMPLEMENT(CLASS, FUNCTIONS) \
32void CLASS::init(QOpenGLContext *context) \
33{ \
34 const char *names = FUNCTIONS(QT_OPENGL_FUNCTION_NAMES); \
35 const char *name = names; \
36 for (int i = 0; i < FUNCTIONS(QT_OPENGL_COUNT_FUNCTIONS); ++i) { \
37 functions[i] = QT_PREPEND_NAMESPACE(getProcAddress(context, name)); \
38 name += strlen(name) + 1; \
39 } \
40}
41
42/*!
43 \class QOpenGLFunctions
44 \brief The QOpenGLFunctions class provides cross-platform access to the OpenGL ES 2.0 API.
45 \since 5.0
46 \ingroup painting-3D
47 \inmodule QtGui
48
49 OpenGL ES 2.0 defines a subset of the OpenGL specification that is
50 common across many desktop and embedded OpenGL implementations.
51 However, it can be difficult to use the functions from that subset
52 because they need to be resolved manually on desktop systems.
53
54 QOpenGLFunctions provides a guaranteed API that is available on all
55 OpenGL systems and takes care of function resolution on systems
56 that need it. The recommended way to use QOpenGLFunctions is by
57 direct inheritance:
58
59 \snippet code/src_gui_opengl_qopenglfunctions.cpp 0
60
61 The \c{paintGL()} function can then use any of the OpenGL ES 2.0
62 functions without explicit resolution, such as glActiveTexture()
63 in the following example:
64
65 \snippet code/src_gui_opengl_qopenglfunctions.cpp 1
66
67 QOpenGLFunctions can also be used directly for ad-hoc invocation
68 of OpenGL ES 2.0 functions on all platforms:
69
70 \snippet code/src_gui_opengl_qopenglfunctions.cpp 2
71
72 An alternative approach is to query the context's associated
73 QOpenGLFunctions instance. This is somewhat faster than the previous
74 approach due to avoiding the creation of a new instance, but the difference
75 is fairly small since the internal data structures are shared, and function
76 resolving happens only once for a given context, regardless of the number of
77 QOpenGLFunctions instances initialized for it.
78
79 \snippet code/src_gui_opengl_qopenglfunctions.cpp 3
80
81 QOpenGLFunctions provides wrappers for all OpenGL ES 2.0
82 functions, including the common subset of OpenGL 1.x and ES
83 2.0. While such functions, for example glClear() or
84 glDrawArrays(), can be called also directly, as long as the
85 application links to the platform-specific OpenGL library, calling
86 them via QOpenGLFunctions enables the possibility of dynamically
87 loading the OpenGL implementation.
88
89 The hasOpenGLFeature() and openGLFeatures() functions can be used
90 to determine if the OpenGL implementation has a major OpenGL ES 2.0
91 feature. For example, the following checks if non power of two
92 textures are available:
93
94 \snippet code/src_gui_opengl_qopenglfunctions.cpp 4
95
96 \sa QOpenGLContext, QSurfaceFormat
97*/
98
99/*!
100 \enum QOpenGLFunctions::OpenGLFeature
101 This enum defines OpenGL and OpenGL ES features whose presence
102 may depend on the implementation.
103
104 \value Multitexture glActiveTexture() function is available.
105 \value Shaders Shader functions are available.
106 \value Buffers Vertex and index buffer functions are available.
107 \value Framebuffers Framebuffer object functions are available.
108 \value BlendColor glBlendColor() is available.
109 \value BlendEquation glBlendEquation() is available.
110 \value BlendEquationSeparate glBlendEquationSeparate() is available.
111 \value BlendEquationAdvanced Advanced blend equations are available.
112 \value BlendFuncSeparate glBlendFuncSeparate() is available.
113 \value BlendSubtract Blend subtract mode is available.
114 \value CompressedTextures Compressed texture functions are available.
115 \value Multisample glSampleCoverage() function is available.
116 \value StencilSeparate Separate stencil functions are available.
117 \value NPOTTextures Non power of two textures are available.
118 \value NPOTTextureRepeat Non power of two textures can use GL_REPEAT as wrap parameter.
119 \value FixedFunctionPipeline The fixed function pipeline is available.
120 \value TextureRGFormats The GL_RED and GL_RG texture formats are available.
121 \value MultipleRenderTargets Multiple color attachments to framebuffer objects are available.
122*/
123
124// Hidden private fields for additional extension data.
125struct QOpenGLFunctionsPrivateEx : public QOpenGLExtensionsPrivate, public QOpenGLSharedResource
126{
127 QOpenGLFunctionsPrivateEx(QOpenGLContext *context)
128 : QOpenGLExtensionsPrivate(context)
129 , QOpenGLSharedResource(context->shareGroup())
130 , m_features(-1)
131 , m_extensions(-1)
132 {}
133
134 void invalidateResource() override
135 {
136 m_features = -1;
137 m_extensions = -1;
138 }
139
140 void freeResource(QOpenGLContext *) override
141 {
142 // no gl resources to free
143 }
144
145 int m_features;
146 int m_extensions;
147};
148
149Q_GLOBAL_STATIC(QOpenGLMultiGroupSharedResource, qt_gl_functions_resource)
150
151static QOpenGLFunctionsPrivateEx *qt_gl_functions(QOpenGLContext *context = nullptr)
152{
153 if (!context)
154 context = QOpenGLContext::currentContext();
155 Q_ASSERT(context);
156 QOpenGLFunctionsPrivateEx *funcs =
157 qt_gl_functions_resource()->value<QOpenGLFunctionsPrivateEx>(context);
158 return funcs;
159}
160
161/*!
162 Constructs a default function resolver. The resolver cannot
163 be used until initializeOpenGLFunctions() is called to specify
164 the context.
165
166 \sa initializeOpenGLFunctions()
167*/
168QOpenGLFunctions::QOpenGLFunctions()
169 : d_ptr(nullptr)
170{
171}
172
173/*!
174 Constructs a function resolver for \a context. If \a context
175 is \nullptr, then the resolver will be created for the current
176 QOpenGLContext.
177
178 The context or another context in the group must be current.
179
180 An object constructed in this way can only be used with \a context
181 and other contexts that share with it. Use initializeOpenGLFunctions()
182 to change the object's context association.
183
184 \sa initializeOpenGLFunctions()
185*/
186QOpenGLFunctions::QOpenGLFunctions(QOpenGLContext *context)
187 : d_ptr(nullptr)
188{
189 if (context && QOpenGLContextGroup::currentContextGroup() == context->shareGroup())
190 d_ptr = qt_gl_functions(context);
191 else
192 qWarning(msg: "QOpenGLFunctions created with non-current context");
193}
194
195QOpenGLExtensions::QOpenGLExtensions()
196{
197}
198
199QOpenGLExtensions::QOpenGLExtensions(QOpenGLContext *context)
200 : QOpenGLExtraFunctions(context)
201{
202}
203
204/*!
205 \fn QOpenGLFunctions::~QOpenGLFunctions()
206
207 Destroys this function resolver.
208*/
209
210static int qt_gl_resolve_features()
211{
212 QOpenGLContext *ctx = QOpenGLContext::currentContext();
213 QOpenGLExtensionMatcher extensions;
214 int features = 0;
215 if ((extensions.match(extension: "GL_KHR_blend_equation_advanced")
216 || extensions.match(extension: "GL_NV_blend_equation_advanced")) &&
217 (extensions.match(extension: "GL_KHR_blend_equation_advanced_coherent")
218 || extensions.match(extension: "GL_NV_blend_equation_advanced_coherent"))) {
219 // We need both the advanced equations and the coherency for us
220 // to be able to easily use the new blend equations
221 features |= QOpenGLFunctions::BlendEquationAdvanced;
222 }
223 if (ctx->isOpenGLES()) {
224 // OpenGL ES
225 features |= QOpenGLFunctions::Multitexture |
226 QOpenGLFunctions::Shaders |
227 QOpenGLFunctions::Buffers |
228 QOpenGLFunctions::Framebuffers |
229 QOpenGLFunctions::BlendColor |
230 QOpenGLFunctions::BlendEquation |
231 QOpenGLFunctions::BlendEquationSeparate |
232 QOpenGLFunctions::BlendFuncSeparate |
233 QOpenGLFunctions::BlendSubtract |
234 QOpenGLFunctions::CompressedTextures |
235 QOpenGLFunctions::Multisample |
236 QOpenGLFunctions::StencilSeparate;
237 if (extensions.match(extension: "GL_IMG_texture_npot"))
238 features |= QOpenGLFunctions::NPOTTextures;
239 if (extensions.match(extension: "GL_OES_texture_npot"))
240 features |= QOpenGLFunctions::NPOTTextures |
241 QOpenGLFunctions::NPOTTextureRepeat;
242 if (ctx->format().majorVersion() >= 3 || extensions.match(extension: "GL_EXT_texture_rg")) {
243 // Mesa's GLES implementation (as of 10.6.0) is unable to handle this, even though it provides 3.0.
244 const char *renderer = reinterpret_cast<const char *>(ctx->functions()->glGetString(GL_RENDERER));
245 if (!(renderer && strstr(haystack: renderer, needle: "Mesa")))
246 features |= QOpenGLFunctions::TextureRGFormats;
247 }
248 if (ctx->format().majorVersion() >= 3) {
249 features |= QOpenGLFunctions::MultipleRenderTargets;
250 if (ctx->format().minorVersion() >= 2 && extensions.match(extension: "GL_KHR_blend_equation_advanced_coherent")) {
251 // GL_KHR_blend_equation_advanced is included in OpenGL ES/3.2
252 features |= QOpenGLFunctions::BlendEquationAdvanced;
253 }
254 }
255 return features;
256 } else {
257 // OpenGL
258 features |= QOpenGLFunctions::TextureRGFormats;
259 QSurfaceFormat format = QOpenGLContext::currentContext()->format();
260
261 if (format.majorVersion() >= 3)
262 features |= QOpenGLFunctions::Framebuffers | QOpenGLFunctions::MultipleRenderTargets;
263 else if (extensions.match(extension: "GL_EXT_framebuffer_object") || extensions.match(extension: "GL_ARB_framebuffer_object"))
264 features |= QOpenGLFunctions::Framebuffers | QOpenGLFunctions::MultipleRenderTargets;
265
266 if (format.majorVersion() >= 2) {
267 features |= QOpenGLFunctions::BlendColor |
268 QOpenGLFunctions::BlendEquation |
269 QOpenGLFunctions::BlendSubtract |
270 QOpenGLFunctions::Multitexture |
271 QOpenGLFunctions::CompressedTextures |
272 QOpenGLFunctions::Multisample |
273 QOpenGLFunctions::BlendFuncSeparate |
274 QOpenGLFunctions::Buffers |
275 QOpenGLFunctions::Shaders |
276 QOpenGLFunctions::StencilSeparate |
277 QOpenGLFunctions::BlendEquationSeparate |
278 QOpenGLFunctions::NPOTTextures |
279 QOpenGLFunctions::NPOTTextureRepeat;
280 } else {
281 // Recognize features by extension name.
282 if (extensions.match(extension: "GL_ARB_multitexture"))
283 features |= QOpenGLFunctions::Multitexture;
284 if (extensions.match(extension: "GL_ARB_shader_objects"))
285 features |= QOpenGLFunctions::Shaders;
286 if (extensions.match(extension: "GL_EXT_blend_color"))
287 features |= QOpenGLFunctions::BlendColor;
288 if (extensions.match(extension: "GL_EXT_blend_equation_separate"))
289 features |= QOpenGLFunctions::BlendEquationSeparate;
290 if (extensions.match(extension: "GL_EXT_blend_subtract"))
291 features |= QOpenGLFunctions::BlendSubtract;
292 if (extensions.match(extension: "GL_EXT_blend_func_separate"))
293 features |= QOpenGLFunctions::BlendFuncSeparate;
294 if (extensions.match(extension: "GL_ARB_texture_compression"))
295 features |= QOpenGLFunctions::CompressedTextures;
296 if (extensions.match(extension: "GL_ARB_multisample"))
297 features |= QOpenGLFunctions::Multisample;
298 if (extensions.match(extension: "GL_ARB_texture_non_power_of_two"))
299 features |= QOpenGLFunctions::NPOTTextures |
300 QOpenGLFunctions::NPOTTextureRepeat;
301 }
302
303 const QPair<int, int> version = format.version();
304 if (version < qMakePair(value1: 3, value2: 0)
305 || (version == qMakePair(value1: 3, value2: 0) && format.testOption(option: QSurfaceFormat::DeprecatedFunctions))
306 || (version == qMakePair(value1: 3, value2: 1) && extensions.match(extension: "GL_ARB_compatibility"))
307 || (version >= qMakePair(value1: 3, value2: 2) && format.profile() == QSurfaceFormat::CompatibilityProfile)) {
308 features |= QOpenGLFunctions::FixedFunctionPipeline;
309 }
310 return features;
311 }
312}
313
314static int qt_gl_resolve_extensions()
315{
316 int extensions = 0;
317 QOpenGLExtensionMatcher extensionMatcher;
318 QOpenGLContext *ctx = QOpenGLContext::currentContext();
319 QSurfaceFormat format = ctx->format();
320
321 if (extensionMatcher.match(extension: "GL_EXT_bgra"))
322 extensions |= QOpenGLExtensions::BGRATextureFormat;
323 if (extensionMatcher.match(extension: "GL_ARB_texture_rectangle"))
324 extensions |= QOpenGLExtensions::TextureRectangle;
325 if (extensionMatcher.match(extension: "GL_ARB_texture_compression"))
326 extensions |= QOpenGLExtensions::TextureCompression;
327 if (extensionMatcher.match(extension: "GL_EXT_texture_compression_s3tc"))
328 extensions |= QOpenGLExtensions::DDSTextureCompression;
329 if (extensionMatcher.match(extension: "GL_OES_compressed_ETC1_RGB8_texture"))
330 extensions |= QOpenGLExtensions::ETC1TextureCompression;
331 if (extensionMatcher.match(extension: "GL_IMG_texture_compression_pvrtc"))
332 extensions |= QOpenGLExtensions::PVRTCTextureCompression;
333 if (extensionMatcher.match(extension: "GL_KHR_texture_compression_astc_ldr"))
334 extensions |= QOpenGLExtensions::ASTCTextureCompression;
335 if (extensionMatcher.match(extension: "GL_ARB_texture_mirrored_repeat"))
336 extensions |= QOpenGLExtensions::MirroredRepeat;
337 if (extensionMatcher.match(extension: "GL_EXT_stencil_two_side"))
338 extensions |= QOpenGLExtensions::StencilTwoSide;
339 if (extensionMatcher.match(extension: "GL_EXT_stencil_wrap"))
340 extensions |= QOpenGLExtensions::StencilWrap;
341 if (extensionMatcher.match(extension: "GL_NV_float_buffer"))
342 extensions |= QOpenGLExtensions::NVFloatBuffer;
343 if (extensionMatcher.match(extension: "GL_ARB_pixel_buffer_object"))
344 extensions |= QOpenGLExtensions::PixelBufferObject;
345 if (extensionMatcher.match(extension: "GL_ARB_texture_swizzle") || extensionMatcher.match(extension: "GL_EXT_texture_swizzle"))
346 extensions |= QOpenGLExtensions::TextureSwizzle;
347 if (extensionMatcher.match(extension: "GL_OES_standard_derivatives"))
348 extensions |= QOpenGLExtensions::StandardDerivatives;
349 if (extensionMatcher.match(extension: "GL_ARB_half_float_vertex"))
350 extensions |= QOpenGLExtensions::HalfFloatVertex;
351
352 if (ctx->isOpenGLES()) {
353 if (format.majorVersion() >= 2)
354 extensions |= QOpenGLExtensions::GenerateMipmap;
355
356 if (format.majorVersion() >= 3) {
357 extensions |= QOpenGLExtensions::PackedDepthStencil
358 | QOpenGLExtensions::Depth24
359 | QOpenGLExtensions::ElementIndexUint
360 | QOpenGLExtensions::MapBufferRange
361 | QOpenGLExtensions::FramebufferBlit
362 | QOpenGLExtensions::FramebufferMultisample
363 | QOpenGLExtensions::Sized8Formats
364 | QOpenGLExtensions::StandardDerivatives
365 | QOpenGLExtensions::ETC2TextureCompression
366 | QOpenGLExtensions::HalfFloatVertex;
367#ifndef Q_OS_WASM
368 // WebGL 2.0 specification explicitly does not support texture swizzles
369 // https://www.khronos.org/registry/webgl/specs/latest/2.0/#5.19
370 extensions |= QOpenGLExtensions::TextureSwizzle;
371#endif
372 } else {
373 // Recognize features by extension name.
374 if (extensionMatcher.match(extension: "GL_OES_packed_depth_stencil"))
375 extensions |= QOpenGLExtensions::PackedDepthStencil;
376 if (extensionMatcher.match(extension: "GL_OES_depth24"))
377 extensions |= QOpenGLExtensions::Depth24;
378 if (extensionMatcher.match(extension: "GL_ANGLE_framebuffer_blit"))
379 extensions |= QOpenGLExtensions::FramebufferBlit;
380 if (extensionMatcher.match(extension: "GL_ANGLE_framebuffer_multisample"))
381 extensions |= QOpenGLExtensions::FramebufferMultisample;
382 if (extensionMatcher.match(extension: "GL_NV_framebuffer_blit"))
383 extensions |= QOpenGLExtensions::FramebufferBlit;
384 if (extensionMatcher.match(extension: "GL_NV_framebuffer_multisample"))
385 extensions |= QOpenGLExtensions::FramebufferMultisample;
386 if (extensionMatcher.match(extension: "GL_OES_rgb8_rgba8"))
387 extensions |= QOpenGLExtensions::Sized8Formats;
388 if (extensionMatcher.match(extension: "GL_OES_compressed_ETC2_RGB8_texture"))
389 extensions |= QOpenGLExtensions::ETC2TextureCompression;
390 }
391
392 if (extensionMatcher.match(extension: "GL_OES_mapbuffer"))
393 extensions |= QOpenGLExtensions::MapBuffer;
394 if (extensionMatcher.match(extension: "GL_OES_element_index_uint"))
395 extensions |= QOpenGLExtensions::ElementIndexUint;
396 // We don't match GL_APPLE_texture_format_BGRA8888 here because it has different semantics.
397 if (extensionMatcher.match(extension: "GL_IMG_texture_format_BGRA8888") || extensionMatcher.match(extension: "GL_EXT_texture_format_BGRA8888"))
398 extensions |= QOpenGLExtensions::BGRATextureFormat;
399#ifdef Q_OS_ANDROID
400 QString *deviceName =
401 static_cast<QString *>(QGuiApplication::platformNativeInterface()->nativeResourceForIntegration("AndroidDeviceName"));
402 static bool wrongfullyReportsBgra8888Support = deviceName != 0
403 && (deviceName->compare("samsung SM-T211"_L1, Qt::CaseInsensitive) == 0
404 || deviceName->compare("samsung SM-T210"_L1, Qt::CaseInsensitive) == 0
405 || deviceName->compare("samsung SM-T215"_L1, Qt::CaseInsensitive) == 0);
406 if (wrongfullyReportsBgra8888Support)
407 extensions &= ~QOpenGLExtensions::BGRATextureFormat;
408#endif
409
410 if (extensionMatcher.match(extension: "GL_EXT_discard_framebuffer"))
411 extensions |= QOpenGLExtensions::DiscardFramebuffer;
412 if (extensionMatcher.match(extension: "GL_EXT_texture_norm16"))
413 extensions |= QOpenGLExtensions::Sized16Formats;
414 } else {
415 extensions |= QOpenGLExtensions::ElementIndexUint
416 | QOpenGLExtensions::MapBuffer
417 | QOpenGLExtensions::Sized16Formats;
418
419 if (format.version() >= qMakePair(value1: 1, value2: 2))
420 extensions |= QOpenGLExtensions::BGRATextureFormat;
421
422 if (format.version() >= qMakePair(value1: 1, value2: 4) || extensionMatcher.match(extension: "GL_SGIS_generate_mipmap"))
423 extensions |= QOpenGLExtensions::GenerateMipmap;
424
425 if (format.majorVersion() >= 2)
426 extensions |= QOpenGLExtensions::StandardDerivatives;
427
428 if (format.majorVersion() >= 3 || extensionMatcher.match(extension: "GL_ARB_framebuffer_object")) {
429 extensions |= QOpenGLExtensions::FramebufferMultisample
430 | QOpenGLExtensions::FramebufferBlit
431 | QOpenGLExtensions::PackedDepthStencil
432 | QOpenGLExtensions::Sized8Formats;
433 } else {
434 // Recognize features by extension name.
435 if (extensionMatcher.match(extension: "GL_EXT_framebuffer_multisample"))
436 extensions |= QOpenGLExtensions::FramebufferMultisample;
437 if (extensionMatcher.match(extension: "GL_EXT_framebuffer_blit"))
438 extensions |= QOpenGLExtensions::FramebufferBlit;
439 if (extensionMatcher.match(extension: "GL_EXT_packed_depth_stencil"))
440 extensions |= QOpenGLExtensions::PackedDepthStencil;
441 }
442
443 if (format.version() >= qMakePair(value1: 3, value2: 2) || extensionMatcher.match(extension: "GL_ARB_geometry_shader4"))
444 extensions |= QOpenGLExtensions::GeometryShaders;
445
446 if (format.version() >= qMakePair(value1: 3, value2: 3))
447 extensions |= QOpenGLExtensions::TextureSwizzle;
448
449 if (extensionMatcher.match(extension: "GL_ARB_map_buffer_range"))
450 extensions |= QOpenGLExtensions::MapBufferRange;
451
452 if (extensionMatcher.match(extension: "GL_EXT_framebuffer_sRGB")) {
453 GLboolean srgbCapableFramebuffers = false;
454 ctx->functions()->glGetBooleanv(GL_FRAMEBUFFER_SRGB_CAPABLE_EXT, params: &srgbCapableFramebuffers);
455 if (srgbCapableFramebuffers)
456 extensions |= QOpenGLExtensions::SRGBFrameBuffer;
457 }
458
459 if (extensionMatcher.match(extension: "GL_ARB_ES3_compatibility"))
460 extensions |= QOpenGLExtensions::ETC2TextureCompression;
461 }
462
463 return extensions;
464}
465
466/*!
467 Returns the set of features that are present on this system's
468 OpenGL implementation.
469
470 It is assumed that the QOpenGLContext associated with this function
471 resolver is current.
472
473 \sa hasOpenGLFeature()
474*/
475QOpenGLFunctions::OpenGLFeatures QOpenGLFunctions::openGLFeatures() const
476{
477 QOpenGLFunctionsPrivateEx *d = static_cast<QOpenGLFunctionsPrivateEx *>(d_ptr);
478 if (!d)
479 return { };
480 if (d->m_features == -1)
481 d->m_features = qt_gl_resolve_features();
482 return QOpenGLFunctions::OpenGLFeatures(d->m_features);
483}
484
485/*!
486 Returns \c true if \a feature is present on this system's OpenGL
487 implementation; false otherwise.
488
489 It is assumed that the QOpenGLContext associated with this function
490 resolver is current.
491
492 \sa openGLFeatures()
493*/
494bool QOpenGLFunctions::hasOpenGLFeature(QOpenGLFunctions::OpenGLFeature feature) const
495{
496 QOpenGLFunctionsPrivateEx *d = static_cast<QOpenGLFunctionsPrivateEx *>(d_ptr);
497 if (!d)
498 return false;
499 if (d->m_features == -1)
500 d->m_features = qt_gl_resolve_features();
501 return (d->m_features & int(feature)) != 0;
502}
503
504/*!
505 Returns the set of extensions that are present on this system's
506 OpenGL implementation.
507
508 It is assumed that the QOpenGLContext associated with this extension
509 resolver is current.
510
511 \sa hasOpenGLExtensions()
512*/
513QOpenGLExtensions::OpenGLExtensions QOpenGLExtensions::openGLExtensions()
514{
515 QOpenGLFunctionsPrivateEx *d = static_cast<QOpenGLFunctionsPrivateEx *>(d_ptr);
516 if (!d)
517 return { };
518 if (d->m_extensions == -1)
519 d->m_extensions = qt_gl_resolve_extensions();
520 return QOpenGLExtensions::OpenGLExtensions(d->m_extensions);
521}
522
523/*!
524 Returns \c true if \a extension is present on this system's OpenGL
525 implementation; false otherwise.
526
527 It is assumed that the QOpenGLContext associated with this extension
528 resolver is current.
529
530 \sa openGLFeatures()
531*/
532bool QOpenGLExtensions::hasOpenGLExtension(QOpenGLExtensions::OpenGLExtension extension) const
533{
534 QOpenGLFunctionsPrivateEx *d = static_cast<QOpenGLFunctionsPrivateEx *>(d_ptr);
535 if (!d)
536 return false;
537 if (d->m_extensions == -1)
538 d->m_extensions = qt_gl_resolve_extensions();
539 return (d->m_extensions & int(extension)) != 0;
540}
541
542/*!
543 Initializes OpenGL function resolution for the current context.
544
545 After calling this function, the QOpenGLFunctions object can only be
546 used with the current context and other contexts that share with it.
547 Call initializeOpenGLFunctions() again to change the object's context
548 association.
549*/
550void QOpenGLFunctions::initializeOpenGLFunctions()
551{
552 d_ptr = qt_gl_functions();
553}
554
555/*!
556 \fn void QOpenGLFunctions::glBindTexture(GLenum target, GLuint texture)
557
558 Convenience function that calls glBindTexture(\a target, \a texture).
559
560 For more information, see the OpenGL ES 3.X documentation for
561 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glBindTexture.xhtml}{glBindTexture()}.
562
563 \since 5.3
564*/
565
566/*!
567 \fn void QOpenGLFunctions::glBlendFunc(GLenum sfactor, GLenum dfactor)
568
569 Convenience function that calls glBlendFunc(\a sfactor, \a dfactor).
570
571 For more information, see the OpenGL ES 3.X documentation for
572 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glBlendFunc.xhtml}{glBlendFunc()}.
573
574 \since 5.3
575*/
576
577/*!
578 \fn void QOpenGLFunctions::glClear(GLbitfield mask)
579
580 Convenience function that calls glClear(\a mask).
581
582 For more information, see the OpenGL ES 3.X documentation for
583 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glClear.xhtml}{glClear()}.
584
585 \since 5.3
586*/
587
588/*!
589 \fn void QOpenGLFunctions::glClearColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha)
590
591 Convenience function that calls glClearColor(\a red, \a green, \a blue, \a alpha).
592
593 For more information, see the OpenGL ES 3.X documentation for
594 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glClearColor.xhtml}{glClearColor()}.
595
596 \since 5.3
597*/
598
599/*!
600 \fn void QOpenGLFunctions::glClearStencil(GLint s)
601
602 Convenience function that calls glClearStencil(\a s).
603
604 For more information, see the OpenGL ES 3.X documentation for
605 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glClearStencil.xhtml}{glClearStencil()}.
606
607 \since 5.3
608*/
609
610/*!
611 \fn void QOpenGLFunctions::glColorMask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha)
612
613 Convenience function that calls glColorMask(\a red, \a green, \a blue, \a alpha).
614
615 For more information, see the OpenGL ES 3.X documentation for
616 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glColorMask.xhtml}{glColorMask()}.
617
618 \since 5.3
619*/
620
621/*!
622 \fn void QOpenGLFunctions::glCopyTexImage2D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border)
623
624 Convenience function that calls glCopyTexImage2D(\a target, \a level, \a internalformat, \a x, \a y, \a width, \a height, \a border).
625
626 For more information, see the OpenGL ES 3.X documentation for
627 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glCopyTexImage2D.xhtml}{glCopyTexImage2D()}.
628
629 \since 5.3
630*/
631
632/*!
633 \fn void QOpenGLFunctions::glCopyTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height)
634
635 Convenience function that calls glCopyTexSubImage2D(\a target, \a level, \a xoffset, \a yoffset, \a x, \a y, \a width, \a height).
636
637 For more information, see the OpenGL ES 3.X documentation for
638 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glCopyTexSubImage2D.xhtml}{glCopyTexSubImage2D()}.
639
640 \since 5.3
641*/
642
643/*!
644 \fn void QOpenGLFunctions::glCullFace(GLenum mode)
645
646 Convenience function that calls glCullFace(\a mode).
647
648 For more information, see the OpenGL ES 3.X documentation for
649 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glCullFace.xhtml}{glCullFace()}.
650
651 \since 5.3
652*/
653
654/*!
655 \fn void QOpenGLFunctions::glDeleteTextures(GLsizei n, const GLuint* textures)
656
657 Convenience function that calls glDeleteTextures(\a n, \a textures).
658
659 For more information, see the OpenGL ES 3.X documentation for
660 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glDeleteTextures.xhtml}{glDeleteTextures()}.
661
662 \since 5.3
663*/
664
665/*!
666 \fn void QOpenGLFunctions::glDepthFunc(GLenum func)
667
668 Convenience function that calls glDepthFunc(\a func).
669
670 For more information, see the OpenGL ES 3.X documentation for
671 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glDepthFunc.xhtml}{glDepthFunc()}.
672
673 \since 5.3
674*/
675
676/*!
677 \fn void QOpenGLFunctions::glDepthMask(GLboolean flag)
678
679 Convenience function that calls glDepthMask(\a flag).
680
681 For more information, see the OpenGL ES 3.X documentation for
682 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glDepthMask.xhtml}{glDepthMask()}.
683
684 \since 5.3
685*/
686
687/*!
688 \fn void QOpenGLFunctions::glDisable(GLenum cap)
689
690 Convenience function that calls glDisable(\a cap).
691
692 For more information, see the OpenGL ES 3.X documentation for
693 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glEnable.xhtml}{glDisable()}.
694
695 \since 5.3
696*/
697
698/*!
699 \fn void QOpenGLFunctions::glDrawArrays(GLenum mode, GLint first, GLsizei count)
700
701 Convenience function that calls glDrawArrays(\a mode, \a first, \a count).
702
703 For more information, see the OpenGL ES 3.X documentation for
704 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glDrawArrays.xhtml}{glDrawArrays()}.
705
706 \since 5.3
707*/
708
709/*!
710 \fn void QOpenGLFunctions::glDrawElements(GLenum mode, GLsizei count, GLenum type, const GLvoid* indices)
711
712 Convenience function that calls glDrawElements(\a mode, \a count, \a type, \a indices).
713
714 For more information, see the OpenGL ES 3.X documentation for
715 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glDrawElements.xhtml}{glDrawElements()}.
716
717 \since 5.3
718*/
719
720/*!
721 \fn void QOpenGLFunctions::glEnable(GLenum cap)
722
723 Convenience function that calls glEnable(\a cap).
724
725 For more information, see the OpenGL ES 3.X documentation for
726 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glEnable.xhtml}{glEnable()}.
727
728 \since 5.3
729*/
730
731/*!
732 \fn void QOpenGLFunctions::glFinish()
733
734 Convenience function that calls glFinish().
735
736 For more information, see the OpenGL ES 3.X documentation for
737 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glFinish.xhtml}{glFinish()}.
738
739 \since 5.3
740*/
741
742/*!
743 \fn void QOpenGLFunctions::glFlush()
744
745 Convenience function that calls glFlush().
746
747 For more information, see the OpenGL ES 3.X documentation for
748 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glFlush.xhtml}{glFlush()}.
749
750 \since 5.3
751*/
752
753/*!
754 \fn void QOpenGLFunctions::glFrontFace(GLenum mode)
755
756 Convenience function that calls glFrontFace(\a mode).
757
758 For more information, see the OpenGL ES 3.X documentation for
759 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glFrontFace.xhtml}{glFrontFace()}.
760
761 \since 5.3
762*/
763
764/*!
765 \fn void QOpenGLFunctions::glGenTextures(GLsizei n, GLuint* textures)
766
767 Convenience function that calls glGenTextures(\a n, \a textures).
768
769 For more information, see the OpenGL ES 3.X documentation for
770 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glGenTextures.xhtml}{glGenTextures()}.
771
772 \since 5.3
773*/
774
775/*!
776 \fn void QOpenGLFunctions::glGetBooleanv(GLenum pname, GLboolean* params)
777
778 Convenience function that calls glGetBooleanv(\a pname, \a params).
779
780 For more information, see the OpenGL ES 3.X documentation for
781 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glGet.xhtml}{glGetBooleanv()}.
782
783 \since 5.3
784*/
785
786/*!
787 \fn GLenum QOpenGLFunctions::glGetError()
788
789 Convenience function that calls glGetError().
790
791 For more information, see the OpenGL ES 3.X documentation for
792 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glGetError.xhtml}{glGetError()}.
793
794 \since 5.3
795*/
796
797/*!
798 \fn void QOpenGLFunctions::glGetFloatv(GLenum pname, GLfloat* params)
799
800 Convenience function that calls glGetFloatv(\a pname, \a params).
801
802 For more information, see the OpenGL ES 3.X documentation for
803 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glGet.xhtml}{glGetFloatv()}.
804
805 \since 5.3
806*/
807
808/*!
809 \fn void QOpenGLFunctions::glGetIntegerv(GLenum pname, GLint* params)
810
811 Convenience function that calls glGetIntegerv(\a pname, \a params).
812
813 For more information, see the OpenGL ES 3.X documentation for
814 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glGet.xhtml}{glGetIntegerv()}.
815
816 \since 5.3
817*/
818
819/*!
820 \fn const GLubyte *QOpenGLFunctions::glGetString(GLenum name)
821
822 Convenience function that calls glGetString(\a name).
823
824 For more information, see the OpenGL ES 3.X documentation for
825 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glGetString.xhtml}{glGetString()}.
826
827 \since 5.3
828*/
829
830/*!
831 \fn void QOpenGLFunctions::glGetTexParameterfv(GLenum target, GLenum pname, GLfloat* params)
832
833 Convenience function that calls glGetTexParameterfv(\a target, \a pname, \a params).
834
835 For more information, see the OpenGL ES 3.X documentation for
836 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glGetTexParameter.xhtml}{glGetTexParameterfv()}.
837
838 \since 5.3
839*/
840
841/*!
842 \fn void QOpenGLFunctions::glGetTexParameteriv(GLenum target, GLenum pname, GLint* params)
843
844 Convenience function that calls glGetTexParameteriv(\a target, \a pname, \a params).
845
846 For more information, see the OpenGL ES 3.X documentation for
847 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glGetTexParameter.xhtml}{glGetTexParameteriv()}.
848
849 \since 5.3
850*/
851
852/*!
853 \fn void QOpenGLFunctions::glHint(GLenum target, GLenum mode)
854
855 Convenience function that calls glHint(\a target, \a mode).
856
857 For more information, see the OpenGL ES 3.X documentation for
858 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glHint.xhtml}{glHint()}.
859
860 \since 5.3
861*/
862
863/*!
864 \fn GLboolean QOpenGLFunctions::glIsEnabled(GLenum cap)
865
866 Convenience function that calls glIsEnabled(\a cap).
867
868 For more information, see the OpenGL ES 3.X documentation for
869 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glIsEnabled.xhtml}{glIsEnabled()}.
870
871 \since 5.3
872*/
873
874/*!
875 \fn GLboolean QOpenGLFunctions::glIsTexture(GLuint texture)
876
877 Convenience function that calls glIsTexture(\a texture).
878
879 For more information, see the OpenGL ES 3.X documentation for
880 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glIsTexture.xhtml}{glIsTexture()}.
881
882 \since 5.3
883*/
884
885/*!
886 \fn void QOpenGLFunctions::glLineWidth(GLfloat width)
887
888 Convenience function that calls glLineWidth(\a width).
889
890 For more information, see the OpenGL ES 3.X documentation for
891 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glLineWidth.xhtml}{glLineWidth()}.
892
893 \since 5.3
894*/
895
896/*!
897 \fn void QOpenGLFunctions::glPixelStorei(GLenum pname, GLint param)
898
899 Convenience function that calls glPixelStorei(\a pname, \a param).
900
901 For more information, see the OpenGL ES 3.X documentation for
902 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glPixelStorei.xhtml}{glPixelStorei()}.
903
904 \since 5.3
905*/
906
907/*!
908 \fn void QOpenGLFunctions::glPolygonOffset(GLfloat factor, GLfloat units)
909
910 Convenience function that calls glPolygonOffset(\a factor, \a units).
911
912 For more information, see the OpenGL ES 3.X documentation for
913 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glPolygonOffset.xhtml}{glPolygonOffset()}.
914
915 \since 5.3
916*/
917
918/*!
919 \fn void QOpenGLFunctions::glReadPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid* pixels)
920
921 Convenience function that calls glReadPixels(\a x, \a y, \a width, \a height, \a format, \a type, \a pixels).
922
923 For more information, see the OpenGL ES 3.X documentation for
924 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glReadPixels.xhtml}{glReadPixels()}.
925
926 \since 5.3
927*/
928
929/*!
930 \fn void QOpenGLFunctions::glScissor(GLint x, GLint y, GLsizei width, GLsizei height)
931
932 Convenience function that calls glScissor(\a x, \a y, \a width, \a height).
933
934 For more information, see the OpenGL ES 3.X documentation for
935 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glScissor.xhtml}{glScissor()}.
936
937 \since 5.3
938*/
939
940/*!
941 \fn void QOpenGLFunctions::glStencilFunc(GLenum func, GLint ref, GLuint mask)
942
943 Convenience function that calls glStencilFunc(\a func, \a ref, \a mask).
944
945 For more information, see the OpenGL ES 3.X documentation for
946 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glStencilFunc.xhtml}{glStencilFunc()}.
947
948 \since 5.3
949*/
950
951/*!
952 \fn void QOpenGLFunctions::glStencilMask(GLuint mask)
953
954 Convenience function that calls glStencilMask(\a mask).
955
956 For more information, see the OpenGL ES 3.X documentation for
957 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glStencilMask.xhtml}{glStencilMask()}.
958
959 \since 5.3
960*/
961
962/*!
963 \fn void QOpenGLFunctions::glStencilOp(GLenum fail, GLenum zfail, GLenum zpass)
964
965 Convenience function that calls glStencilOp(\a fail, \a zfail, \a zpass).
966
967 For more information, see the OpenGL ES 3.X documentation for
968 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glStencilOp.xhtml}{glStencilOp()}.
969
970 \since 5.3
971*/
972
973/*!
974 \fn void QOpenGLFunctions::glTexImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid* pixels)
975
976 Convenience function that calls glTexImage2D(\a target, \a level, \a internalformat, \a width, \a height, \a border, \a format, \a type, \a pixels).
977
978 For more information, see the OpenGL ES 3.X documentation for
979 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glTexImage2D.xhtml}{glTexImage2D()}.
980
981 \since 5.3
982*/
983
984/*!
985 \fn void QOpenGLFunctions::glTexParameterf(GLenum target, GLenum pname, GLfloat param)
986
987 Convenience function that calls glTexParameterf(\a target, \a pname, \a param).
988
989 For more information, see the OpenGL ES 3.X documentation for
990 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glTexParameter.xhtml}{glTexParameterf()}.
991
992 \since 5.3
993*/
994
995/*!
996 \fn void QOpenGLFunctions::glTexParameterfv(GLenum target, GLenum pname, const GLfloat* params)
997
998 Convenience function that calls glTexParameterfv(\a target, \a pname, \a params).
999
1000 For more information, see the OpenGL ES 3.X documentation for
1001 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glTexParameter.xhtml}{glTexParameterfv()}.
1002
1003 \since 5.3
1004*/
1005
1006/*!
1007 \fn void QOpenGLFunctions::glTexParameteri(GLenum target, GLenum pname, GLint param)
1008
1009 Convenience function that calls glTexParameteri(\a target, \a pname, \a param).
1010
1011 For more information, see the OpenGL ES 3.X documentation for
1012 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glTexParameter.xhtml}{glTexParameteri()}.
1013
1014 \since 5.3
1015*/
1016
1017/*!
1018 \fn void QOpenGLFunctions::glTexParameteriv(GLenum target, GLenum pname, const GLint* params)
1019
1020 Convenience function that calls glTexParameteriv(\a target, \a pname, \a params).
1021
1022 For more information, see the OpenGL ES 3.X documentation for
1023 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glTexParameter.xhtml}{glTexParameteriv()}.
1024
1025 \since 5.3
1026*/
1027
1028/*!
1029 \fn void QOpenGLFunctions::glTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid* pixels)
1030
1031 Convenience function that calls glTexSubImage2D(\a target, \a level, \a xoffset, \a yoffset, \a width, \a height, \a format, \a type, \a pixels).
1032
1033 For more information, see the OpenGL ES 3.X documentation for
1034 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glTexSubImage2D.xhtml}{glTexSubImage2D()}.
1035
1036 \since 5.3
1037*/
1038
1039/*!
1040 \fn void QOpenGLFunctions::glViewport(GLint x, GLint y, GLsizei width, GLsizei height)
1041
1042 Convenience function that calls glViewport(\a x, \a y, \a width, \a height).
1043
1044 For more information, see the OpenGL ES 3.X documentation for
1045 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glViewport.xhtml}{glViewport()}.
1046
1047 \since 5.3
1048*/
1049
1050/*!
1051 \fn void QOpenGLFunctions::glActiveTexture(GLenum texture)
1052
1053 Convenience function that calls glActiveTexture(\a texture).
1054
1055 For more information, see the OpenGL ES 3.X documentation for
1056 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glActiveTexture.xhtml}{glActiveTexture()}.
1057*/
1058
1059/*!
1060 \fn void QOpenGLFunctions::glAttachShader(GLuint program, GLuint shader)
1061
1062 Convenience function that calls glAttachShader(\a program, \a shader).
1063
1064 For more information, see the OpenGL ES 3.X documentation for
1065 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glAttachShader.xhtml}{glAttachShader()}.
1066
1067 This convenience function will do nothing on OpenGL ES 1.x systems.
1068*/
1069
1070/*!
1071 \fn void QOpenGLFunctions::glBindAttribLocation(GLuint program, GLuint index, const char* name)
1072
1073 Convenience function that calls glBindAttribLocation(\a program, \a index, \a name).
1074
1075 For more information, see the OpenGL ES 3.X documentation for
1076 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glBindAttribLocation.xhtml}{glBindAttribLocation()}.
1077
1078 This convenience function will do nothing on OpenGL ES 1.x systems.
1079*/
1080
1081/*!
1082 \fn void QOpenGLFunctions::glBindBuffer(GLenum target, GLuint buffer)
1083
1084 Convenience function that calls glBindBuffer(\a target, \a buffer).
1085
1086 For more information, see the OpenGL ES 3.X documentation for
1087 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glBindBuffer.xhtml}{glBindBuffer()}.
1088*/
1089
1090/*!
1091 \fn void QOpenGLFunctions::glBindFramebuffer(GLenum target, GLuint framebuffer)
1092
1093 Convenience function that calls glBindFramebuffer(\a target, \a framebuffer).
1094
1095 Note that Qt will translate a \a framebuffer argument of 0 to the currently
1096 bound QOpenGLContext's defaultFramebufferObject().
1097
1098 For more information, see the OpenGL ES 3.X documentation for
1099 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glBindFramebuffer.xhtml}{glBindFramebuffer()}.
1100*/
1101
1102/*!
1103 \fn void QOpenGLFunctions::glBindRenderbuffer(GLenum target, GLuint renderbuffer)
1104
1105 Convenience function that calls glBindRenderbuffer(\a target, \a renderbuffer).
1106
1107 For more information, see the OpenGL ES 3.X documentation for
1108 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glBindRenderbuffer.xhtml}{glBindRenderbuffer()}.
1109*/
1110
1111/*!
1112 \fn void QOpenGLFunctions::glBlendColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha)
1113
1114 Convenience function that calls glBlendColor(\a red, \a green, \a blue, \a alpha).
1115
1116 For more information, see the OpenGL ES 3.X documentation for
1117 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glBlendColor.xhtml}{glBlendColor()}.
1118*/
1119
1120/*!
1121 \fn void QOpenGLFunctions::glBlendEquation(GLenum mode)
1122
1123 Convenience function that calls glBlendEquation(\a mode).
1124
1125 For more information, see the OpenGL ES 3.X documentation for
1126 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glBlendEquation.xhtml}{glBlendEquation()}.
1127*/
1128
1129/*!
1130 \fn void QOpenGLFunctions::glBlendEquationSeparate(GLenum modeRGB, GLenum modeAlpha)
1131
1132 Convenience function that calls glBlendEquationSeparate(\a modeRGB, \a modeAlpha).
1133
1134 For more information, see the OpenGL ES 3.X documentation for
1135 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glBlendEquationSeparate.xhtml}{glBlendEquationSeparate()}.
1136*/
1137
1138/*!
1139 \fn void QOpenGLFunctions::glBlendFuncSeparate(GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha)
1140
1141 Convenience function that calls glBlendFuncSeparate(\a srcRGB, \a dstRGB, \a srcAlpha, \a dstAlpha).
1142
1143 For more information, see the OpenGL ES 3.X documentation for
1144 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glBlendFuncSeparate.xhtml}{glBlendFuncSeparate()}.
1145*/
1146
1147/*!
1148 \fn void QOpenGLFunctions::glBufferData(GLenum target, qopengl_GLsizeiptr size, const void* data, GLenum usage)
1149
1150 Convenience function that calls glBufferData(\a target, \a size, \a data, \a usage).
1151
1152 For more information, see the OpenGL ES 3.X documentation for
1153 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glBufferData.xhtml}{glBufferData()}.
1154*/
1155
1156/*!
1157 \fn void QOpenGLFunctions::glBufferSubData(GLenum target, qopengl_GLintptr offset, qopengl_GLsizeiptr size, const void* data)
1158
1159 Convenience function that calls glBufferSubData(\a target, \a offset, \a size, \a data).
1160
1161 For more information, see the OpenGL ES 3.X documentation for
1162 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glBufferSubData.xhtml}{glBufferSubData()}.
1163*/
1164
1165/*!
1166 \fn GLenum QOpenGLFunctions::glCheckFramebufferStatus(GLenum target)
1167
1168 Convenience function that calls glCheckFramebufferStatus(\a target).
1169
1170 For more information, see the OpenGL ES 3.X documentation for
1171 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glCheckFramebufferStatus.xhtml}{glCheckFramebufferStatus()}.
1172*/
1173
1174/*!
1175 \fn void QOpenGLFunctions::glClearDepthf(GLclampf depth)
1176
1177 Convenience function that calls glClearDepth(\a depth) on
1178 desktop OpenGL systems and glClearDepthf(\a depth) on
1179 embedded OpenGL ES systems.
1180
1181 For more information, see the OpenGL ES 3.X documentation for
1182 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glClearDepthf.xhtml}{glClearDepthf()}.
1183*/
1184
1185/*!
1186 \fn void QOpenGLFunctions::glCompileShader(GLuint shader)
1187
1188 Convenience function that calls glCompileShader(\a shader).
1189
1190 For more information, see the OpenGL ES 3.X documentation for
1191 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glCompileShader.xhtml}{glCompileShader()}.
1192
1193 This convenience function will do nothing on OpenGL ES 1.x systems.
1194*/
1195
1196/*!
1197 \fn void QOpenGLFunctions::glCompressedTexImage2D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void* data)
1198
1199 Convenience function that calls glCompressedTexImage2D(\a target, \a level, \a internalformat, \a width, \a height, \a border, \a imageSize, \a data).
1200
1201 For more information, see the OpenGL ES 3.X documentation for
1202 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glCompressedTexImage2D.xhtml}{glCompressedTexImage2D()}.
1203*/
1204
1205/*!
1206 \fn void QOpenGLFunctions::glCompressedTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void* data)
1207
1208 Convenience function that calls glCompressedTexSubImage2D(\a target, \a level, \a xoffset, \a yoffset, \a width, \a height, \a format, \a imageSize, \a data).
1209
1210 For more information, see the OpenGL ES 3.X documentation for
1211 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glCompressedTexSubImage2D.xhtml}{glCompressedTexSubImage2D()}.
1212*/
1213
1214/*!
1215 \fn GLuint QOpenGLFunctions::glCreateProgram()
1216
1217 Convenience function that calls glCreateProgram().
1218
1219 For more information, see the OpenGL ES 3.X documentation for
1220 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glCreateProgram.xhtml}{glCreateProgram()}.
1221
1222 This convenience function will do nothing on OpenGL ES 1.x systems.
1223*/
1224
1225/*!
1226 \fn GLuint QOpenGLFunctions::glCreateShader(GLenum type)
1227
1228 Convenience function that calls glCreateShader(\a type).
1229
1230 For more information, see the OpenGL ES 3.X documentation for
1231 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glCreateShader.xhtml}{glCreateShader()}.
1232
1233 This convenience function will do nothing on OpenGL ES 1.x systems.
1234*/
1235
1236/*!
1237 \fn void QOpenGLFunctions::glDeleteBuffers(GLsizei n, const GLuint* buffers)
1238
1239 Convenience function that calls glDeleteBuffers(\a n, \a buffers).
1240
1241 For more information, see the OpenGL ES 3.X documentation for
1242 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glDeleteBuffers.xhtml}{glDeleteBuffers()}.
1243*/
1244
1245/*!
1246 \fn void QOpenGLFunctions::glDeleteFramebuffers(GLsizei n, const GLuint* framebuffers)
1247
1248 Convenience function that calls glDeleteFramebuffers(\a n, \a framebuffers).
1249
1250 For more information, see the OpenGL ES 3.X documentation for
1251 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glDeleteFramebuffers.xhtml}{glDeleteFramebuffers()}.
1252*/
1253
1254/*!
1255 \fn void QOpenGLFunctions::glDeleteProgram(GLuint program)
1256
1257 Convenience function that calls glDeleteProgram(\a program).
1258
1259 For more information, see the OpenGL ES 3.X documentation for
1260 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glDeleteProgram.xhtml}{glDeleteProgram()}.
1261
1262 This convenience function will do nothing on OpenGL ES 1.x systems.
1263*/
1264
1265/*!
1266 \fn void QOpenGLFunctions::glDeleteRenderbuffers(GLsizei n, const GLuint* renderbuffers)
1267
1268 Convenience function that calls glDeleteRenderbuffers(\a n, \a renderbuffers).
1269
1270 For more information, see the OpenGL ES 3.X documentation for
1271 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glDeleteRenderbuffers.xhtml}{glDeleteRenderbuffers()}.
1272*/
1273
1274/*!
1275 \fn void QOpenGLFunctions::glDeleteShader(GLuint shader)
1276
1277 Convenience function that calls glDeleteShader(\a shader).
1278
1279 For more information, see the OpenGL ES 3.X documentation for
1280 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glDeleteShader.xhtml}{glDeleteShader()}.
1281
1282 This convenience function will do nothing on OpenGL ES 1.x systems.
1283*/
1284
1285/*!
1286 \fn void QOpenGLFunctions::glDepthRangef(GLclampf zNear, GLclampf zFar)
1287
1288 Convenience function that calls glDepthRange(\a zNear, \a zFar) on
1289 desktop OpenGL systems and glDepthRangef(\a zNear, \a zFar) on
1290 embedded OpenGL ES systems.
1291
1292 For more information, see the OpenGL ES 3.X documentation for
1293 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glDepthRangef.xhtml}{glDepthRangef()}.
1294*/
1295
1296/*!
1297 \fn void QOpenGLFunctions::glDetachShader(GLuint program, GLuint shader)
1298
1299 Convenience function that calls glDetachShader(\a program, \a shader).
1300
1301 For more information, see the OpenGL ES 3.X documentation for
1302 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glDetachShader.xhtml}{glDetachShader()}.
1303
1304 This convenience function will do nothing on OpenGL ES 1.x systems.
1305*/
1306
1307/*!
1308 \fn void QOpenGLFunctions::glDisableVertexAttribArray(GLuint index)
1309
1310 Convenience function that calls glDisableVertexAttribArray(\a index).
1311
1312 For more information, see the OpenGL ES 3.X documentation for
1313 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glEnableVertexAttribArray.xhtml}{glDisableVertexAttribArray()}.
1314
1315 This convenience function will do nothing on OpenGL ES 1.x systems.
1316*/
1317
1318/*!
1319 \fn void QOpenGLFunctions::glEnableVertexAttribArray(GLuint index)
1320
1321 Convenience function that calls glEnableVertexAttribArray(\a index).
1322
1323 For more information, see the OpenGL ES 3.X documentation for
1324 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glEnableVertexAttribArray.xhtml}{glEnableVertexAttribArray()}.
1325
1326 This convenience function will do nothing on OpenGL ES 1.x systems.
1327*/
1328
1329/*!
1330 \fn void QOpenGLFunctions::glFramebufferRenderbuffer(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer)
1331
1332 Convenience function that calls glFramebufferRenderbuffer(\a target, \a attachment, \a renderbuffertarget, \a renderbuffer).
1333
1334 For more information, see the OpenGL ES 3.X documentation for
1335 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glFramebufferRenderbuffer.xhtml}{glFramebufferRenderbuffer()}.
1336*/
1337
1338/*!
1339 \fn void QOpenGLFunctions::glFramebufferTexture2D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level)
1340
1341 Convenience function that calls glFramebufferTexture2D(\a target, \a attachment, \a textarget, \a texture, \a level).
1342
1343 For more information, see the OpenGL ES 3.X documentation for
1344 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glFramebufferTexture2D.xhtml}{glFramebufferTexture2D()}.
1345*/
1346
1347/*!
1348 \fn void QOpenGLFunctions::glGenBuffers(GLsizei n, GLuint* buffers)
1349
1350 Convenience function that calls glGenBuffers(\a n, \a buffers).
1351
1352 For more information, see the OpenGL ES 3.X documentation for
1353 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glGenBuffers.xhtml}{glGenBuffers()}.
1354*/
1355
1356/*!
1357 \fn void QOpenGLFunctions::glGenerateMipmap(GLenum target)
1358
1359 Convenience function that calls glGenerateMipmap(\a target).
1360
1361 For more information, see the OpenGL ES 3.X documentation for
1362 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glGenerateMipmap.xhtml}{glGenerateMipmap()}.
1363*/
1364
1365/*!
1366 \fn void QOpenGLFunctions::glGenFramebuffers(GLsizei n, GLuint* framebuffers)
1367
1368 Convenience function that calls glGenFramebuffers(\a n, \a framebuffers).
1369
1370 For more information, see the OpenGL ES 3.X documentation for
1371 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glGenFramebuffers.xhtml}{glGenFramebuffers()}.
1372*/
1373
1374/*!
1375 \fn void QOpenGLFunctions::glGenRenderbuffers(GLsizei n, GLuint* renderbuffers)
1376
1377 Convenience function that calls glGenRenderbuffers(\a n, \a renderbuffers).
1378
1379 For more information, see the OpenGL ES 3.X documentation for
1380 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glGenRenderbuffers.xhtml}{glGenRenderbuffers()}.
1381*/
1382
1383/*!
1384 \fn void QOpenGLFunctions::glGetActiveAttrib(GLuint program, GLuint index, GLsizei bufsize, GLsizei* length, GLint* size, GLenum* type, char* name)
1385
1386 Convenience function that calls glGetActiveAttrib(\a program, \a index, \a bufsize, \a length, \a size, \a type, \a name).
1387
1388 For more information, see the OpenGL ES 3.X documentation for
1389 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glGetActiveAttrib.xhtml}{glGetActiveAttrib()}.
1390
1391 This convenience function will do nothing on OpenGL ES 1.x systems.
1392*/
1393
1394/*!
1395 \fn void QOpenGLFunctions::glGetActiveUniform(GLuint program, GLuint index, GLsizei bufsize, GLsizei* length, GLint* size, GLenum* type, char* name)
1396
1397 Convenience function that calls glGetActiveUniform(\a program, \a index, \a bufsize, \a length, \a size, \a type, \a name).
1398
1399 For more information, see the OpenGL ES 3.X documentation for
1400 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glGetActiveUniform.xhtml}{glGetActiveUniform()}.
1401
1402 This convenience function will do nothing on OpenGL ES 1.x systems.
1403*/
1404
1405/*!
1406 \fn void QOpenGLFunctions::glGetAttachedShaders(GLuint program, GLsizei maxcount, GLsizei* count, GLuint* shaders)
1407
1408 Convenience function that calls glGetAttachedShaders(\a program, \a maxcount, \a count, \a shaders).
1409
1410 For more information, see the OpenGL ES 3.X documentation for
1411 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glGetAttachedShaders.xhtml}{glGetAttachedShaders()}.
1412
1413 This convenience function will do nothing on OpenGL ES 1.x systems.
1414*/
1415
1416/*!
1417 \fn GLint QOpenGLFunctions::glGetAttribLocation(GLuint program, const char* name)
1418
1419 Convenience function that calls glGetAttribLocation(\a program, \a name).
1420
1421 For more information, see the OpenGL ES 3.X documentation for
1422 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glGetAttribLocation.xhtml}{glGetAttribLocation()}.
1423
1424 This convenience function will do nothing on OpenGL ES 1.x systems.
1425*/
1426
1427/*!
1428 \fn void QOpenGLFunctions::glGetBufferParameteriv(GLenum target, GLenum pname, GLint* params)
1429
1430 Convenience function that calls glGetBufferParameteriv(\a target, \a pname, \a params).
1431
1432 For more information, see the OpenGL ES 3.X documentation for
1433 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glGetBufferParameter.xhtml}{glGetBufferParameteriv()}.
1434*/
1435
1436/*!
1437 \fn void QOpenGLFunctions::glGetFramebufferAttachmentParameteriv(GLenum target, GLenum attachment, GLenum pname, GLint* params)
1438
1439 Convenience function that calls glGetFramebufferAttachmentParameteriv(\a target, \a attachment, \a pname, \a params).
1440
1441 For more information, see the OpenGL ES 3.X documentation for
1442 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glGetFramebufferAttachmentParameteriv.xhtml}{glGetFramebufferAttachmentParameteriv()}.
1443*/
1444
1445/*!
1446 \fn void QOpenGLFunctions::glGetProgramiv(GLuint program, GLenum pname, GLint* params)
1447
1448 Convenience function that calls glGetProgramiv(\a program, \a pname, \a params).
1449
1450 For more information, see the OpenGL ES 3.X documentation for
1451 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glGetProgramiv.xhtml}{glGetProgramiv()}.
1452
1453 This convenience function will do nothing on OpenGL ES 1.x systems.
1454*/
1455
1456/*!
1457 \fn void QOpenGLFunctions::glGetProgramInfoLog(GLuint program, GLsizei bufsize, GLsizei* length, char* infolog)
1458
1459 Convenience function that calls glGetProgramInfoLog(\a program, \a bufsize, \a length, \a infolog).
1460
1461 For more information, see the OpenGL ES 3.X documentation for
1462 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glGetProgramInfoLog.xhtml}{glGetProgramInfoLog()}.
1463
1464 This convenience function will do nothing on OpenGL ES 1.x systems.
1465*/
1466
1467/*!
1468 \fn void QOpenGLFunctions::glGetRenderbufferParameteriv(GLenum target, GLenum pname, GLint* params)
1469
1470 Convenience function that calls glGetRenderbufferParameteriv(\a target, \a pname, \a params).
1471
1472 For more information, see the OpenGL ES 3.X documentation for
1473 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glGetRenderbufferParameteriv.xhtml}{glGetRenderbufferParameteriv()}.
1474*/
1475
1476/*!
1477 \fn void QOpenGLFunctions::glGetShaderiv(GLuint shader, GLenum pname, GLint* params)
1478
1479 Convenience function that calls glGetShaderiv(\a shader, \a pname, \a params).
1480
1481 For more information, see the OpenGL ES 3.X documentation for
1482 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glGetShaderiv.xhtml}{glGetShaderiv()}.
1483
1484 This convenience function will do nothing on OpenGL ES 1.x systems.
1485*/
1486
1487/*!
1488 \fn void QOpenGLFunctions::glGetShaderInfoLog(GLuint shader, GLsizei bufsize, GLsizei* length, char* infolog)
1489
1490 Convenience function that calls glGetShaderInfoLog(\a shader, \a bufsize, \a length, \a infolog).
1491
1492 For more information, see the OpenGL ES 3.X documentation for
1493 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glGetShaderInfoLog.xhtml}{glGetShaderInfoLog()}.
1494
1495 This convenience function will do nothing on OpenGL ES 1.x systems.
1496*/
1497
1498/*!
1499 \fn void QOpenGLFunctions::glGetShaderPrecisionFormat(GLenum shadertype, GLenum precisiontype, GLint* range, GLint* precision)
1500
1501 Convenience function that calls glGetShaderPrecisionFormat(\a shadertype, \a precisiontype, \a range, \a precision).
1502
1503 For more information, see the OpenGL ES 3.X documentation for
1504 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glGetShaderPrecisionFormat.xhtml}{glGetShaderPrecisionFormat()}.
1505
1506 This convenience function will do nothing on OpenGL ES 1.x systems.
1507*/
1508
1509/*!
1510 \fn void QOpenGLFunctions::glGetShaderSource(GLuint shader, GLsizei bufsize, GLsizei* length, char* source)
1511
1512 Convenience function that calls glGetShaderSource(\a shader, \a bufsize, \a length, \a source).
1513
1514 For more information, see the OpenGL ES 3.X documentation for
1515 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glGetShaderSource.xhtml}{glGetShaderSource()}.
1516
1517 This convenience function will do nothing on OpenGL ES 1.x systems.
1518*/
1519
1520/*!
1521 \fn void QOpenGLFunctions::glGetUniformfv(GLuint program, GLint location, GLfloat* params)
1522
1523 Convenience function that calls glGetUniformfv(\a program, \a location, \a params).
1524
1525 For more information, see the OpenGL ES 3.X documentation for
1526 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glGetUniform.xhtml}{glGetUniformfv()}.
1527
1528 This convenience function will do nothing on OpenGL ES 1.x systems.
1529*/
1530
1531/*!
1532 \fn void QOpenGLFunctions::glGetUniformiv(GLuint program, GLint location, GLint* params)
1533
1534 Convenience function that calls glGetUniformiv(\a program, \a location, \a params).
1535
1536 For more information, see the OpenGL ES 3.X documentation for
1537 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glGetUniform.xhtml}{glGetUniformiv()}.
1538
1539 This convenience function will do nothing on OpenGL ES 1.x systems.
1540*/
1541
1542/*!
1543 \fn GLint QOpenGLFunctions::glGetUniformLocation(GLuint program, const char* name)
1544
1545 Convenience function that calls glGetUniformLocation(\a program, \a name).
1546
1547 For more information, see the OpenGL ES 3.X documentation for
1548 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glGetUniformLocation.xhtml}{glGetUniformLocation()}.
1549
1550 This convenience function will do nothing on OpenGL ES 1.x systems.
1551*/
1552
1553/*!
1554 \fn void QOpenGLFunctions::glGetVertexAttribfv(GLuint index, GLenum pname, GLfloat* params)
1555
1556 Convenience function that calls glGetVertexAttribfv(\a index, \a pname, \a params).
1557
1558 For more information, see the OpenGL ES 3.X documentation for
1559 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glGetVertexAttrib.xhtml}{glGetVertexAttribfv()}.
1560
1561 This convenience function will do nothing on OpenGL ES 1.x systems.
1562*/
1563
1564/*!
1565 \fn void QOpenGLFunctions::glGetVertexAttribiv(GLuint index, GLenum pname, GLint* params)
1566
1567 Convenience function that calls glGetVertexAttribiv(\a index, \a pname, \a params).
1568
1569 For more information, see the OpenGL ES 3.X documentation for
1570 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glGetVertexAttrib.xhtml}{glGetVertexAttribiv()}.
1571
1572 This convenience function will do nothing on OpenGL ES 1.x systems.
1573*/
1574
1575/*!
1576 \fn void QOpenGLFunctions::glGetVertexAttribPointerv(GLuint index, GLenum pname, void** pointer)
1577
1578 Convenience function that calls glGetVertexAttribPointerv(\a index, \a pname, \a pointer).
1579
1580 For more information, see the OpenGL ES 3.X documentation for
1581 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glGetVertexAttribPointerv.xhtml}{glGetVertexAttribPointerv()}.
1582
1583 This convenience function will do nothing on OpenGL ES 1.x systems.
1584*/
1585
1586/*!
1587 \fn GLboolean QOpenGLFunctions::glIsBuffer(GLuint buffer)
1588
1589 Convenience function that calls glIsBuffer(\a buffer).
1590
1591 For more information, see the OpenGL ES 3.X documentation for
1592 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glIsBuffer.xhtml}{glIsBuffer()}.
1593*/
1594
1595/*!
1596 \fn GLboolean QOpenGLFunctions::glIsFramebuffer(GLuint framebuffer)
1597
1598 Convenience function that calls glIsFramebuffer(\a framebuffer).
1599
1600 For more information, see the OpenGL ES 3.X documentation for
1601 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glIsFramebuffer.xhtml}{glIsFramebuffer()}.
1602*/
1603
1604/*!
1605 \fn GLboolean QOpenGLFunctions::glIsProgram(GLuint program)
1606
1607 Convenience function that calls glIsProgram(\a program).
1608
1609 For more information, see the OpenGL ES 3.X documentation for
1610 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glIsProgram.xhtml}{glIsProgram()}.
1611
1612 This convenience function will do nothing on OpenGL ES 1.x systems.
1613*/
1614
1615/*!
1616 \fn GLboolean QOpenGLFunctions::glIsRenderbuffer(GLuint renderbuffer)
1617
1618 Convenience function that calls glIsRenderbuffer(\a renderbuffer).
1619
1620 For more information, see the OpenGL ES 3.X documentation for
1621 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glIsRenderbuffer.xhtml}{glIsRenderbuffer()}.
1622*/
1623
1624/*!
1625 \fn GLboolean QOpenGLFunctions::glIsShader(GLuint shader)
1626
1627 Convenience function that calls glIsShader(\a shader).
1628
1629 For more information, see the OpenGL ES 3.X documentation for
1630 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glIsShader.xhtml}{glIsShader()}.
1631
1632 This convenience function will do nothing on OpenGL ES 1.x systems.
1633*/
1634
1635/*!
1636 \fn void QOpenGLFunctions::glLinkProgram(GLuint program)
1637
1638 Convenience function that calls glLinkProgram(\a program).
1639
1640 For more information, see the OpenGL ES 3.X documentation for
1641 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glLinkProgram.xhtml}{glLinkProgram()}.
1642
1643 This convenience function will do nothing on OpenGL ES 1.x systems.
1644*/
1645
1646/*!
1647 \fn void QOpenGLFunctions::glReleaseShaderCompiler()
1648
1649 Convenience function that calls glReleaseShaderCompiler().
1650
1651 For more information, see the OpenGL ES 3.X documentation for
1652 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glReleaseShaderCompiler.xhtml}{glReleaseShaderCompiler()}.
1653
1654 This convenience function will do nothing on OpenGL ES 1.x systems.
1655*/
1656
1657/*!
1658 \fn void QOpenGLFunctions::glRenderbufferStorage(GLenum target, GLenum internalformat, GLsizei width, GLsizei height)
1659
1660 Convenience function that calls glRenderbufferStorage(\a target, \a internalformat, \a width, \a height).
1661
1662 For more information, see the OpenGL ES 3.X documentation for
1663 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glRenderbufferStorage.xhtml}{glRenderbufferStorage()}.
1664*/
1665
1666/*!
1667 \fn void QOpenGLFunctions::glSampleCoverage(GLclampf value, GLboolean invert)
1668
1669 Convenience function that calls glSampleCoverage(\a value, \a invert).
1670
1671 For more information, see the OpenGL ES 3.X documentation for
1672 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glSampleCoverage.xhtml}{glSampleCoverage()}.
1673*/
1674
1675/*!
1676 \fn void QOpenGLFunctions::glShaderBinary(GLint n, const GLuint* shaders, GLenum binaryformat, const void* binary, GLint length)
1677
1678 Convenience function that calls glShaderBinary(\a n, \a shaders, \a binaryformat, \a binary, \a length).
1679
1680 For more information, see the OpenGL ES 3.X documentation for
1681 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glShaderBinary.xhtml}{glShaderBinary()}.
1682
1683 This convenience function will do nothing on OpenGL ES 1.x systems.
1684*/
1685
1686/*!
1687 \fn void QOpenGLFunctions::glShaderSource(GLuint shader, GLsizei count, const char** string, const GLint* length)
1688
1689 Convenience function that calls glShaderSource(\a shader, \a count, \a string, \a length).
1690
1691 For more information, see the OpenGL ES 3.X documentation for
1692 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glShaderSource.xhtml}{glShaderSource()}.
1693
1694 This convenience function will do nothing on OpenGL ES 1.x systems.
1695*/
1696
1697/*!
1698 \fn void QOpenGLFunctions::glStencilFuncSeparate(GLenum face, GLenum func, GLint ref, GLuint mask)
1699
1700 Convenience function that calls glStencilFuncSeparate(\a face, \a func, \a ref, \a mask).
1701
1702 For more information, see the OpenGL ES 3.X documentation for
1703 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glStencilFuncSeparate.xhtml}{glStencilFuncSeparate()}.
1704*/
1705
1706/*!
1707 \fn void QOpenGLFunctions::glStencilMaskSeparate(GLenum face, GLuint mask)
1708
1709 Convenience function that calls glStencilMaskSeparate(\a face, \a mask).
1710
1711 For more information, see the OpenGL ES 3.X documentation for
1712 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glStencilMaskSeparate.xhtml}{glStencilMaskSeparate()}.
1713*/
1714
1715/*!
1716 \fn void QOpenGLFunctions::glStencilOpSeparate(GLenum face, GLenum fail, GLenum zfail, GLenum zpass)
1717
1718 Convenience function that calls glStencilOpSeparate(\a face, \a fail, \a zfail, \a zpass).
1719
1720 For more information, see the OpenGL ES 3.X documentation for
1721 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glStencilOpSeparate.xhtml}{glStencilOpSeparate()}.
1722*/
1723
1724/*!
1725 \fn void QOpenGLFunctions::glUniform1f(GLint location, GLfloat x)
1726
1727 Convenience function that calls glUniform1f(\a location, \a x).
1728
1729 For more information, see the OpenGL ES 3.X documentation for
1730 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glUniform.xhtml}{glUniform1f()}.
1731
1732 This convenience function will do nothing on OpenGL ES 1.x systems.
1733*/
1734
1735/*!
1736 \fn void QOpenGLFunctions::glUniform1fv(GLint location, GLsizei count, const GLfloat* v)
1737
1738 Convenience function that calls glUniform1fv(\a location, \a count, \a v).
1739
1740 For more information, see the OpenGL ES 3.X documentation for
1741 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glUniform.xhtml}{glUniform1fv()}.
1742
1743 This convenience function will do nothing on OpenGL ES 1.x systems.
1744*/
1745
1746/*!
1747 \fn void QOpenGLFunctions::glUniform1i(GLint location, GLint x)
1748
1749 Convenience function that calls glUniform1i(\a location, \a x).
1750
1751 For more information, see the OpenGL ES 3.X documentation for
1752 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glUniform.xhtml}{glUniform1i()}.
1753
1754 This convenience function will do nothing on OpenGL ES 1.x systems.
1755*/
1756
1757/*!
1758 \fn void QOpenGLFunctions::glUniform1iv(GLint location, GLsizei count, const GLint* v)
1759
1760 Convenience function that calls glUniform1iv(\a location, \a count, \a v).
1761
1762 For more information, see the OpenGL ES 3.X documentation for
1763 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glUniform.xhtml}{glUniform1iv()}.
1764
1765 This convenience function will do nothing on OpenGL ES 1.x systems.
1766*/
1767
1768/*!
1769 \fn void QOpenGLFunctions::glUniform2f(GLint location, GLfloat x, GLfloat y)
1770
1771 Convenience function that calls glUniform2f(\a location, \a x, \a y).
1772
1773 For more information, see the OpenGL ES 3.X documentation for
1774 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glUniform.xhtml}{glUniform2f()}.
1775
1776 This convenience function will do nothing on OpenGL ES 1.x systems.
1777*/
1778
1779/*!
1780 \fn void QOpenGLFunctions::glUniform2fv(GLint location, GLsizei count, const GLfloat* v)
1781
1782 Convenience function that calls glUniform2fv(\a location, \a count, \a v).
1783
1784 For more information, see the OpenGL ES 3.X documentation for
1785 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glUniform.xhtml}{glUniform2fv()}.
1786
1787 This convenience function will do nothing on OpenGL ES 1.x systems.
1788*/
1789
1790/*!
1791 \fn void QOpenGLFunctions::glUniform2i(GLint location, GLint x, GLint y)
1792
1793 Convenience function that calls glUniform2i(\a location, \a x, \a y).
1794
1795 For more information, see the OpenGL ES 3.X documentation for
1796 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glUniform.xhtml}{glUniform2i()}.
1797
1798 This convenience function will do nothing on OpenGL ES 1.x systems.
1799*/
1800
1801/*!
1802 \fn void QOpenGLFunctions::glUniform2iv(GLint location, GLsizei count, const GLint* v)
1803
1804 Convenience function that calls glUniform2iv(\a location, \a count, \a v).
1805
1806 For more information, see the OpenGL ES 3.X documentation for
1807 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glUniform.xhtml}{glUniform2iv()}.
1808
1809 This convenience function will do nothing on OpenGL ES 1.x systems.
1810*/
1811
1812/*!
1813 \fn void QOpenGLFunctions::glUniform3f(GLint location, GLfloat x, GLfloat y, GLfloat z)
1814
1815 Convenience function that calls glUniform3f(\a location, \a x, \a y, \a z).
1816
1817 For more information, see the OpenGL ES 3.X documentation for
1818 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glUniform.xhtml}{glUniform3f()}.
1819
1820 This convenience function will do nothing on OpenGL ES 1.x systems.
1821*/
1822
1823/*!
1824 \fn void QOpenGLFunctions::glUniform3fv(GLint location, GLsizei count, const GLfloat* v)
1825
1826 Convenience function that calls glUniform3fv(\a location, \a count, \a v).
1827
1828 For more information, see the OpenGL ES 3.X documentation for
1829 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glUniform.xhtml}{glUniform3fv()}.
1830
1831 This convenience function will do nothing on OpenGL ES 1.x systems.
1832*/
1833
1834/*!
1835 \fn void QOpenGLFunctions::glUniform3i(GLint location, GLint x, GLint y, GLint z)
1836
1837 Convenience function that calls glUniform3i(\a location, \a x, \a y, \a z).
1838
1839 For more information, see the OpenGL ES 3.X documentation for
1840 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glUniform.xhtml}{glUniform3i()}.
1841
1842 This convenience function will do nothing on OpenGL ES 1.x systems.
1843*/
1844
1845/*!
1846 \fn void QOpenGLFunctions::glUniform3iv(GLint location, GLsizei count, const GLint* v)
1847
1848 Convenience function that calls glUniform3iv(\a location, \a count, \a v).
1849
1850 For more information, see the OpenGL ES 3.X documentation for
1851 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glUniform.xhtml}{glUniform3iv()}.
1852
1853 This convenience function will do nothing on OpenGL ES 1.x systems.
1854*/
1855
1856/*!
1857 \fn void QOpenGLFunctions::glUniform4f(GLint location, GLfloat x, GLfloat y, GLfloat z, GLfloat w)
1858
1859 Convenience function that calls glUniform4f(\a location, \a x, \a y, \a z, \a w).
1860
1861 For more information, see the OpenGL ES 3.X documentation for
1862 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glUniform.xhtml}{glUniform4f()}.
1863
1864 This convenience function will do nothing on OpenGL ES 1.x systems.
1865*/
1866
1867/*!
1868 \fn void QOpenGLFunctions::glUniform4fv(GLint location, GLsizei count, const GLfloat* v)
1869
1870 Convenience function that calls glUniform4fv(\a location, \a count, \a v).
1871
1872 For more information, see the OpenGL ES 3.X documentation for
1873 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glUniform.xhtml}{glUniform4fv()}.
1874
1875 This convenience function will do nothing on OpenGL ES 1.x systems.
1876*/
1877
1878/*!
1879 \fn void QOpenGLFunctions::glUniform4i(GLint location, GLint x, GLint y, GLint z, GLint w)
1880
1881 Convenience function that calls glUniform4i(\a location, \a x, \a y, \a z, \a w).
1882
1883 For more information, see the OpenGL ES 3.X documentation for
1884 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glUniform.xhtml}{glUniform4i()}.
1885
1886 This convenience function will do nothing on OpenGL ES 1.x systems.
1887*/
1888
1889/*!
1890 \fn void QOpenGLFunctions::glUniform4iv(GLint location, GLsizei count, const GLint* v)
1891
1892 Convenience function that calls glUniform4iv(\a location, \a count, \a v).
1893
1894 For more information, see the OpenGL ES 3.X documentation for
1895 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glUniform.xhtml}{glUniform4iv()}.
1896
1897 This convenience function will do nothing on OpenGL ES 1.x systems.
1898*/
1899
1900/*!
1901 \fn void QOpenGLFunctions::glUniformMatrix2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
1902
1903 Convenience function that calls glUniformMatrix2fv(\a location, \a count, \a transpose, \a value).
1904
1905 For more information, see the OpenGL ES 3.X documentation for
1906 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glUniform.xhtml}{glUniformMatrix2fv()}.
1907
1908 This convenience function will do nothing on OpenGL ES 1.x systems.
1909*/
1910
1911/*!
1912 \fn void QOpenGLFunctions::glUniformMatrix3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
1913
1914 Convenience function that calls glUniformMatrix3fv(\a location, \a count, \a transpose, \a value).
1915
1916 For more information, see the OpenGL ES 3.X documentation for
1917 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glUniform.xhtml}{glUniformMatrix3fv()}.
1918
1919 This convenience function will do nothing on OpenGL ES 1.x systems.
1920*/
1921
1922/*!
1923 \fn void QOpenGLFunctions::glUniformMatrix4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
1924
1925 Convenience function that calls glUniformMatrix4fv(\a location, \a count, \a transpose, \a value).
1926
1927 For more information, see the OpenGL ES 3.X documentation for
1928 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glUniform.xhtml}{glUniformMatrix4fv()}.
1929
1930 This convenience function will do nothing on OpenGL ES 1.x systems.
1931*/
1932
1933/*!
1934 \fn void QOpenGLFunctions::glUseProgram(GLuint program)
1935
1936 Convenience function that calls glUseProgram(\a program).
1937
1938 For more information, see the OpenGL ES 3.X documentation for
1939 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glUseProgram.xhtml}{glUseProgram()}.
1940
1941 This convenience function will do nothing on OpenGL ES 1.x systems.
1942*/
1943
1944/*!
1945 \fn void QOpenGLFunctions::glValidateProgram(GLuint program)
1946
1947 Convenience function that calls glValidateProgram(\a program).
1948
1949 For more information, see the OpenGL ES 3.X documentation for
1950 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glValidateProgram.xhtml}{glValidateProgram()}.
1951
1952 This convenience function will do nothing on OpenGL ES 1.x systems.
1953*/
1954
1955/*!
1956 \fn void QOpenGLFunctions::glVertexAttrib1f(GLuint indx, GLfloat x)
1957
1958 Convenience function that calls glVertexAttrib1f(\a indx, \a x).
1959
1960 For more information, see the OpenGL ES 3.X documentation for
1961 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glVertexAttrib.xhtml}{glVertexAttrib1f()}.
1962
1963 This convenience function will do nothing on OpenGL ES 1.x systems.
1964*/
1965
1966/*!
1967 \fn void QOpenGLFunctions::glVertexAttrib1fv(GLuint indx, const GLfloat* values)
1968
1969 Convenience function that calls glVertexAttrib1fv(\a indx, \a values).
1970
1971 For more information, see the OpenGL ES 3.X documentation for
1972 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glVertexAttrib.xhtml}{glVertexAttrib1fv()}.
1973
1974 This convenience function will do nothing on OpenGL ES 1.x systems.
1975*/
1976
1977/*!
1978 \fn void QOpenGLFunctions::glVertexAttrib2f(GLuint indx, GLfloat x, GLfloat y)
1979
1980 Convenience function that calls glVertexAttrib2f(\a indx, \a x, \a y).
1981
1982 For more information, see the OpenGL ES 3.X documentation for
1983 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glVertexAttrib.xhtml}{glVertexAttrib2f()}.
1984
1985 This convenience function will do nothing on OpenGL ES 1.x systems.
1986*/
1987
1988/*!
1989 \fn void QOpenGLFunctions::glVertexAttrib2fv(GLuint indx, const GLfloat* values)
1990
1991 Convenience function that calls glVertexAttrib2fv(\a indx, \a values).
1992
1993 For more information, see the OpenGL ES 3.X documentation for
1994 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glVertexAttrib.xhtml}{glVertexAttrib2fv()}.
1995
1996 This convenience function will do nothing on OpenGL ES 1.x systems.
1997*/
1998
1999/*!
2000 \fn void QOpenGLFunctions::glVertexAttrib3f(GLuint indx, GLfloat x, GLfloat y, GLfloat z)
2001
2002 Convenience function that calls glVertexAttrib3f(\a indx, \a x, \a y, \a z).
2003
2004 For more information, see the OpenGL ES 3.X documentation for
2005 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glVertexAttrib.xhtml}{glVertexAttrib3f()}.
2006
2007 This convenience function will do nothing on OpenGL ES 1.x systems.
2008*/
2009
2010/*!
2011 \fn void QOpenGLFunctions::glVertexAttrib3fv(GLuint indx, const GLfloat* values)
2012
2013 Convenience function that calls glVertexAttrib3fv(\a indx, \a values).
2014
2015 For more information, see the OpenGL ES 3.X documentation for
2016 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glVertexAttrib.xhtml}{glVertexAttrib3fv()}.
2017
2018 This convenience function will do nothing on OpenGL ES 1.x systems.
2019*/
2020
2021/*!
2022 \fn void QOpenGLFunctions::glVertexAttrib4f(GLuint indx, GLfloat x, GLfloat y, GLfloat z, GLfloat w)
2023
2024 Convenience function that calls glVertexAttrib4f(\a indx, \a x, \a y, \a z, \a w).
2025
2026 For more information, see the OpenGL ES 3.X documentation for
2027 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glVertexAttrib.xhtml}{glVertexAttrib4f()}.
2028
2029 This convenience function will do nothing on OpenGL ES 1.x systems.
2030*/
2031
2032/*!
2033 \fn void QOpenGLFunctions::glVertexAttrib4fv(GLuint indx, const GLfloat* values)
2034
2035 Convenience function that calls glVertexAttrib4fv(\a indx, \a values).
2036
2037 For more information, see the OpenGL ES 3.X documentation for
2038 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glVertexAttrib.xhtml}{glVertexAttrib4fv()}.
2039
2040 This convenience function will do nothing on OpenGL ES 1.x systems.
2041*/
2042
2043/*!
2044 \fn void QOpenGLFunctions::glVertexAttribPointer(GLuint indx, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void* ptr)
2045
2046 Convenience function that calls glVertexAttribPointer(\a indx, \a size, \a type, \a normalized, \a stride, \a ptr).
2047
2048 For more information, see the OpenGL ES 3.X documentation for
2049 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glVertexAttribPointer.xhtml}{glVertexAttribPointer()}.
2050
2051 This convenience function will do nothing on OpenGL ES 1.x systems.
2052*/
2053
2054/*!
2055 \fn bool QOpenGLFunctions::isInitialized(const QOpenGLFunctionsPrivate *d)
2056 \internal
2057*/
2058
2059namespace {
2060
2061// this function tries hard to get the opengl function we're looking for by also
2062// trying to resolve it with some of the common extensions if the generic name
2063// can't be found.
2064static QFunctionPointer getProcAddress(QOpenGLContext *context, const char *funcName)
2065{
2066 QFunctionPointer function = context->getProcAddress(procName: funcName);
2067
2068 static const struct {
2069 const char *name;
2070 int len; // includes trailing \0
2071 } extensions[] = {
2072 { .name: "ARB", .len: 4 },
2073 { .name: "OES", .len: 4 },
2074 { .name: "EXT", .len: 4 },
2075 { .name: "ANGLE", .len: 6 },
2076 { .name: "NV", .len: 3 },
2077 };
2078
2079 if (!function) {
2080 char fn[512];
2081 size_t size = strlen(s: funcName);
2082 Q_ASSERT(size < 500);
2083 memcpy(dest: fn, src: funcName, n: size);
2084 char *ext = fn + size;
2085
2086 for (const auto &e : extensions) {
2087 memcpy(dest: ext, src: e.name, n: e.len);
2088 function = context->getProcAddress(procName: fn);
2089 if (function)
2090 break;
2091 }
2092 }
2093
2094 return function;
2095}
2096
2097template <typename Func>
2098Func resolve(QOpenGLContext *context, const char *name, Func)
2099{
2100 return reinterpret_cast<Func>(getProcAddress(context, funcName: name));
2101}
2102
2103}
2104
2105#define RESOLVE(name) \
2106 resolve(context, "gl"#name, name)
2107
2108#if !QT_CONFIG(opengles2)
2109
2110// some fallback functions
2111static void QOPENGLF_APIENTRY qopenglfSpecialClearDepthf(GLclampf depth)
2112{
2113 QOpenGLContext *context = QOpenGLContext::currentContext();
2114 QOpenGLFunctionsPrivate *funcs = qt_gl_functions(context);
2115 funcs->f.ClearDepth((GLdouble) depth);
2116}
2117
2118static void QOPENGLF_APIENTRY qopenglfSpecialDepthRangef(GLclampf zNear, GLclampf zFar)
2119{
2120 QOpenGLContext *context = QOpenGLContext::currentContext();
2121 QOpenGLFunctionsPrivate *funcs = qt_gl_functions(context);
2122 funcs->f.DepthRange((GLdouble) zNear, (GLdouble) zFar);
2123}
2124
2125static void QOPENGLF_APIENTRY qopenglfSpecialGetShaderPrecisionFormat(GLenum shadertype, GLenum precisiontype, GLint* range, GLint* precision)
2126{
2127 Q_UNUSED(shadertype);
2128 Q_UNUSED(precisiontype);
2129 range[0] = range[1] = precision[0] = 0;
2130}
2131
2132static GLboolean QOPENGLF_APIENTRY qopenglfSpecialIsProgram(GLuint program)
2133{
2134 return program != 0;
2135}
2136
2137static GLboolean QOPENGLF_APIENTRY qopenglfSpecialIsShader(GLuint shader)
2138{
2139 return shader != 0;
2140}
2141
2142static void QOPENGLF_APIENTRY qopenglfSpecialReleaseShaderCompiler()
2143{
2144}
2145
2146#endif // !QT_CONFIG(opengles2)
2147
2148
2149QOpenGLFunctionsPrivate::QOpenGLFunctionsPrivate(QOpenGLContext *c)
2150{
2151 init(context: c);
2152
2153#if !QT_CONFIG(opengles2)
2154 // setup fallbacks in case some methods couldn't get resolved
2155 bool es = QOpenGLContext::currentContext()->isOpenGLES();
2156 if (!f.ClearDepthf || !es)
2157 f.ClearDepthf = qopenglfSpecialClearDepthf;
2158 if (!f.DepthRangef || !es)
2159 f.DepthRangef = qopenglfSpecialDepthRangef;
2160 if (!f.GetShaderPrecisionFormat)
2161 f.GetShaderPrecisionFormat = qopenglfSpecialGetShaderPrecisionFormat;
2162 if (!f.IsProgram)
2163 f.IsProgram = qopenglfSpecialIsProgram;
2164 if (!f.IsShader)
2165 f.IsShader = qopenglfSpecialIsShader;
2166 if (!f.ReleaseShaderCompiler)
2167 f.ReleaseShaderCompiler = qopenglfSpecialReleaseShaderCompiler;
2168#endif
2169}
2170
2171
2172QT_OPENGL_IMPLEMENT(QOpenGLFunctionsPrivate, QT_OPENGL_FUNCTIONS)
2173
2174/*!
2175 \class QOpenGLExtraFunctions
2176 \brief The QOpenGLExtraFunctions class provides cross-platform access to the OpenGL ES 3.0, 3.1 and 3.2 API.
2177 \since 5.6
2178 \ingroup painting-3D
2179 \inmodule QtGui
2180
2181 This subclass of QOpenGLFunctions includes the OpenGL ES 3.0, 3.1 and 3.2
2182 functions. These will only work when an OpenGL ES 3.x context, or an
2183 OpenGL context of a version containing the functions in question either in
2184 core or as extension, is in use. This allows developing GLES 3.x
2185 applications in a cross-platform manner: development can happen on a desktop
2186 platform with OpenGL 3.x or 4.x, deploying to a true GLES 3.x device later
2187 on will require no or minimal changes to the application.
2188
2189 \note This class is different from the versioned OpenGL wrappers, for
2190 instance QOpenGLFunctions_3_2_Core. The versioned function wrappers target a
2191 given version and profile of OpenGL. They are therefore not suitable for
2192 cross-OpenGL-OpenGLES development.
2193 */
2194
2195/*!
2196 \fn void QOpenGLExtraFunctions::glBeginQuery(GLenum target, GLuint id)
2197
2198 Convenience function that calls glBeginQuery(\a target, \a id).
2199
2200 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
2201 with plain OpenGL, the function is only usable when the given profile and version contains the
2202 function either in core or as an extension.
2203
2204 For more information, see the OpenGL ES 3.x documentation for
2205 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glBeginQuery.xhtml}{glBeginQuery()}.
2206*/
2207
2208/*!
2209 \fn void QOpenGLExtraFunctions::glBeginTransformFeedback(GLenum primitiveMode)
2210
2211 Convenience function that calls glBeginTransformFeedback(\a primitiveMode).
2212
2213 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
2214 with plain OpenGL, the function is only usable when the given profile and version contains the
2215 function either in core or as an extension.
2216
2217 For more information, see the OpenGL ES 3.x documentation for
2218 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glBeginTransformFeedback.xhtml}{glBeginTransformFeedback()}.
2219*/
2220
2221/*!
2222 \fn void QOpenGLExtraFunctions::glBindBufferBase(GLenum target, GLuint index, GLuint buffer)
2223
2224 Convenience function that calls glBindBufferBase(\a target, \a index, \a buffer).
2225
2226 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
2227 with plain OpenGL, the function is only usable when the given profile and version contains the
2228 function either in core or as an extension.
2229
2230 For more information, see the OpenGL ES 3.x documentation for
2231 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glBindBufferBase.xhtml}{glBindBufferBase()}.
2232*/
2233
2234/*!
2235 \fn void QOpenGLExtraFunctions::glBindBufferRange(GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size)
2236
2237 Convenience function that calls glBindBufferRange(\a target, \a index, \a buffer, \a offset, \a size).
2238
2239 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
2240 with plain OpenGL, the function is only usable when the given profile and version contains the
2241 function either in core or as an extension.
2242
2243 For more information, see the OpenGL ES 3.x documentation for
2244 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glBindBufferRange.xhtml}{glBindBufferRange()}.
2245*/
2246
2247/*!
2248 \fn void QOpenGLExtraFunctions::glBindSampler(GLuint unit, GLuint sampler)
2249
2250 Convenience function that calls glBindSampler(\a unit, \a sampler).
2251
2252 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
2253 with plain OpenGL, the function is only usable when the given profile and version contains the
2254 function either in core or as an extension.
2255
2256 For more information, see the OpenGL ES 3.x documentation for
2257 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glBindSampler.xhtml}{glBindSampler()}.
2258*/
2259
2260/*!
2261 \fn void QOpenGLExtraFunctions::glBindTransformFeedback(GLenum target, GLuint id)
2262
2263 Convenience function that calls glBindTransformFeedback(\a target, \a id).
2264
2265 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
2266 with plain OpenGL, the function is only usable when the given profile and version contains the
2267 function either in core or as an extension.
2268
2269 For more information, see the OpenGL ES 3.x documentation for
2270 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glBindTransformFeedback.xhtml}{glBindTransformFeedback()}.
2271*/
2272
2273/*!
2274 \fn void QOpenGLExtraFunctions::glBindVertexArray(GLuint array)
2275
2276 Convenience function that calls glBindVertexArray(\a array).
2277
2278 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
2279 with plain OpenGL, the function is only usable when the given profile and version contains the
2280 function either in core or as an extension.
2281
2282 For more information, see the OpenGL ES 3.x documentation for
2283 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glBindVertexArray.xhtml}{glBindVertexArray()}.
2284*/
2285
2286/*!
2287 \fn void QOpenGLExtraFunctions::glBlitFramebuffer(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter)
2288
2289 Convenience function that calls glBlitFramebuffer(\a srcX0, \a srcY0, \a srcX1, \a srcY1, \a dstX0, \a dstY0, \a dstX1, \a dstY1, \a mask, \a filter).
2290
2291 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
2292 with plain OpenGL, the function is only usable when the given profile and version contains the
2293 function either in core or as an extension.
2294
2295 For more information, see the OpenGL ES 3.x documentation for
2296 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glBlitFramebuffer.xhtml}{glBlitFramebuffer()}.
2297*/
2298
2299/*!
2300 \fn void QOpenGLExtraFunctions::glClearBufferfi(GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil)
2301
2302 Convenience function that calls glClearBufferfi(\a buffer, \a drawbuffer, \a depth, \a stencil).
2303
2304 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
2305 with plain OpenGL, the function is only usable when the given profile and version contains the
2306 function either in core or as an extension.
2307
2308 For more information, see the OpenGL ES 3.x documentation for
2309 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glClearBuffer.xhtml}{glClearBufferfi()}.
2310*/
2311
2312/*!
2313 \fn void QOpenGLExtraFunctions::glClearBufferfv(GLenum buffer, GLint drawbuffer, const GLfloat * value)
2314
2315 Convenience function that calls glClearBufferfv(\a buffer, \a drawbuffer, \a value).
2316
2317 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
2318 with plain OpenGL, the function is only usable when the given profile and version contains the
2319 function either in core or as an extension.
2320
2321 For more information, see the OpenGL ES 3.x documentation for
2322 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glClearBuffer.xhtml}{glClearBufferfv()}.
2323*/
2324
2325/*!
2326 \fn void QOpenGLExtraFunctions::glClearBufferiv(GLenum buffer, GLint drawbuffer, const GLint * value)
2327
2328 Convenience function that calls glClearBufferiv(\a buffer, \a drawbuffer, \a value).
2329
2330 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
2331 with plain OpenGL, the function is only usable when the given profile and version contains the
2332 function either in core or as an extension.
2333
2334 For more information, see the OpenGL ES 3.x documentation for
2335 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glClearBuffer.xhtml}{glClearBufferiv()}.
2336*/
2337
2338/*!
2339 \fn void QOpenGLExtraFunctions::glClearBufferuiv(GLenum buffer, GLint drawbuffer, const GLuint * value)
2340
2341 Convenience function that calls glClearBufferuiv(\a buffer, \a drawbuffer, \a value).
2342
2343 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
2344 with plain OpenGL, the function is only usable when the given profile and version contains the
2345 function either in core or as an extension.
2346
2347 For more information, see the OpenGL ES 3.x documentation for
2348 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glClearBuffer.xhtml}{glClearBufferuiv()}.
2349*/
2350
2351/*!
2352 \fn GLenum QOpenGLExtraFunctions::glClientWaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout)
2353
2354 Convenience function that calls glClientWaitSync(\a sync, \a flags, \a timeout).
2355
2356 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
2357 with plain OpenGL, the function is only usable when the given profile and version contains the
2358 function either in core or as an extension.
2359
2360 For more information, see the OpenGL ES 3.x documentation for
2361 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glClientWaitSync.xhtml}{glClientWaitSync()}.
2362*/
2363
2364/*!
2365 \fn void QOpenGLExtraFunctions::glCompressedTexImage3D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void * data)
2366
2367 Convenience function that calls glCompressedTexImage3D(\a target, \a level, \a internalformat, \a width, \a height, \a depth, \a border, \a imageSize, \a data).
2368
2369 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
2370 with plain OpenGL, the function is only usable when the given profile and version contains the
2371 function either in core or as an extension.
2372
2373 For more information, see the OpenGL ES 3.x documentation for
2374 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glCompressedTexImage3D.xhtml}{glCompressedTexImage3D()}.
2375*/
2376
2377/*!
2378 \fn void QOpenGLExtraFunctions::glCompressedTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void * data)
2379
2380 Convenience function that calls glCompressedTexSubImage3D(\a target, \a level, \a xoffset, \a yoffset, \a zoffset, \a width, \a height, \a depth, \a format, \a imageSize, \a data).
2381
2382 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
2383 with plain OpenGL, the function is only usable when the given profile and version contains the
2384 function either in core or as an extension.
2385
2386 For more information, see the OpenGL ES 3.x documentation for
2387 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glCompressedTexSubImage3D.xhtml}{glCompressedTexSubImage3D()}.
2388*/
2389
2390/*!
2391 \fn void QOpenGLExtraFunctions::glCopyBufferSubData(GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size)
2392
2393 Convenience function that calls glCopyBufferSubData(\a readTarget, \a writeTarget, \a readOffset, \a writeOffset, \a size).
2394
2395 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
2396 with plain OpenGL, the function is only usable when the given profile and version contains the
2397 function either in core or as an extension.
2398
2399 For more information, see the OpenGL ES 3.x documentation for
2400 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glCopyBufferSubData.xhtml}{glCopyBufferSubData()}.
2401*/
2402
2403/*!
2404 \fn void QOpenGLExtraFunctions::glCopyTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height)
2405
2406 Convenience function that calls glCopyTexSubImage3D(\a target, \a level, \a xoffset, \a yoffset, \a zoffset, \a x, \a y, \a width, \a height).
2407
2408 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
2409 with plain OpenGL, the function is only usable when the given profile and version contains the
2410 function either in core or as an extension.
2411
2412 For more information, see the OpenGL ES 3.x documentation for
2413 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glCopyTexSubImage3D.xhtml}{glCopyTexSubImage3D()}.
2414*/
2415
2416/*!
2417 \fn void QOpenGLExtraFunctions::glDeleteQueries(GLsizei n, const GLuint * ids)
2418
2419 Convenience function that calls glDeleteQueries(\a n, \a ids).
2420
2421 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
2422 with plain OpenGL, the function is only usable when the given profile and version contains the
2423 function either in core or as an extension.
2424
2425 For more information, see the OpenGL ES 3.x documentation for
2426 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glDeleteQueries.xhtml}{glDeleteQueries()}.
2427*/
2428
2429/*!
2430 \fn void QOpenGLExtraFunctions::glDeleteSamplers(GLsizei count, const GLuint * samplers)
2431
2432 Convenience function that calls glDeleteSamplers(\a count, \a samplers).
2433
2434 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
2435 with plain OpenGL, the function is only usable when the given profile and version contains the
2436 function either in core or as an extension.
2437
2438 For more information, see the OpenGL ES 3.x documentation for
2439 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glDeleteSamplers.xhtml}{glDeleteSamplers()}.
2440*/
2441
2442/*!
2443 \fn void QOpenGLExtraFunctions::glDeleteSync(GLsync sync)
2444
2445 Convenience function that calls glDeleteSync(\a sync).
2446
2447 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
2448 with plain OpenGL, the function is only usable when the given profile and version contains the
2449 function either in core or as an extension.
2450
2451 For more information, see the OpenGL ES 3.x documentation for
2452 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glDeleteSync.xhtml}{glDeleteSync()}.
2453*/
2454
2455/*!
2456 \fn void QOpenGLExtraFunctions::glDeleteTransformFeedbacks(GLsizei n, const GLuint * ids)
2457
2458 Convenience function that calls glDeleteTransformFeedbacks(\a n, \a ids).
2459
2460 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
2461 with plain OpenGL, the function is only usable when the given profile and version contains the
2462 function either in core or as an extension.
2463
2464 For more information, see the OpenGL ES 3.x documentation for
2465 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glDeleteTransformFeedbacks.xhtml}{glDeleteTransformFeedbacks()}.
2466*/
2467
2468/*!
2469 \fn void QOpenGLExtraFunctions::glDeleteVertexArrays(GLsizei n, const GLuint * arrays)
2470
2471 Convenience function that calls glDeleteVertexArrays(\a n, \a arrays).
2472
2473 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
2474 with plain OpenGL, the function is only usable when the given profile and version contains the
2475 function either in core or as an extension.
2476
2477 For more information, see the OpenGL ES 3.x documentation for
2478 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glDeleteVertexArrays.xhtml}{glDeleteVertexArrays()}.
2479*/
2480
2481/*!
2482 \fn void QOpenGLExtraFunctions::glDrawArraysInstanced(GLenum mode, GLint first, GLsizei count, GLsizei instancecount)
2483
2484 Convenience function that calls glDrawArraysInstanced(\a mode, \a first, \a count, \a instancecount).
2485
2486 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
2487 with plain OpenGL, the function is only usable when the given profile and version contains the
2488 function either in core or as an extension.
2489
2490 For more information, see the OpenGL ES 3.x documentation for
2491 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glDrawArraysInstanced.xhtml}{glDrawArraysInstanced()}.
2492*/
2493
2494/*!
2495 \fn void QOpenGLExtraFunctions::glDrawBuffers(GLsizei n, const GLenum * bufs)
2496
2497 Convenience function that calls glDrawBuffers(\a n, \a bufs).
2498
2499 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
2500 with plain OpenGL, the function is only usable when the given profile and version contains the
2501 function either in core or as an extension.
2502
2503 For more information, see the OpenGL ES 3.x documentation for
2504 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glDrawBuffers.xhtml}{glDrawBuffers()}.
2505*/
2506
2507/*!
2508 \fn void QOpenGLExtraFunctions::glDrawElementsInstanced(GLenum mode, GLsizei count, GLenum type, const void * indices, GLsizei instancecount)
2509
2510 Convenience function that calls glDrawElementsInstanced(\a mode, \a count, \a type, \a indices, \a instancecount).
2511
2512 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
2513 with plain OpenGL, the function is only usable when the given profile and version contains the
2514 function either in core or as an extension.
2515
2516 For more information, see the OpenGL ES 3.x documentation for
2517 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glDrawElementsInstanced.xhtml}{glDrawElementsInstanced()}.
2518*/
2519
2520/*!
2521 \fn void QOpenGLExtraFunctions::glDrawRangeElements(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void * indices)
2522
2523 Convenience function that calls glDrawRangeElements(\a mode, \a start, \a end, \a count, \a type, \a indices).
2524
2525 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
2526 with plain OpenGL, the function is only usable when the given profile and version contains the
2527 function either in core or as an extension.
2528
2529 For more information, see the OpenGL ES 3.x documentation for
2530 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glDrawRangeElements.xhtml}{glDrawRangeElements()}.
2531*/
2532
2533/*!
2534 \fn void QOpenGLExtraFunctions::glEndQuery(GLenum target)
2535
2536 Convenience function that calls glEndQuery(\a target).
2537
2538 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
2539 with plain OpenGL, the function is only usable when the given profile and version contains the
2540 function either in core or as an extension.
2541
2542 For more information, see the OpenGL ES 3.x documentation for
2543 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glBeginQuery.xhtml}{glEndQuery()}.
2544*/
2545
2546/*!
2547 \fn void QOpenGLExtraFunctions::glEndTransformFeedback()
2548
2549 Convenience function that calls glEndTransformFeedback().
2550
2551 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
2552 with plain OpenGL, the function is only usable when the given profile and version contains the
2553 function either in core or as an extension.
2554
2555 For more information, see the OpenGL ES 3.x documentation for
2556 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glBeginTransformFeedback.xhtml}{glEndTransformFeedback()}.
2557*/
2558
2559/*!
2560 \fn GLsync QOpenGLExtraFunctions::glFenceSync(GLenum condition, GLbitfield flags)
2561
2562 Convenience function that calls glFenceSync(\a condition, \a flags).
2563
2564 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
2565 with plain OpenGL, the function is only usable when the given profile and version contains the
2566 function either in core or as an extension.
2567
2568 For more information, see the OpenGL ES 3.x documentation for
2569 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glFenceSync.xhtml}{glFenceSync()}.
2570*/
2571
2572/*!
2573 \fn void QOpenGLExtraFunctions::glFlushMappedBufferRange(GLenum target, GLintptr offset, GLsizeiptr length)
2574
2575 Convenience function that calls glFlushMappedBufferRange(\a target, \a offset, \a length).
2576
2577 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
2578 with plain OpenGL, the function is only usable when the given profile and version contains the
2579 function either in core or as an extension.
2580
2581 For more information, see the OpenGL ES 3.x documentation for
2582 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glFlushMappedBufferRange.xhtml}{glFlushMappedBufferRange()}.
2583*/
2584
2585/*!
2586 \fn void QOpenGLExtraFunctions::glFramebufferTextureLayer(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer)
2587
2588 Convenience function that calls glFramebufferTextureLayer(\a target, \a attachment, \a texture, \a level, \a layer).
2589
2590 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
2591 with plain OpenGL, the function is only usable when the given profile and version contains the
2592 function either in core or as an extension.
2593
2594 For more information, see the OpenGL ES 3.x documentation for
2595 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glFramebufferTextureLayer.xhtml}{glFramebufferTextureLayer()}.
2596*/
2597
2598/*!
2599 \fn void QOpenGLExtraFunctions::glGenQueries(GLsizei n, GLuint* ids)
2600
2601 Convenience function that calls glGenQueries(\a n, \a ids).
2602
2603 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
2604 with plain OpenGL, the function is only usable when the given profile and version contains the
2605 function either in core or as an extension.
2606
2607 For more information, see the OpenGL ES 3.x documentation for
2608 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glGenQueries.xhtml}{glGenQueries()}.
2609*/
2610
2611/*!
2612 \fn void QOpenGLExtraFunctions::glGenSamplers(GLsizei count, GLuint* samplers)
2613
2614 Convenience function that calls glGenSamplers(\a count, \a samplers).
2615
2616 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
2617 with plain OpenGL, the function is only usable when the given profile and version contains the
2618 function either in core or as an extension.
2619
2620 For more information, see the OpenGL ES 3.x documentation for
2621 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glGenSamplers.xhtml}{glGenSamplers()}.
2622*/
2623
2624/*!
2625 \fn void QOpenGLExtraFunctions::glGenTransformFeedbacks(GLsizei n, GLuint* ids)
2626
2627 Convenience function that calls glGenTransformFeedbacks(\a n, \a ids).
2628
2629 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
2630 with plain OpenGL, the function is only usable when the given profile and version contains the
2631 function either in core or as an extension.
2632
2633 For more information, see the OpenGL ES 3.x documentation for
2634 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glGenTransformFeedbacks.xhtml}{glGenTransformFeedbacks()}.
2635*/
2636
2637/*!
2638 \fn void QOpenGLExtraFunctions::glGenVertexArrays(GLsizei n, GLuint* arrays)
2639
2640 Convenience function that calls glGenVertexArrays(\a n, \a arrays).
2641
2642 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
2643 with plain OpenGL, the function is only usable when the given profile and version contains the
2644 function either in core or as an extension.
2645
2646 For more information, see the OpenGL ES 3.x documentation for
2647 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glGenVertexArrays.xhtml}{glGenVertexArrays()}.
2648*/
2649
2650/*!
2651 \fn void QOpenGLExtraFunctions::glGetActiveUniformBlockName(GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei* length, GLchar* uniformBlockName)
2652
2653 Convenience function that calls glGetActiveUniformBlockName(\a program, \a uniformBlockIndex, \a bufSize, \a length, \a uniformBlockName).
2654
2655 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
2656 with plain OpenGL, the function is only usable when the given profile and version contains the
2657 function either in core or as an extension.
2658
2659 For more information, see the OpenGL ES 3.x documentation for
2660 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glGetActiveUniformBlockName.xhtml}{glGetActiveUniformBlockName()}.
2661*/
2662
2663/*!
2664 \fn void QOpenGLExtraFunctions::glGetActiveUniformBlockiv(GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint* params)
2665
2666 Convenience function that calls glGetActiveUniformBlockiv(\a program, \a uniformBlockIndex, \a pname, \a params).
2667
2668 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
2669 with plain OpenGL, the function is only usable when the given profile and version contains the
2670 function either in core or as an extension.
2671
2672 For more information, see the OpenGL ES 3.x documentation for
2673 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glGetActiveUniformBlockiv.xhtml}{glGetActiveUniformBlockiv()}.
2674*/
2675
2676/*!
2677 \fn void QOpenGLExtraFunctions::glGetActiveUniformsiv(GLuint program, GLsizei uniformCount, const GLuint * uniformIndices, GLenum pname, GLint* params)
2678
2679 Convenience function that calls glGetActiveUniformsiv(\a program, \a uniformCount, \a uniformIndices, \a pname, \a params).
2680
2681 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
2682 with plain OpenGL, the function is only usable when the given profile and version contains the
2683 function either in core or as an extension.
2684
2685 For more information, see the OpenGL ES 3.x documentation for
2686 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glGetActiveUniformsiv.xhtml}{glGetActiveUniformsiv()}.
2687*/
2688
2689/*!
2690 \fn void QOpenGLExtraFunctions::glGetBufferParameteri64v(GLenum target, GLenum pname, GLint64* params)
2691
2692 Convenience function that calls glGetBufferParameteri64v(\a target, \a pname, \a params).
2693
2694 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
2695 with plain OpenGL, the function is only usable when the given profile and version contains the
2696 function either in core or as an extension.
2697
2698 For more information, see the OpenGL ES 3.x documentation for
2699 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glGetBufferParameter.xhtml}{glGetBufferParameteri64v()}.
2700*/
2701
2702/*!
2703 \fn void QOpenGLExtraFunctions::glGetBufferPointerv(GLenum target, GLenum pname, void ** params)
2704
2705 Convenience function that calls glGetBufferPointerv(\a target, \a pname, \a params).
2706
2707 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
2708 with plain OpenGL, the function is only usable when the given profile and version contains the
2709 function either in core or as an extension.
2710
2711 For more information, see the OpenGL ES 3.x documentation for
2712 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glGetBufferPointerv.xhtml}{glGetBufferPointerv()}.
2713*/
2714
2715/*!
2716 \fn GLint QOpenGLExtraFunctions::glGetFragDataLocation(GLuint program, const GLchar * name)
2717
2718 Convenience function that calls glGetFragDataLocation(\a program, \a name).
2719
2720 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
2721 with plain OpenGL, the function is only usable when the given profile and version contains the
2722 function either in core or as an extension.
2723
2724 For more information, see the OpenGL ES 3.x documentation for
2725 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glGetFragDataLocation.xhtml}{glGetFragDataLocation()}.
2726*/
2727
2728/*!
2729 \fn void QOpenGLExtraFunctions::glGetInteger64i_v(GLenum target, GLuint index, GLint64* data)
2730
2731 Convenience function that calls glGetInteger64i_v(\a target, \a index, \a data).
2732
2733 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
2734 with plain OpenGL, the function is only usable when the given profile and version contains the
2735 function either in core or as an extension.
2736
2737 For more information, see the OpenGL ES 3.x documentation for
2738 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glGet.xhtml}{glGetInteger64i_v()}.
2739*/
2740
2741/*!
2742 \fn void QOpenGLExtraFunctions::glGetInteger64v(GLenum pname, GLint64* data)
2743
2744 Convenience function that calls glGetInteger64v(\a pname, \a data).
2745
2746 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
2747 with plain OpenGL, the function is only usable when the given profile and version contains the
2748 function either in core or as an extension.
2749
2750 For more information, see the OpenGL ES 3.x documentation for
2751 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glGet.xhtml}{glGetInteger64v()}.
2752*/
2753
2754/*!
2755 \fn void QOpenGLExtraFunctions::glGetIntegeri_v(GLenum target, GLuint index, GLint* data)
2756
2757 Convenience function that calls glGetIntegeri_v(\a target, \a index, \a data).
2758
2759 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
2760 with plain OpenGL, the function is only usable when the given profile and version contains the
2761 function either in core or as an extension.
2762
2763 For more information, see the OpenGL ES 3.x documentation for
2764 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glGet.xhtml}{glGetIntegeri_v()}.
2765*/
2766
2767/*!
2768 \fn void QOpenGLExtraFunctions::glGetInternalformativ(GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint* params)
2769
2770 Convenience function that calls glGetInternalformativ(\a target, \a internalformat, \a pname, \a bufSize, \a params).
2771
2772 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
2773 with plain OpenGL, the function is only usable when the given profile and version contains the
2774 function either in core or as an extension.
2775
2776 For more information, see the OpenGL ES 3.x documentation for
2777 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glGetInternalformativ.xhtml}{glGetInternalformativ()}.
2778*/
2779
2780/*!
2781 \fn void QOpenGLExtraFunctions::glGetProgramBinary(GLuint program, GLsizei bufSize, GLsizei* length, GLenum* binaryFormat, void * binary)
2782
2783 Convenience function that calls glGetProgramBinary(\a program, \a bufSize, \a length, \a binaryFormat, \a binary).
2784
2785 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
2786 with plain OpenGL, the function is only usable when the given profile and version contains the
2787 function either in core or as an extension.
2788
2789 For more information, see the OpenGL ES 3.x documentation for
2790 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glGetProgramBinary.xhtml}{glGetProgramBinary()}.
2791*/
2792
2793/*!
2794 \fn void QOpenGLExtraFunctions::glGetQueryObjectuiv(GLuint id, GLenum pname, GLuint* params)
2795
2796 Convenience function that calls glGetQueryObjectuiv(\a id, \a pname, \a params).
2797
2798 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
2799 with plain OpenGL, the function is only usable when the given profile and version contains the
2800 function either in core or as an extension.
2801
2802 For more information, see the OpenGL ES 3.x documentation for
2803 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glGetQueryObjectuiv.xhtml}{glGetQueryObjectuiv()}.
2804*/
2805
2806/*!
2807 \fn void QOpenGLExtraFunctions::glGetQueryiv(GLenum target, GLenum pname, GLint* params)
2808
2809 Convenience function that calls glGetQueryiv(\a target, \a pname, \a params).
2810
2811 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
2812 with plain OpenGL, the function is only usable when the given profile and version contains the
2813 function either in core or as an extension.
2814
2815 For more information, see the OpenGL ES 3.x documentation for
2816 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glGetQueryiv.xhtml}{glGetQueryiv()}.
2817*/
2818
2819/*!
2820 \fn void QOpenGLExtraFunctions::glGetSamplerParameterfv(GLuint sampler, GLenum pname, GLfloat* params)
2821
2822 Convenience function that calls glGetSamplerParameterfv(\a sampler, \a pname, \a params).
2823
2824 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
2825 with plain OpenGL, the function is only usable when the given profile and version contains the
2826 function either in core or as an extension.
2827
2828 For more information, see the OpenGL ES 3.x documentation for
2829 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glGetSamplerParameter.xhtml}{glGetSamplerParameterfv()}.
2830*/
2831
2832/*!
2833 \fn void QOpenGLExtraFunctions::glGetSamplerParameteriv(GLuint sampler, GLenum pname, GLint* params)
2834
2835 Convenience function that calls glGetSamplerParameteriv(\a sampler, \a pname, \a params).
2836
2837 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
2838 with plain OpenGL, the function is only usable when the given profile and version contains the
2839 function either in core or as an extension.
2840
2841 For more information, see the OpenGL ES 3.x documentation for
2842 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glGetSamplerParameter.xhtml}{glGetSamplerParameteriv()}.
2843*/
2844
2845/*!
2846 \fn const GLubyte * QOpenGLExtraFunctions::glGetStringi(GLenum name, GLuint index)
2847
2848 Convenience function that calls glGetStringi(\a name, \a index).
2849
2850 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
2851 with plain OpenGL, the function is only usable when the given profile and version contains the
2852 function either in core or as an extension.
2853
2854 For more information, see the OpenGL ES 3.x documentation for
2855 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glGetString.xhtml}{glGetStringi()}.
2856*/
2857
2858/*!
2859 \fn void QOpenGLExtraFunctions::glGetSynciv(GLsync sync, GLenum pname, GLsizei bufSize, GLsizei* length, GLint* values)
2860
2861 Convenience function that calls glGetSynciv(\a sync, \a pname, \a bufSize, \a length, \a values).
2862
2863 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
2864 with plain OpenGL, the function is only usable when the given profile and version contains the
2865 function either in core or as an extension.
2866
2867 For more information, see the OpenGL ES 3.x documentation for
2868 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glGetSynciv.xhtml}{glGetSynciv()}.
2869*/
2870
2871/*!
2872 \fn void QOpenGLExtraFunctions::glGetTransformFeedbackVarying(GLuint program, GLuint index, GLsizei bufSize, GLsizei* length, GLsizei* size, GLenum* type, GLchar* name)
2873
2874 Convenience function that calls glGetTransformFeedbackVarying(\a program, \a index, \a bufSize, \a length, \a size, \a type, \a name).
2875
2876 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
2877 with plain OpenGL, the function is only usable when the given profile and version contains the
2878 function either in core or as an extension.
2879
2880 For more information, see the OpenGL ES 3.x documentation for
2881 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glGetTransformFeedbackVarying.xhtml}{glGetTransformFeedbackVarying()}.
2882*/
2883
2884/*!
2885 \fn GLuint QOpenGLExtraFunctions::glGetUniformBlockIndex(GLuint program, const GLchar * uniformBlockName)
2886
2887 Convenience function that calls glGetUniformBlockIndex(\a program, \a uniformBlockName).
2888
2889 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
2890 with plain OpenGL, the function is only usable when the given profile and version contains the
2891 function either in core or as an extension.
2892
2893 For more information, see the OpenGL ES 3.x documentation for
2894 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glGetUniformBlockIndex.xhtml}{glGetUniformBlockIndex()}.
2895*/
2896
2897/*!
2898 \fn void QOpenGLExtraFunctions::glGetUniformIndices(GLuint program, GLsizei uniformCount, const GLchar *const* uniformNames, GLuint* uniformIndices)
2899
2900 Convenience function that calls glGetUniformIndices(\a program, \a uniformCount, \a uniformNames, \a uniformIndices).
2901
2902 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
2903 with plain OpenGL, the function is only usable when the given profile and version contains the
2904 function either in core or as an extension.
2905
2906 For more information, see the OpenGL ES 3.x documentation for
2907 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glGetUniformIndices.xhtml}{glGetUniformIndices()}.
2908*/
2909
2910/*!
2911 \fn void QOpenGLExtraFunctions::glGetUniformuiv(GLuint program, GLint location, GLuint* params)
2912
2913 Convenience function that calls glGetUniformuiv(\a program, \a location, \a params).
2914
2915 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
2916 with plain OpenGL, the function is only usable when the given profile and version contains the
2917 function either in core or as an extension.
2918
2919 For more information, see the OpenGL ES 3.x documentation for
2920 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glGetUniform.xhtml}{glGetUniformuiv()}.
2921*/
2922
2923/*!
2924 \fn void QOpenGLExtraFunctions::glGetVertexAttribIiv(GLuint index, GLenum pname, GLint* params)
2925
2926 Convenience function that calls glGetVertexAttribIiv(\a index, \a pname, \a params).
2927
2928 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
2929 with plain OpenGL, the function is only usable when the given profile and version contains the
2930 function either in core or as an extension.
2931
2932 For more information, see the OpenGL ES 3.x documentation for
2933 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glGetVertexAttrib.xhtml}{glGetVertexAttribIiv()}.
2934*/
2935
2936/*!
2937 \fn void QOpenGLExtraFunctions::glGetVertexAttribIuiv(GLuint index, GLenum pname, GLuint* params)
2938
2939 Convenience function that calls glGetVertexAttribIuiv(\a index, \a pname, \a params).
2940
2941 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
2942 with plain OpenGL, the function is only usable when the given profile and version contains the
2943 function either in core or as an extension.
2944
2945 For more information, see the OpenGL ES 3.x documentation for
2946 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glGetVertexAttrib.xhtml}{glGetVertexAttribIuiv()}.
2947*/
2948
2949/*!
2950 \fn void QOpenGLExtraFunctions::glInvalidateFramebuffer(GLenum target, GLsizei numAttachments, const GLenum * attachments)
2951
2952 Convenience function that calls glInvalidateFramebuffer(\a target, \a numAttachments, \a attachments).
2953
2954 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
2955 with plain OpenGL, the function is only usable when the given profile and version contains the
2956 function either in core or as an extension.
2957
2958 For more information, see the OpenGL ES 3.x documentation for
2959 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glInvalidateFramebuffer.xhtml}{glInvalidateFramebuffer()}.
2960*/
2961
2962/*!
2963 \fn void QOpenGLExtraFunctions::glInvalidateSubFramebuffer(GLenum target, GLsizei numAttachments, const GLenum * attachments, GLint x, GLint y, GLsizei width, GLsizei height)
2964
2965 Convenience function that calls glInvalidateSubFramebuffer(\a target, \a numAttachments, \a attachments, \a x, \a y, \a width, \a height).
2966
2967 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
2968 with plain OpenGL, the function is only usable when the given profile and version contains the
2969 function either in core or as an extension.
2970
2971 For more information, see the OpenGL ES 3.x documentation for
2972 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glInvalidateSubFramebuffer.xhtml}{glInvalidateSubFramebuffer()}.
2973*/
2974
2975/*!
2976 \fn GLboolean QOpenGLExtraFunctions::glIsQuery(GLuint id)
2977
2978 Convenience function that calls glIsQuery(\a id).
2979
2980 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
2981 with plain OpenGL, the function is only usable when the given profile and version contains the
2982 function either in core or as an extension.
2983
2984 For more information, see the OpenGL ES 3.x documentation for
2985 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glIsQuery.xhtml}{glIsQuery()}.
2986*/
2987
2988/*!
2989 \fn GLboolean QOpenGLExtraFunctions::glIsSampler(GLuint sampler)
2990
2991 Convenience function that calls glIsSampler(\a sampler).
2992
2993 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
2994 with plain OpenGL, the function is only usable when the given profile and version contains the
2995 function either in core or as an extension.
2996
2997 For more information, see the OpenGL ES 3.x documentation for
2998 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glIsSampler.xhtml}{glIsSampler()}.
2999*/
3000
3001/*!
3002 \fn GLboolean QOpenGLExtraFunctions::glIsSync(GLsync sync)
3003
3004 Convenience function that calls glIsSync(\a sync).
3005
3006 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
3007 with plain OpenGL, the function is only usable when the given profile and version contains the
3008 function either in core or as an extension.
3009
3010 For more information, see the OpenGL ES 3.x documentation for
3011 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glIsSync.xhtml}{glIsSync()}.
3012*/
3013
3014/*!
3015 \fn GLboolean QOpenGLExtraFunctions::glIsTransformFeedback(GLuint id)
3016
3017 Convenience function that calls glIsTransformFeedback(\a id).
3018
3019 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
3020 with plain OpenGL, the function is only usable when the given profile and version contains the
3021 function either in core or as an extension.
3022
3023 For more information, see the OpenGL ES 3.x documentation for
3024 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glIsTransformFeedback.xhtml}{glIsTransformFeedback()}.
3025*/
3026
3027/*!
3028 \fn GLboolean QOpenGLExtraFunctions::glIsVertexArray(GLuint array)
3029
3030 Convenience function that calls glIsVertexArray(\a array).
3031
3032 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
3033 with plain OpenGL, the function is only usable when the given profile and version contains the
3034 function either in core or as an extension.
3035
3036 For more information, see the OpenGL ES 3.x documentation for
3037 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glIsVertexArray.xhtml}{glIsVertexArray()}.
3038*/
3039
3040/*!
3041 \fn void * QOpenGLExtraFunctions::glMapBufferRange(GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access)
3042
3043 Convenience function that calls glMapBufferRange(\a target, \a offset, \a length, \a access).
3044
3045 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
3046 with plain OpenGL, the function is only usable when the given profile and version contains the
3047 function either in core or as an extension.
3048
3049 For more information, see the OpenGL ES 3.x documentation for
3050 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glMapBufferRange.xhtml}{glMapBufferRange()}.
3051*/
3052
3053/*!
3054 \fn void QOpenGLExtraFunctions::glPauseTransformFeedback()
3055
3056 Convenience function that calls glPauseTransformFeedback().
3057
3058 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
3059 with plain OpenGL, the function is only usable when the given profile and version contains the
3060 function either in core or as an extension.
3061
3062 For more information, see the OpenGL ES 3.x documentation for
3063 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glPauseTransformFeedback.xhtml}{glPauseTransformFeedback()}.
3064*/
3065
3066/*!
3067 \fn void QOpenGLExtraFunctions::glProgramBinary(GLuint program, GLenum binaryFormat, const void * binary, GLsizei length)
3068
3069 Convenience function that calls glProgramBinary(\a program, \a binaryFormat, \a binary, \a length).
3070
3071 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
3072 with plain OpenGL, the function is only usable when the given profile and version contains the
3073 function either in core or as an extension.
3074
3075 For more information, see the OpenGL ES 3.x documentation for
3076 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glProgramBinary.xhtml}{glProgramBinary()}.
3077*/
3078
3079/*!
3080 \fn void QOpenGLExtraFunctions::glProgramParameteri(GLuint program, GLenum pname, GLint value)
3081
3082 Convenience function that calls glProgramParameteri(\a program, \a pname, \a value).
3083
3084 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
3085 with plain OpenGL, the function is only usable when the given profile and version contains the
3086 function either in core or as an extension.
3087
3088 For more information, see the OpenGL ES 3.x documentation for
3089 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glProgramParameteri.xhtml}{glProgramParameteri()}.
3090*/
3091
3092/*!
3093 \fn void QOpenGLExtraFunctions::glReadBuffer(GLenum src)
3094
3095 Convenience function that calls glReadBuffer(\a src).
3096
3097 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
3098 with plain OpenGL, the function is only usable when the given profile and version contains the
3099 function either in core or as an extension.
3100
3101 For more information, see the OpenGL ES 3.x documentation for
3102 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glReadBuffer.xhtml}{glReadBuffer()}.
3103*/
3104
3105/*!
3106 \fn void QOpenGLExtraFunctions::glRenderbufferStorageMultisample(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height)
3107
3108 Convenience function that calls glRenderbufferStorageMultisample(\a target, \a samples, \a internalformat, \a width, \a height).
3109
3110 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
3111 with plain OpenGL, the function is only usable when the given profile and version contains the
3112 function either in core or as an extension.
3113
3114 For more information, see the OpenGL ES 3.x documentation for
3115 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glRenderbufferStorageMultisample.xhtml}{glRenderbufferStorageMultisample()}.
3116*/
3117
3118/*!
3119 \fn void QOpenGLExtraFunctions::glResumeTransformFeedback()
3120
3121 Convenience function that calls glResumeTransformFeedback().
3122
3123 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
3124 with plain OpenGL, the function is only usable when the given profile and version contains the
3125 function either in core or as an extension.
3126
3127 For more information, see the OpenGL ES 3.x documentation for
3128 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glResumeTransformFeedback.xhtml}{glResumeTransformFeedback()}.
3129*/
3130
3131/*!
3132 \fn void QOpenGLExtraFunctions::glSamplerParameterf(GLuint sampler, GLenum pname, GLfloat param)
3133
3134 Convenience function that calls glSamplerParameterf(\a sampler, \a pname, \a param).
3135
3136 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
3137 with plain OpenGL, the function is only usable when the given profile and version contains the
3138 function either in core or as an extension.
3139
3140 For more information, see the OpenGL ES 3.x documentation for
3141 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glSamplerParameter.xhtml}{glSamplerParameterf()}.
3142*/
3143
3144/*!
3145 \fn void QOpenGLExtraFunctions::glSamplerParameterfv(GLuint sampler, GLenum pname, const GLfloat * param)
3146
3147 Convenience function that calls glSamplerParameterfv(\a sampler, \a pname, \a param).
3148
3149 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
3150 with plain OpenGL, the function is only usable when the given profile and version contains the
3151 function either in core or as an extension.
3152
3153 For more information, see the OpenGL ES 3.x documentation for
3154 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glSamplerParameter.xhtml}{glSamplerParameterfv()}.
3155*/
3156
3157/*!
3158 \fn void QOpenGLExtraFunctions::glSamplerParameteri(GLuint sampler, GLenum pname, GLint param)
3159
3160 Convenience function that calls glSamplerParameteri(\a sampler, \a pname, \a param).
3161
3162 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
3163 with plain OpenGL, the function is only usable when the given profile and version contains the
3164 function either in core or as an extension.
3165
3166 For more information, see the OpenGL ES 3.x documentation for
3167 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glSamplerParameter.xhtml}{glSamplerParameteri()}.
3168*/
3169
3170/*!
3171 \fn void QOpenGLExtraFunctions::glSamplerParameteriv(GLuint sampler, GLenum pname, const GLint * param)
3172
3173 Convenience function that calls glSamplerParameteriv(\a sampler, \a pname, \a param).
3174
3175 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
3176 with plain OpenGL, the function is only usable when the given profile and version contains the
3177 function either in core or as an extension.
3178
3179 For more information, see the OpenGL ES 3.x documentation for
3180 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glSamplerParameter.xhtml}{glSamplerParameteriv()}.
3181*/
3182
3183/*!
3184 \fn void QOpenGLExtraFunctions::glTexImage3D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void * pixels)
3185
3186 Convenience function that calls glTexImage3D(\a target, \a level, \a internalformat, \a width, \a height, \a depth, \a border, \a format, \a type, \a pixels).
3187
3188 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
3189 with plain OpenGL, the function is only usable when the given profile and version contains the
3190 function either in core or as an extension.
3191
3192 For more information, see the OpenGL ES 3.x documentation for
3193 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glTexImage3D.xhtml}{glTexImage3D()}.
3194*/
3195
3196/*!
3197 \fn void QOpenGLExtraFunctions::glTexStorage2D(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height)
3198
3199 Convenience function that calls glTexStorage2D(\a target, \a levels, \a internalformat, \a width, \a height).
3200
3201 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
3202 with plain OpenGL, the function is only usable when the given profile and version contains the
3203 function either in core or as an extension.
3204
3205 For more information, see the OpenGL ES 3.x documentation for
3206 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glTexStorage2D.xhtml}{glTexStorage2D()}.
3207*/
3208
3209/*!
3210 \fn void QOpenGLExtraFunctions::glTexStorage3D(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth)
3211
3212 Convenience function that calls glTexStorage3D(\a target, \a levels, \a internalformat, \a width, \a height, \a depth).
3213
3214 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
3215 with plain OpenGL, the function is only usable when the given profile and version contains the
3216 function either in core or as an extension.
3217
3218 For more information, see the OpenGL ES 3.x documentation for
3219 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glTexStorage3D.xhtml}{glTexStorage3D()}.
3220*/
3221
3222/*!
3223 \fn void QOpenGLExtraFunctions::glTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void * pixels)
3224
3225 Convenience function that calls glTexSubImage3D(\a target, \a level, \a xoffset, \a yoffset, \a zoffset, \a width, \a height, \a depth, \a format, \a type, \a pixels).
3226
3227 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
3228 with plain OpenGL, the function is only usable when the given profile and version contains the
3229 function either in core or as an extension.
3230
3231 For more information, see the OpenGL ES 3.x documentation for
3232 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glTexSubImage3D.xhtml}{glTexSubImage3D()}.
3233*/
3234
3235/*!
3236 \fn void QOpenGLExtraFunctions::glTransformFeedbackVaryings(GLuint program, GLsizei count, const GLchar *const* varyings, GLenum bufferMode)
3237
3238 Convenience function that calls glTransformFeedbackVaryings(\a program, \a count, \a varyings, \a bufferMode).
3239
3240 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
3241 with plain OpenGL, the function is only usable when the given profile and version contains the
3242 function either in core or as an extension.
3243
3244 For more information, see the OpenGL ES 3.x documentation for
3245 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glTransformFeedbackVaryings.xhtml}{glTransformFeedbackVaryings()}.
3246*/
3247
3248/*!
3249 \fn void QOpenGLExtraFunctions::glUniform1ui(GLint location, GLuint v0)
3250
3251 Convenience function that calls glUniform1ui(\a location, \a v0).
3252
3253 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
3254 with plain OpenGL, the function is only usable when the given profile and version contains the
3255 function either in core or as an extension.
3256
3257 For more information, see the OpenGL ES 3.x documentation for
3258 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glUniform.xhtml}{glUniform1ui()}.
3259*/
3260
3261/*!
3262 \fn void QOpenGLExtraFunctions::glUniform1uiv(GLint location, GLsizei count, const GLuint * value)
3263
3264 Convenience function that calls glUniform1uiv(\a location, \a count, \a value).
3265
3266 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
3267 with plain OpenGL, the function is only usable when the given profile and version contains the
3268 function either in core or as an extension.
3269
3270 For more information, see the OpenGL ES 3.x documentation for
3271 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glUniform.xhtml}{glUniform1uiv()}.
3272*/
3273
3274/*!
3275 \fn void QOpenGLExtraFunctions::glUniform2ui(GLint location, GLuint v0, GLuint v1)
3276
3277 Convenience function that calls glUniform2ui(\a location, \a v0, \a v1).
3278
3279 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
3280 with plain OpenGL, the function is only usable when the given profile and version contains the
3281 function either in core or as an extension.
3282
3283 For more information, see the OpenGL ES 3.x documentation for
3284 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glUniform.xhtml}{glUniform2ui()}.
3285*/
3286
3287/*!
3288 \fn void QOpenGLExtraFunctions::glUniform2uiv(GLint location, GLsizei count, const GLuint * value)
3289
3290 Convenience function that calls glUniform2uiv(\a location, \a count, \a value).
3291
3292 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
3293 with plain OpenGL, the function is only usable when the given profile and version contains the
3294 function either in core or as an extension.
3295
3296 For more information, see the OpenGL ES 3.x documentation for
3297 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glUniform.xhtml}{glUniform2uiv()}.
3298*/
3299
3300/*!
3301 \fn void QOpenGLExtraFunctions::glUniform3ui(GLint location, GLuint v0, GLuint v1, GLuint v2)
3302
3303 Convenience function that calls glUniform3ui(\a location, \a v0, \a v1, \a v2).
3304
3305 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
3306 with plain OpenGL, the function is only usable when the given profile and version contains the
3307 function either in core or as an extension.
3308
3309 For more information, see the OpenGL ES 3.x documentation for
3310 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glUniform.xhtml}{glUniform3ui()}.
3311*/
3312
3313/*!
3314 \fn void QOpenGLExtraFunctions::glUniform3uiv(GLint location, GLsizei count, const GLuint * value)
3315
3316 Convenience function that calls glUniform3uiv(\a location, \a count, \a value).
3317
3318 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
3319 with plain OpenGL, the function is only usable when the given profile and version contains the
3320 function either in core or as an extension.
3321
3322 For more information, see the OpenGL ES 3.x documentation for
3323 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glUniform.xhtml}{glUniform3uiv()}.
3324*/
3325
3326/*!
3327 \fn void QOpenGLExtraFunctions::glUniform4ui(GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3)
3328
3329 Convenience function that calls glUniform4ui(\a location, \a v0, \a v1, \a v2, \a v3).
3330
3331 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
3332 with plain OpenGL, the function is only usable when the given profile and version contains the
3333 function either in core or as an extension.
3334
3335 For more information, see the OpenGL ES 3.x documentation for
3336 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glUniform.xhtml}{glUniform4ui()}.
3337*/
3338
3339/*!
3340 \fn void QOpenGLExtraFunctions::glUniform4uiv(GLint location, GLsizei count, const GLuint * value)
3341
3342 Convenience function that calls glUniform4uiv(\a location, \a count, \a value).
3343
3344 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
3345 with plain OpenGL, the function is only usable when the given profile and version contains the
3346 function either in core or as an extension.
3347
3348 For more information, see the OpenGL ES 3.x documentation for
3349 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glUniform.xhtml}{glUniform4uiv()}.
3350*/
3351
3352/*!
3353 \fn void QOpenGLExtraFunctions::glUniformBlockBinding(GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding)
3354
3355 Convenience function that calls glUniformBlockBinding(\a program, \a uniformBlockIndex, \a uniformBlockBinding).
3356
3357 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
3358 with plain OpenGL, the function is only usable when the given profile and version contains the
3359 function either in core or as an extension.
3360
3361 For more information, see the OpenGL ES 3.x documentation for
3362 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glUniformBlockBinding.xhtml}{glUniformBlockBinding()}.
3363*/
3364
3365/*!
3366 \fn void QOpenGLExtraFunctions::glUniformMatrix2x3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value)
3367
3368 Convenience function that calls glUniformMatrix2x3fv(\a location, \a count, \a transpose, \a value).
3369
3370 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
3371 with plain OpenGL, the function is only usable when the given profile and version contains the
3372 function either in core or as an extension.
3373
3374 For more information, see the OpenGL ES 3.x documentation for
3375 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glUniform.xhtml}{glUniformMatrix2x3fv()}.
3376*/
3377
3378/*!
3379 \fn void QOpenGLExtraFunctions::glUniformMatrix2x4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value)
3380
3381 Convenience function that calls glUniformMatrix2x4fv(\a location, \a count, \a transpose, \a value).
3382
3383 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
3384 with plain OpenGL, the function is only usable when the given profile and version contains the
3385 function either in core or as an extension.
3386
3387 For more information, see the OpenGL ES 3.x documentation for
3388 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glUniform.xhtml}{glUniformMatrix2x4fv()}.
3389*/
3390
3391/*!
3392 \fn void QOpenGLExtraFunctions::glUniformMatrix3x2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value)
3393
3394 Convenience function that calls glUniformMatrix3x2fv(\a location, \a count, \a transpose, \a value).
3395
3396 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
3397 with plain OpenGL, the function is only usable when the given profile and version contains the
3398 function either in core or as an extension.
3399
3400 For more information, see the OpenGL ES 3.x documentation for
3401 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glUniform.xhtml}{glUniformMatrix3x2fv()}.
3402*/
3403
3404/*!
3405 \fn void QOpenGLExtraFunctions::glUniformMatrix3x4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value)
3406
3407 Convenience function that calls glUniformMatrix3x4fv(\a location, \a count, \a transpose, \a value).
3408
3409 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
3410 with plain OpenGL, the function is only usable when the given profile and version contains the
3411 function either in core or as an extension.
3412
3413 For more information, see the OpenGL ES 3.x documentation for
3414 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glUniform.xhtml}{glUniformMatrix3x4fv()}.
3415*/
3416
3417/*!
3418 \fn void QOpenGLExtraFunctions::glUniformMatrix4x2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value)
3419
3420 Convenience function that calls glUniformMatrix4x2fv(\a location, \a count, \a transpose, \a value).
3421
3422 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
3423 with plain OpenGL, the function is only usable when the given profile and version contains the
3424 function either in core or as an extension.
3425
3426 For more information, see the OpenGL ES 3.x documentation for
3427 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glUniform.xhtml}{glUniformMatrix4x2fv()}.
3428*/
3429
3430/*!
3431 \fn void QOpenGLExtraFunctions::glUniformMatrix4x3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value)
3432
3433 Convenience function that calls glUniformMatrix4x3fv(\a location, \a count, \a transpose, \a value).
3434
3435 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
3436 with plain OpenGL, the function is only usable when the given profile and version contains the
3437 function either in core or as an extension.
3438
3439 For more information, see the OpenGL ES 3.x documentation for
3440 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glUniform.xhtml}{glUniformMatrix4x3fv()}.
3441*/
3442
3443/*!
3444 \fn GLboolean QOpenGLExtraFunctions::glUnmapBuffer(GLenum target)
3445
3446 Convenience function that calls glUnmapBuffer(\a target).
3447
3448 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
3449 with plain OpenGL, the function is only usable when the given profile and version contains the
3450 function either in core or as an extension.
3451
3452 For more information, see the OpenGL ES 3.x documentation for
3453 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glMapBufferRange.xhtml}{glUnmapBuffer()}.
3454*/
3455
3456/*!
3457 \fn void QOpenGLExtraFunctions::glVertexAttribDivisor(GLuint index, GLuint divisor)
3458
3459 Convenience function that calls glVertexAttribDivisor(\a index, \a divisor).
3460
3461 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
3462 with plain OpenGL, the function is only usable when the given profile and version contains the
3463 function either in core or as an extension.
3464
3465 For more information, see the OpenGL ES 3.x documentation for
3466 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glVertexAttribDivisor.xhtml}{glVertexAttribDivisor()}.
3467*/
3468
3469/*!
3470 \fn void QOpenGLExtraFunctions::glVertexAttribI4i(GLuint index, GLint x, GLint y, GLint z, GLint w)
3471
3472 Convenience function that calls glVertexAttribI4i(\a index, \a x, \a y, \a z, \a w).
3473
3474 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
3475 with plain OpenGL, the function is only usable when the given profile and version contains the
3476 function either in core or as an extension.
3477
3478 For more information, see the OpenGL ES 3.x documentation for
3479 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glVertexAttrib.xhtml}{glVertexAttribI4i()}.
3480*/
3481
3482/*!
3483 \fn void QOpenGLExtraFunctions::glVertexAttribI4iv(GLuint index, const GLint * v)
3484
3485 Convenience function that calls glVertexAttribI4iv(\a index, \a v).
3486
3487 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
3488 with plain OpenGL, the function is only usable when the given profile and version contains the
3489 function either in core or as an extension.
3490
3491 For more information, see the OpenGL ES 3.x documentation for
3492 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glVertexAttrib.xhtml}{glVertexAttribI4iv()}.
3493*/
3494
3495/*!
3496 \fn void QOpenGLExtraFunctions::glVertexAttribI4ui(GLuint index, GLuint x, GLuint y, GLuint z, GLuint w)
3497
3498 Convenience function that calls glVertexAttribI4ui(\a index, \a x, \a y, \a z, \a w).
3499
3500 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
3501 with plain OpenGL, the function is only usable when the given profile and version contains the
3502 function either in core or as an extension.
3503
3504 For more information, see the OpenGL ES 3.x documentation for
3505 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glVertexAttrib.xhtml}{glVertexAttribI4ui()}.
3506*/
3507
3508/*!
3509 \fn void QOpenGLExtraFunctions::glVertexAttribI4uiv(GLuint index, const GLuint * v)
3510
3511 Convenience function that calls glVertexAttribI4uiv(\a index, \a v).
3512
3513 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
3514 with plain OpenGL, the function is only usable when the given profile and version contains the
3515 function either in core or as an extension.
3516
3517 For more information, see the OpenGL ES 3.x documentation for
3518 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glVertexAttrib.xhtml}{glVertexAttribI4uiv()}.
3519*/
3520
3521/*!
3522 \fn void QOpenGLExtraFunctions::glVertexAttribIPointer(GLuint index, GLint size, GLenum type, GLsizei stride, const void * pointer)
3523
3524 Convenience function that calls glVertexAttribIPointer(\a index, \a size, \a type, \a stride, \a pointer).
3525
3526 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
3527 with plain OpenGL, the function is only usable when the given profile and version contains the
3528 function either in core or as an extension.
3529
3530 For more information, see the OpenGL ES 3.x documentation for
3531 \l{https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glVertexAttribPointer.xhtml}{glVertexAttribIPointer()}.
3532*/
3533
3534/*!
3535 \fn void QOpenGLExtraFunctions::glWaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout)
3536
3537 Convenience function that calls glWaitSync(\a sync, \a flags, \a timeout).
3538
3539 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
3540 with plain OpenGL, the function is only usable when the given profile and version contains the
3541 function either in core or as an extension.
3542
3543 For more information, see the OpenGL ES 3.x documentation for
3544 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glWaitSync.xhtml}{glWaitSync()}.
3545*/
3546
3547/*!
3548 \fn void QOpenGLExtraFunctions::glActiveShaderProgram(GLuint pipeline, GLuint program)
3549
3550 Convenience function that calls glActiveShaderProgram(\a pipeline, \a program).
3551
3552 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
3553 with plain OpenGL, the function is only usable when the given profile and version contains the
3554 function either in core or as an extension.
3555
3556 For more information, see the OpenGL ES 3.x documentation for
3557 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glActiveShaderProgram.xhtml}{glActiveShaderProgram()}.
3558*/
3559
3560/*!
3561 \fn void QOpenGLExtraFunctions::glBindImageTexture(GLuint unit, GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum access, GLenum format)
3562
3563 Convenience function that calls glBindImageTexture(\a unit, \a texture, \a level, \a layered, \a layer, \a access, \a format).
3564
3565 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
3566 with plain OpenGL, the function is only usable when the given profile and version contains the
3567 function either in core or as an extension.
3568
3569 For more information, see the OpenGL ES 3.x documentation for
3570 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glBindImageTexture.xhtml}{glBindImageTexture()}.
3571*/
3572
3573/*!
3574 \fn void QOpenGLExtraFunctions::glBindProgramPipeline(GLuint pipeline)
3575
3576 Convenience function that calls glBindProgramPipeline(\a pipeline).
3577
3578 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
3579 with plain OpenGL, the function is only usable when the given profile and version contains the
3580 function either in core or as an extension.
3581
3582 For more information, see the OpenGL ES 3.x documentation for
3583 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glBindProgramPipeline.xhtml}{glBindProgramPipeline()}.
3584*/
3585
3586/*!
3587 \fn void QOpenGLExtraFunctions::glBindVertexBuffer(GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride)
3588
3589 Convenience function that calls glBindVertexBuffer(\a bindingindex, \a buffer, \a offset, \a stride).
3590
3591 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
3592 with plain OpenGL, the function is only usable when the given profile and version contains the
3593 function either in core or as an extension.
3594
3595 For more information, see the OpenGL ES 3.x documentation for
3596 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glBindVertexBuffer.xhtml}{glBindVertexBuffer()}.
3597*/
3598
3599/*!
3600 \fn GLuint QOpenGLExtraFunctions::glCreateShaderProgramv(GLenum type, GLsizei count, const GLchar *const* strings)
3601
3602 Convenience function that calls glCreateShaderProgramv(\a type, \a count, \a strings).
3603
3604 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
3605 with plain OpenGL, the function is only usable when the given profile and version contains the
3606 function either in core or as an extension.
3607
3608 For more information, see the OpenGL ES 3.x documentation for
3609 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glCreateShaderProgram.xhtml}{glCreateShaderProgramv()}.
3610*/
3611
3612/*!
3613 \fn void QOpenGLExtraFunctions::glDeleteProgramPipelines(GLsizei n, const GLuint * pipelines)
3614
3615 Convenience function that calls glDeleteProgramPipelines(\a n, \a pipelines).
3616
3617 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
3618 with plain OpenGL, the function is only usable when the given profile and version contains the
3619 function either in core or as an extension.
3620
3621 For more information, see the OpenGL ES 3.x documentation for
3622 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glDeleteProgramPipelines.xhtml}{glDeleteProgramPipelines()}.
3623*/
3624
3625/*!
3626 \fn void QOpenGLExtraFunctions::glDispatchCompute(GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z)
3627
3628 Convenience function that calls glDispatchCompute(\a num_groups_x, \a num_groups_y, \a num_groups_z).
3629
3630 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
3631 with plain OpenGL, the function is only usable when the given profile and version contains the
3632 function either in core or as an extension.
3633
3634 For more information, see the OpenGL ES 3.x documentation for
3635 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glDispatchCompute.xhtml}{glDispatchCompute()}.
3636*/
3637
3638/*!
3639 \fn void QOpenGLExtraFunctions::glDispatchComputeIndirect(GLintptr indirect)
3640
3641 Convenience function that calls glDispatchComputeIndirect(\a indirect).
3642
3643 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
3644 with plain OpenGL, the function is only usable when the given profile and version contains the
3645 function either in core or as an extension.
3646
3647 For more information, see the OpenGL ES 3.x documentation for
3648 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glDispatchComputeIndirect.xhtml}{glDispatchComputeIndirect()}.
3649*/
3650
3651/*!
3652 \fn void QOpenGLExtraFunctions::glDrawArraysIndirect(GLenum mode, const void * indirect)
3653
3654 Convenience function that calls glDrawArraysIndirect(\a mode, \a indirect).
3655
3656 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
3657 with plain OpenGL, the function is only usable when the given profile and version contains the
3658 function either in core or as an extension.
3659
3660 For more information, see the OpenGL ES 3.x documentation for
3661 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glDrawArraysIndirect.xhtml}{glDrawArraysIndirect()}.
3662*/
3663
3664/*!
3665 \fn void QOpenGLExtraFunctions::glDrawElementsIndirect(GLenum mode, GLenum type, const void * indirect)
3666
3667 Convenience function that calls glDrawElementsIndirect(\a mode, \a type, \a indirect).
3668
3669 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
3670 with plain OpenGL, the function is only usable when the given profile and version contains the
3671 function either in core or as an extension.
3672
3673 For more information, see the OpenGL ES 3.x documentation for
3674 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glDrawElementsIndirect.xhtml}{glDrawElementsIndirect()}.
3675*/
3676
3677/*!
3678 \fn void QOpenGLExtraFunctions::glFramebufferParameteri(GLenum target, GLenum pname, GLint param)
3679
3680 Convenience function that calls glFramebufferParameteri(\a target, \a pname, \a param).
3681
3682 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
3683 with plain OpenGL, the function is only usable when the given profile and version contains the
3684 function either in core or as an extension.
3685
3686 For more information, see the OpenGL ES 3.x documentation for
3687 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glFramebufferParameteri.xhtml}{glFramebufferParameteri()}.
3688*/
3689
3690/*!
3691 \fn void QOpenGLExtraFunctions::glGenProgramPipelines(GLsizei n, GLuint* pipelines)
3692
3693 Convenience function that calls glGenProgramPipelines(\a n, \a pipelines).
3694
3695 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
3696 with plain OpenGL, the function is only usable when the given profile and version contains the
3697 function either in core or as an extension.
3698
3699 For more information, see the OpenGL ES 3.x documentation for
3700 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glGenProgramPipelines.xhtml}{glGenProgramPipelines()}.
3701*/
3702
3703/*!
3704 \fn void QOpenGLExtraFunctions::glGetBooleani_v(GLenum target, GLuint index, GLboolean* data)
3705
3706 Convenience function that calls glGetBooleani_v(\a target, \a index, \a data).
3707
3708 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
3709 with plain OpenGL, the function is only usable when the given profile and version contains the
3710 function either in core or as an extension.
3711
3712 For more information, see the OpenGL ES 3.x documentation for
3713 \l{https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glGet.xhtml}{glGetBooleani_v()}.
3714*/
3715
3716/*!
3717 \fn void QOpenGLExtraFunctions::glGetFramebufferParameteriv(GLenum target, GLenum pname, GLint* params)
3718
3719 Convenience function that calls glGetFramebufferParameteriv(\a target, \a pname, \a params).
3720
3721 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
3722 with plain OpenGL, the function is only usable when the given profile and version contains the
3723 function either in core or as an extension.
3724
3725 For more information, see the OpenGL ES 3.x documentation for
3726 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glGetFramebufferParameteriv.xhtml}{glGetFramebufferParameteriv()}.
3727*/
3728
3729/*!
3730 \fn void QOpenGLExtraFunctions::glGetMultisamplefv(GLenum pname, GLuint index, GLfloat* val)
3731
3732 Convenience function that calls glGetMultisamplefv(\a pname, \a index, \a val).
3733
3734 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
3735 with plain OpenGL, the function is only usable when the given profile and version contains the
3736 function either in core or as an extension.
3737
3738 For more information, see the OpenGL ES 3.x documentation for
3739 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glGetMultisamplefv.xhtml}{glGetMultisamplefv()}.
3740*/
3741
3742/*!
3743 \fn void QOpenGLExtraFunctions::glGetProgramInterfaceiv(GLuint program, GLenum programInterface, GLenum pname, GLint* params)
3744
3745 Convenience function that calls glGetProgramInterfaceiv(\a program, \a programInterface, \a pname, \a params).
3746
3747 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
3748 with plain OpenGL, the function is only usable when the given profile and version contains the
3749 function either in core or as an extension.
3750
3751 For more information, see the OpenGL ES 3.x documentation for
3752 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glGetProgramInterface.xhtml}{glGetProgramInterfaceiv()}.
3753*/
3754
3755/*!
3756 \fn void QOpenGLExtraFunctions::glGetProgramPipelineInfoLog(GLuint pipeline, GLsizei bufSize, GLsizei* length, GLchar* infoLog)
3757
3758 Convenience function that calls glGetProgramPipelineInfoLog(\a pipeline, \a bufSize, \a length, \a infoLog).
3759
3760 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
3761 with plain OpenGL, the function is only usable when the given profile and version contains the
3762 function either in core or as an extension.
3763
3764 For more information, see the OpenGL ES 3.x documentation for
3765 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glGetProgramPipelineInfoLog.xhtml}{glGetProgramPipelineInfoLog()}.
3766*/
3767
3768/*!
3769 \fn void QOpenGLExtraFunctions::glGetProgramPipelineiv(GLuint pipeline, GLenum pname, GLint* params)
3770
3771 Convenience function that calls glGetProgramPipelineiv(\a pipeline, \a pname, \a params).
3772
3773 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
3774 with plain OpenGL, the function is only usable when the given profile and version contains the
3775 function either in core or as an extension.
3776
3777 For more information, see the OpenGL ES 3.x documentation for
3778 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glGetProgramPipeline.xhtml}{glGetProgramPipelineiv()}.
3779*/
3780
3781/*!
3782 \fn GLuint QOpenGLExtraFunctions::glGetProgramResourceIndex(GLuint program, GLenum programInterface, const GLchar * name)
3783
3784 Convenience function that calls glGetProgramResourceIndex(\a program, \a programInterface, \a name).
3785
3786 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
3787 with plain OpenGL, the function is only usable when the given profile and version contains the
3788 function either in core or as an extension.
3789
3790 For more information, see the OpenGL ES 3.x documentation for
3791 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glGetProgramResourceIndex.xhtml}{glGetProgramResourceIndex()}.
3792*/
3793
3794/*!
3795 \fn GLint QOpenGLExtraFunctions::glGetProgramResourceLocation(GLuint program, GLenum programInterface, const GLchar * name)
3796
3797 Convenience function that calls glGetProgramResourceLocation(\a program, \a programInterface, \a name).
3798
3799 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
3800 with plain OpenGL, the function is only usable when the given profile and version contains the
3801 function either in core or as an extension.
3802
3803 For more information, see the OpenGL ES 3.x documentation for
3804 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glGetProgramResourceLocation.xhtml}{glGetProgramResourceLocation()}.
3805*/
3806
3807/*!
3808 \fn void QOpenGLExtraFunctions::glGetProgramResourceName(GLuint program, GLenum programInterface, GLuint index, GLsizei bufSize, GLsizei* length, GLchar* name)
3809
3810 Convenience function that calls glGetProgramResourceName(\a program, \a programInterface, \a index, \a bufSize, \a length, \a name).
3811
3812 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
3813 with plain OpenGL, the function is only usable when the given profile and version contains the
3814 function either in core or as an extension.
3815
3816 For more information, see the OpenGL ES 3.x documentation for
3817 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glGetProgramResourceName.xhtml}{glGetProgramResourceName()}.
3818*/
3819
3820/*!
3821 \fn void QOpenGLExtraFunctions::glGetProgramResourceiv(GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum * props, GLsizei bufSize, GLsizei* length, GLint* params)
3822
3823 Convenience function that calls glGetProgramResourceiv(\a program, \a programInterface, \a index, \a propCount, \a props, \a bufSize, \a length, \a params).
3824
3825 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
3826 with plain OpenGL, the function is only usable when the given profile and version contains the
3827 function either in core or as an extension.
3828
3829 For more information, see the OpenGL ES 3.x documentation for
3830 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glGetProgramResource.xhtml}{glGetProgramResourceiv()}.
3831*/
3832
3833/*!
3834 \fn void QOpenGLExtraFunctions::glGetTexLevelParameterfv(GLenum target, GLint level, GLenum pname, GLfloat* params)
3835
3836 Convenience function that calls glGetTexLevelParameterfv(\a target, \a level, \a pname, \a params).
3837
3838 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
3839 with plain OpenGL, the function is only usable when the given profile and version contains the
3840 function either in core or as an extension.
3841
3842 For more information, see the OpenGL ES 3.x documentation for
3843 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glGetTexLevelParameter.xhtml}{glGetTexLevelParameterfv()}.
3844*/
3845
3846/*!
3847 \fn void QOpenGLExtraFunctions::glGetTexLevelParameteriv(GLenum target, GLint level, GLenum pname, GLint* params)
3848
3849 Convenience function that calls glGetTexLevelParameteriv(\a target, \a level, \a pname, \a params).
3850
3851 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
3852 with plain OpenGL, the function is only usable when the given profile and version contains the
3853 function either in core or as an extension.
3854
3855 For more information, see the OpenGL ES 3.x documentation for
3856 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glGetTexLevelParameter.xhtml}{glGetTexLevelParameteriv()}.
3857*/
3858
3859/*!
3860 \fn GLboolean QOpenGLExtraFunctions::glIsProgramPipeline(GLuint pipeline)
3861
3862 Convenience function that calls glIsProgramPipeline(\a pipeline).
3863
3864 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
3865 with plain OpenGL, the function is only usable when the given profile and version contains the
3866 function either in core or as an extension.
3867
3868 For more information, see the OpenGL ES 3.x documentation for
3869 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glIsProgramPipeline.xhtml}{glIsProgramPipeline()}.
3870*/
3871
3872/*!
3873 \fn void QOpenGLExtraFunctions::glMemoryBarrier(GLbitfield barriers)
3874
3875 Convenience function that calls glMemoryBarrier(\a barriers).
3876
3877 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
3878 with plain OpenGL, the function is only usable when the given profile and version contains the
3879 function either in core or as an extension.
3880
3881 For more information, see the OpenGL ES 3.x documentation for
3882 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3.1/html/glMemoryBarrier.xhtml}{glMemoryBarrier()}.
3883*/
3884
3885/*!
3886 \fn void QOpenGLExtraFunctions::glMemoryBarrierByRegion(GLbitfield barriers)
3887
3888 Convenience function that calls glMemoryBarrierByRegion(\a barriers).
3889
3890 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
3891 with plain OpenGL, the function is only usable when the given profile and version contains the
3892 function either in core or as an extension.
3893
3894 For more information, see the OpenGL ES 3.x documentation for
3895 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3.1/html/glMemoryBarrier.xhtml}{glMemoryBarrierByRegion()}.
3896*/
3897
3898/*!
3899 \fn void QOpenGLExtraFunctions::glProgramUniform1f(GLuint program, GLint location, GLfloat v0)
3900
3901 Convenience function that calls glProgramUniform1f(\a program, \a location, \a v0).
3902
3903 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
3904 with plain OpenGL, the function is only usable when the given profile and version contains the
3905 function either in core or as an extension.
3906
3907 For more information, see the OpenGL ES 3.x documentation for
3908 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glProgramUniform.xhtml}{glProgramUniform1f()}.
3909*/
3910
3911/*!
3912 \fn void QOpenGLExtraFunctions::glProgramUniform1fv(GLuint program, GLint location, GLsizei count, const GLfloat * value)
3913
3914 Convenience function that calls glProgramUniform1fv(\a program, \a location, \a count, \a value).
3915
3916 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
3917 with plain OpenGL, the function is only usable when the given profile and version contains the
3918 function either in core or as an extension.
3919
3920 For more information, see the OpenGL ES 3.x documentation for
3921 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glProgramUniform.xhtml}{glProgramUniform1fv()}.
3922*/
3923
3924/*!
3925 \fn void QOpenGLExtraFunctions::glProgramUniform1i(GLuint program, GLint location, GLint v0)
3926
3927 Convenience function that calls glProgramUniform1i(\a program, \a location, \a v0).
3928
3929 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
3930 with plain OpenGL, the function is only usable when the given profile and version contains the
3931 function either in core or as an extension.
3932
3933 For more information, see the OpenGL ES 3.x documentation for
3934 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glProgramUniform.xhtml}{glProgramUniform1i()}.
3935*/
3936
3937/*!
3938 \fn void QOpenGLExtraFunctions::glProgramUniform1iv(GLuint program, GLint location, GLsizei count, const GLint * value)
3939
3940 Convenience function that calls glProgramUniform1iv(\a program, \a location, \a count, \a value).
3941
3942 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
3943 with plain OpenGL, the function is only usable when the given profile and version contains the
3944 function either in core or as an extension.
3945
3946 For more information, see the OpenGL ES 3.x documentation for
3947 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glProgramUniform.xhtml}{glProgramUniform1iv()}.
3948*/
3949
3950/*!
3951 \fn void QOpenGLExtraFunctions::glProgramUniform1ui(GLuint program, GLint location, GLuint v0)
3952
3953 Convenience function that calls glProgramUniform1ui(\a program, \a location, \a v0).
3954
3955 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
3956 with plain OpenGL, the function is only usable when the given profile and version contains the
3957 function either in core or as an extension.
3958
3959 For more information, see the OpenGL ES 3.x documentation for
3960 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glProgramUniform.xhtml}{glProgramUniform1ui()}.
3961*/
3962
3963/*!
3964 \fn void QOpenGLExtraFunctions::glProgramUniform1uiv(GLuint program, GLint location, GLsizei count, const GLuint * value)
3965
3966 Convenience function that calls glProgramUniform1uiv(\a program, \a location, \a count, \a value).
3967
3968 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
3969 with plain OpenGL, the function is only usable when the given profile and version contains the
3970 function either in core or as an extension.
3971
3972 For more information, see the OpenGL ES 3.x documentation for
3973 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glProgramUniform.xhtml}{glProgramUniform1uiv()}.
3974*/
3975
3976/*!
3977 \fn void QOpenGLExtraFunctions::glProgramUniform2f(GLuint program, GLint location, GLfloat v0, GLfloat v1)
3978
3979 Convenience function that calls glProgramUniform2f(\a program, \a location, \a v0, \a v1).
3980
3981 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
3982 with plain OpenGL, the function is only usable when the given profile and version contains the
3983 function either in core or as an extension.
3984
3985 For more information, see the OpenGL ES 3.x documentation for
3986 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glProgramUniform.xhtml}{glProgramUniform2f()}.
3987*/
3988
3989/*!
3990 \fn void QOpenGLExtraFunctions::glProgramUniform2fv(GLuint program, GLint location, GLsizei count, const GLfloat * value)
3991
3992 Convenience function that calls glProgramUniform2fv(\a program, \a location, \a count, \a value).
3993
3994 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
3995 with plain OpenGL, the function is only usable when the given profile and version contains the
3996 function either in core or as an extension.
3997
3998 For more information, see the OpenGL ES 3.x documentation for
3999 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glProgramUniform.xhtml}{glProgramUniform2fv()}.
4000*/
4001
4002/*!
4003 \fn void QOpenGLExtraFunctions::glProgramUniform2i(GLuint program, GLint location, GLint v0, GLint v1)
4004
4005 Convenience function that calls glProgramUniform2i(\a program, \a location, \a v0, \a v1).
4006
4007 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
4008 with plain OpenGL, the function is only usable when the given profile and version contains the
4009 function either in core or as an extension.
4010
4011 For more information, see the OpenGL ES 3.x documentation for
4012 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glProgramUniform.xhtml}{glProgramUniform2i()}.
4013*/
4014
4015/*!
4016 \fn void QOpenGLExtraFunctions::glProgramUniform2iv(GLuint program, GLint location, GLsizei count, const GLint * value)
4017
4018 Convenience function that calls glProgramUniform2iv(\a program, \a location, \a count, \a value).
4019
4020 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
4021 with plain OpenGL, the function is only usable when the given profile and version contains the
4022 function either in core or as an extension.
4023
4024 For more information, see the OpenGL ES 3.x documentation for
4025 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glProgramUniform.xhtml}{glProgramUniform2iv()}.
4026*/
4027
4028/*!
4029 \fn void QOpenGLExtraFunctions::glProgramUniform2ui(GLuint program, GLint location, GLuint v0, GLuint v1)
4030
4031 Convenience function that calls glProgramUniform2ui(\a program, \a location, \a v0, \a v1).
4032
4033 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
4034 with plain OpenGL, the function is only usable when the given profile and version contains the
4035 function either in core or as an extension.
4036
4037 For more information, see the OpenGL ES 3.x documentation for
4038 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glProgramUniform.xhtml}{glProgramUniform2ui()}.
4039*/
4040
4041/*!
4042 \fn void QOpenGLExtraFunctions::glProgramUniform2uiv(GLuint program, GLint location, GLsizei count, const GLuint * value)
4043
4044 Convenience function that calls glProgramUniform2uiv(\a program, \a location, \a count, \a value).
4045
4046 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
4047 with plain OpenGL, the function is only usable when the given profile and version contains the
4048 function either in core or as an extension.
4049
4050 For more information, see the OpenGL ES 3.x documentation for
4051 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glProgramUniform.xhtml}{glProgramUniform2uiv()}.
4052*/
4053
4054/*!
4055 \fn void QOpenGLExtraFunctions::glProgramUniform3f(GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2)
4056
4057 Convenience function that calls glProgramUniform3f(\a program, \a location, \a v0, \a v1, \a v2).
4058
4059 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
4060 with plain OpenGL, the function is only usable when the given profile and version contains the
4061 function either in core or as an extension.
4062
4063 For more information, see the OpenGL ES 3.x documentation for
4064 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glProgramUniform.xhtml}{glProgramUniform3f()}.
4065*/
4066
4067/*!
4068 \fn void QOpenGLExtraFunctions::glProgramUniform3fv(GLuint program, GLint location, GLsizei count, const GLfloat * value)
4069
4070 Convenience function that calls glProgramUniform3fv(\a program, \a location, \a count, \a value).
4071
4072 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
4073 with plain OpenGL, the function is only usable when the given profile and version contains the
4074 function either in core or as an extension.
4075
4076 For more information, see the OpenGL ES 3.x documentation for
4077 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glProgramUniform.xhtml}{glProgramUniform3fv()}.
4078*/
4079
4080/*!
4081 \fn void QOpenGLExtraFunctions::glProgramUniform3i(GLuint program, GLint location, GLint v0, GLint v1, GLint v2)
4082
4083 Convenience function that calls glProgramUniform3i(\a program, \a location, \a v0, \a v1, \a v2).
4084
4085 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
4086 with plain OpenGL, the function is only usable when the given profile and version contains the
4087 function either in core or as an extension.
4088
4089 For more information, see the OpenGL ES 3.x documentation for
4090 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glProgramUniform.xhtml}{glProgramUniform3i()}.
4091*/
4092
4093/*!
4094 \fn void QOpenGLExtraFunctions::glProgramUniform3iv(GLuint program, GLint location, GLsizei count, const GLint * value)
4095
4096 Convenience function that calls glProgramUniform3iv(\a program, \a location, \a count, \a value).
4097
4098 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
4099 with plain OpenGL, the function is only usable when the given profile and version contains the
4100 function either in core or as an extension.
4101
4102 For more information, see the OpenGL ES 3.x documentation for
4103 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glProgramUniform.xhtml}{glProgramUniform3iv()}.
4104*/
4105
4106/*!
4107 \fn void QOpenGLExtraFunctions::glProgramUniform3ui(GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2)
4108
4109 Convenience function that calls glProgramUniform3ui(\a program, \a location, \a v0, \a v1, \a v2).
4110
4111 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
4112 with plain OpenGL, the function is only usable when the given profile and version contains the
4113 function either in core or as an extension.
4114
4115 For more information, see the OpenGL ES 3.x documentation for
4116 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glProgramUniform.xhtml}{glProgramUniform3ui()}.
4117*/
4118
4119/*!
4120 \fn void QOpenGLExtraFunctions::glProgramUniform3uiv(GLuint program, GLint location, GLsizei count, const GLuint * value)
4121
4122 Convenience function that calls glProgramUniform3uiv(\a program, \a location, \a count, \a value).
4123
4124 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
4125 with plain OpenGL, the function is only usable when the given profile and version contains the
4126 function either in core or as an extension.
4127
4128 For more information, see the OpenGL ES 3.x documentation for
4129 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glProgramUniform.xhtml}{glProgramUniform3uiv()}.
4130*/
4131
4132/*!
4133 \fn void QOpenGLExtraFunctions::glProgramUniform4f(GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3)
4134
4135 Convenience function that calls glProgramUniform4f(\a program, \a location, \a v0, \a v1, \a v2, \a v3).
4136
4137 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
4138 with plain OpenGL, the function is only usable when the given profile and version contains the
4139 function either in core or as an extension.
4140
4141 For more information, see the OpenGL ES 3.x documentation for
4142 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glProgramUniform.xhtml}{glProgramUniform4f()}.
4143*/
4144
4145/*!
4146 \fn void QOpenGLExtraFunctions::glProgramUniform4fv(GLuint program, GLint location, GLsizei count, const GLfloat * value)
4147
4148 Convenience function that calls glProgramUniform4fv(\a program, \a location, \a count, \a value).
4149
4150 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
4151 with plain OpenGL, the function is only usable when the given profile and version contains the
4152 function either in core or as an extension.
4153
4154 For more information, see the OpenGL ES 3.x documentation for
4155 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glProgramUniform.xhtml}{glProgramUniform4fv()}.
4156*/
4157
4158/*!
4159 \fn void QOpenGLExtraFunctions::glProgramUniform4i(GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3)
4160
4161 Convenience function that calls glProgramUniform4i(\a program, \a location, \a v0, \a v1, \a v2, \a v3).
4162
4163 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
4164 with plain OpenGL, the function is only usable when the given profile and version contains the
4165 function either in core or as an extension.
4166
4167 For more information, see the OpenGL ES 3.x documentation for
4168 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glProgramUniform.xhtml}{glProgramUniform4i()}.
4169*/
4170
4171/*!
4172 \fn void QOpenGLExtraFunctions::glProgramUniform4iv(GLuint program, GLint location, GLsizei count, const GLint * value)
4173
4174 Convenience function that calls glProgramUniform4iv(\a program, \a location, \a count, \a value).
4175
4176 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
4177 with plain OpenGL, the function is only usable when the given profile and version contains the
4178 function either in core or as an extension.
4179
4180 For more information, see the OpenGL ES 3.x documentation for
4181 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glProgramUniform.xhtml}{glProgramUniform4iv()}.
4182*/
4183
4184/*!
4185 \fn void QOpenGLExtraFunctions::glProgramUniform4ui(GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3)
4186
4187 Convenience function that calls glProgramUniform4ui(\a program, \a location, \a v0, \a v1, \a v2, \a v3).
4188
4189 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
4190 with plain OpenGL, the function is only usable when the given profile and version contains the
4191 function either in core or as an extension.
4192
4193 For more information, see the OpenGL ES 3.x documentation for
4194 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glProgramUniform.xhtml}{glProgramUniform4ui()}.
4195*/
4196
4197/*!
4198 \fn void QOpenGLExtraFunctions::glProgramUniform4uiv(GLuint program, GLint location, GLsizei count, const GLuint * value)
4199
4200 Convenience function that calls glProgramUniform4uiv(\a program, \a location, \a count, \a value).
4201
4202 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
4203 with plain OpenGL, the function is only usable when the given profile and version contains the
4204 function either in core or as an extension.
4205
4206 For more information, see the OpenGL ES 3.x documentation for
4207 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glProgramUniform.xhtml}{glProgramUniform4uiv()}.
4208*/
4209
4210/*!
4211 \fn void QOpenGLExtraFunctions::glProgramUniformMatrix2fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value)
4212
4213 Convenience function that calls glProgramUniformMatrix2fv(\a program, \a location, \a count, \a transpose, \a value).
4214
4215 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
4216 with plain OpenGL, the function is only usable when the given profile and version contains the
4217 function either in core or as an extension.
4218
4219 For more information, see the OpenGL ES 3.x documentation for
4220 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glProgramUniform.xhtml}{glProgramUniformMatrix2fv()}.
4221*/
4222
4223/*!
4224 \fn void QOpenGLExtraFunctions::glProgramUniformMatrix2x3fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value)
4225
4226 Convenience function that calls glProgramUniformMatrix2x3fv(\a program, \a location, \a count, \a transpose, \a value).
4227
4228 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
4229 with plain OpenGL, the function is only usable when the given profile and version contains the
4230 function either in core or as an extension.
4231
4232 For more information, see the OpenGL ES 3.x documentation for
4233 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glProgramUniform.xhtml}{glProgramUniformMatrix2x3fv()}.
4234*/
4235
4236/*!
4237 \fn void QOpenGLExtraFunctions::glProgramUniformMatrix2x4fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value)
4238
4239 Convenience function that calls glProgramUniformMatrix2x4fv(\a program, \a location, \a count, \a transpose, \a value).
4240
4241 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
4242 with plain OpenGL, the function is only usable when the given profile and version contains the
4243 function either in core or as an extension.
4244
4245 For more information, see the OpenGL ES 3.x documentation for
4246 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glProgramUniform.xhtml}{glProgramUniformMatrix2x4fv()}.
4247*/
4248
4249/*!
4250 \fn void QOpenGLExtraFunctions::glProgramUniformMatrix3fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value)
4251
4252 Convenience function that calls glProgramUniformMatrix3fv(\a program, \a location, \a count, \a transpose, \a value).
4253
4254 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
4255 with plain OpenGL, the function is only usable when the given profile and version contains the
4256 function either in core or as an extension.
4257
4258 For more information, see the OpenGL ES 3.x documentation for
4259 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glProgramUniform.xhtml}{glProgramUniformMatrix3fv()}.
4260*/
4261
4262/*!
4263 \fn void QOpenGLExtraFunctions::glProgramUniformMatrix3x2fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value)
4264
4265 Convenience function that calls glProgramUniformMatrix3x2fv(\a program, \a location, \a count, \a transpose, \a value).
4266
4267 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
4268 with plain OpenGL, the function is only usable when the given profile and version contains the
4269 function either in core or as an extension.
4270
4271 For more information, see the OpenGL ES 3.x documentation for
4272 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glProgramUniform.xhtml}{glProgramUniformMatrix3x2fv()}.
4273*/
4274
4275/*!
4276 \fn void QOpenGLExtraFunctions::glProgramUniformMatrix3x4fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value)
4277
4278 Convenience function that calls glProgramUniformMatrix3x4fv(\a program, \a location, \a count, \a transpose, \a value).
4279
4280 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
4281 with plain OpenGL, the function is only usable when the given profile and version contains the
4282 function either in core or as an extension.
4283
4284 For more information, see the OpenGL ES 3.x documentation for
4285 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glProgramUniform.xhtml}{glProgramUniformMatrix3x4fv()}.
4286*/
4287
4288/*!
4289 \fn void QOpenGLExtraFunctions::glProgramUniformMatrix4fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value)
4290
4291 Convenience function that calls glProgramUniformMatrix4fv(\a program, \a location, \a count, \a transpose, \a value).
4292
4293 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
4294 with plain OpenGL, the function is only usable when the given profile and version contains the
4295 function either in core or as an extension.
4296
4297 For more information, see the OpenGL ES 3.x documentation for
4298 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glProgramUniform.xhtml}{glProgramUniformMatrix4fv()}.
4299*/
4300
4301/*!
4302 \fn void QOpenGLExtraFunctions::glProgramUniformMatrix4x2fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value)
4303
4304 Convenience function that calls glProgramUniformMatrix4x2fv(\a program, \a location, \a count, \a transpose, \a value).
4305
4306 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
4307 with plain OpenGL, the function is only usable when the given profile and version contains the
4308 function either in core or as an extension.
4309
4310 For more information, see the OpenGL ES 3.x documentation for
4311 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glProgramUniform.xhtml}{glProgramUniformMatrix4x2fv()}.
4312*/
4313
4314/*!
4315 \fn void QOpenGLExtraFunctions::glProgramUniformMatrix4x3fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value)
4316
4317 Convenience function that calls glProgramUniformMatrix4x3fv(\a program, \a location, \a count, \a transpose, \a value).
4318
4319 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
4320 with plain OpenGL, the function is only usable when the given profile and version contains the
4321 function either in core or as an extension.
4322
4323 For more information, see the OpenGL ES 3.x documentation for
4324 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glProgramUniform.xhtml}{glProgramUniformMatrix4x3fv()}.
4325*/
4326
4327/*!
4328 \fn void QOpenGLExtraFunctions::glSampleMaski(GLuint maskNumber, GLbitfield mask)
4329
4330 Convenience function that calls glSampleMaski(\a maskNumber, \a mask).
4331
4332 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
4333 with plain OpenGL, the function is only usable when the given profile and version contains the
4334 function either in core or as an extension.
4335
4336 For more information, see the OpenGL ES 3.x documentation for
4337 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glSampleMaski.xhtml}{glSampleMaski()}.
4338*/
4339
4340/*!
4341 \fn void QOpenGLExtraFunctions::glTexStorage2DMultisample(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations)
4342
4343 Convenience function that calls glTexStorage2DMultisample(\a target, \a samples, \a internalformat, \a width, \a height, \a fixedsamplelocations).
4344
4345 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
4346 with plain OpenGL, the function is only usable when the given profile and version contains the
4347 function either in core or as an extension.
4348
4349 For more information, see the OpenGL ES 3.x documentation for
4350 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glTexStorage2DMultisample.xhtml}{glTexStorage2DMultisample()}.
4351*/
4352
4353/*!
4354 \fn void QOpenGLExtraFunctions::glUseProgramStages(GLuint pipeline, GLbitfield stages, GLuint program)
4355
4356 Convenience function that calls glUseProgramStages(\a pipeline, \a stages, \a program).
4357
4358 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
4359 with plain OpenGL, the function is only usable when the given profile and version contains the
4360 function either in core or as an extension.
4361
4362 For more information, see the OpenGL ES 3.x documentation for
4363 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glUseProgramStages.xhtml}{glUseProgramStages()}.
4364*/
4365
4366/*!
4367 \fn void QOpenGLExtraFunctions::glValidateProgramPipeline(GLuint pipeline)
4368
4369 Convenience function that calls glValidateProgramPipeline(\a pipeline).
4370
4371 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
4372 with plain OpenGL, the function is only usable when the given profile and version contains the
4373 function either in core or as an extension.
4374
4375 For more information, see the OpenGL ES 3.x documentation for
4376 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glValidateProgramPipeline.xhtml}{glValidateProgramPipeline()}.
4377*/
4378
4379/*!
4380 \fn void QOpenGLExtraFunctions::glVertexAttribBinding(GLuint attribindex, GLuint bindingindex)
4381
4382 Convenience function that calls glVertexAttribBinding(\a attribindex, \a bindingindex).
4383
4384 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
4385 with plain OpenGL, the function is only usable when the given profile and version contains the
4386 function either in core or as an extension.
4387
4388 For more information, see the OpenGL ES 3.x documentation for
4389 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glVertexAttribBinding.xhtml}{glVertexAttribBinding()}.
4390*/
4391
4392/*!
4393 \fn void QOpenGLExtraFunctions::glVertexAttribFormat(GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset)
4394
4395 Convenience function that calls glVertexAttribFormat(\a attribindex, \a size, \a type, \a normalized, \a relativeoffset).
4396
4397 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
4398 with plain OpenGL, the function is only usable when the given profile and version contains the
4399 function either in core or as an extension.
4400
4401 For more information, see the OpenGL ES 3.x documentation for
4402 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glVertexAttribFormat.xhtml}{glVertexAttribFormat()}.
4403*/
4404
4405/*!
4406 \fn void QOpenGLExtraFunctions::glVertexAttribIFormat(GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset)
4407
4408 Convenience function that calls glVertexAttribIFormat(\a attribindex, \a size, \a type, \a relativeoffset).
4409
4410 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
4411 with plain OpenGL, the function is only usable when the given profile and version contains the
4412 function either in core or as an extension.
4413
4414 For more information, see the OpenGL ES 3.x documentation for
4415 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glVertexAttribFormat.xhtml}{glVertexAttribIFormat()}.
4416*/
4417
4418/*!
4419 \fn void QOpenGLExtraFunctions::glVertexBindingDivisor(GLuint bindingindex, GLuint divisor)
4420
4421 Convenience function that calls glVertexBindingDivisor(\a bindingindex, \a divisor).
4422
4423 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
4424 with plain OpenGL, the function is only usable when the given profile and version contains the
4425 function either in core or as an extension.
4426
4427 For more information, see the OpenGL ES 3.x documentation for
4428 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glVertexBindingDivisor.xhtml}{glVertexBindingDivisor()}.
4429*/
4430
4431/*!
4432 \fn void QOpenGLExtraFunctions::glBlendBarrier(void)
4433
4434 Convenience function that calls glBlendBarrier().
4435
4436 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
4437 with plain OpenGL, the function is only usable when the given profile and version contains the
4438 function either in core or as an extension.
4439
4440 For more information, see the OpenGL ES 3.X documentation for
4441 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glBlendBarrier.xhtml}{glBlendBarrier()}.
4442*/
4443
4444/*!
4445 \fn void QOpenGLExtraFunctions::glBlendEquationSeparatei(GLuint buf, GLenum modeRGB, GLenum modeAlpha)
4446
4447 Convenience function that calls glBlendEquationSeparatei(\a buf, \a modeRGB, \a modeAlpha).
4448
4449 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
4450 with plain OpenGL, the function is only usable when the given profile and version contains the
4451 function either in core or as an extension.
4452
4453 For more information, see the OpenGL ES 3.X documentation for
4454 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glBlendEquationSeparate.xhtml}{glBlendEquationSeparatei()}.
4455*/
4456
4457/*!
4458 \fn void QOpenGLExtraFunctions::glBlendEquationi(GLuint buf, GLenum mode)
4459
4460 Convenience function that calls glBlendEquationi(\a buf, \a mode).
4461
4462 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
4463 with plain OpenGL, the function is only usable when the given profile and version contains the
4464 function either in core or as an extension.
4465
4466 For more information, see the OpenGL ES 3.X documentation for
4467 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glBlendEquation.xhtml}{glBlendEquationi()}.
4468*/
4469
4470/*!
4471 \fn void QOpenGLExtraFunctions::glBlendFuncSeparatei(GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha)
4472
4473 Convenience function that calls glBlendFuncSeparatei(\a buf, \a srcRGB, \a dstRGB, \a srcAlpha, \a dstAlpha).
4474
4475 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
4476 with plain OpenGL, the function is only usable when the given profile and version contains the
4477 function either in core or as an extension.
4478
4479 For more information, see the OpenGL ES 3.X documentation for
4480 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glBlendFuncSeparate.xhtml}{glBlendFuncSeparatei()}.
4481*/
4482
4483/*!
4484 \fn void QOpenGLExtraFunctions::glBlendFunci(GLuint buf, GLenum src, GLenum dst)
4485
4486 Convenience function that calls glBlendFunci(\a buf, \a src, \a dst).
4487
4488 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
4489 with plain OpenGL, the function is only usable when the given profile and version contains the
4490 function either in core or as an extension.
4491
4492 For more information, see the OpenGL ES 3.X documentation for
4493 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glBlendFunc.xhtml}{glBlendFunci()}.
4494*/
4495
4496/*!
4497 \fn void QOpenGLExtraFunctions::glColorMaski(GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a)
4498
4499 Convenience function that calls glColorMaski(\a index, \a r, \a g, \a b, \a a).
4500
4501 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
4502 with plain OpenGL, the function is only usable when the given profile and version contains the
4503 function either in core or as an extension.
4504
4505 For more information, see the OpenGL ES 3.X documentation for
4506 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glColorMask.xhtml}{glColorMaski()}.
4507*/
4508
4509/*!
4510 \fn void QOpenGLExtraFunctions::glCopyImageSubData(GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei srcWidth, GLsizei srcHeight, GLsizei srcDepth)
4511
4512 Convenience function that calls glCopyImageSubData(\a srcName, \a srcTarget, \a srcLevel, \a srcX, \a srcY, \a srcZ, \a dstName, \a dstTarget, \a dstLevel, \a dstX, \a dstY, \a dstZ, \a srcWidth, \a srcHeight, \a srcDepth).
4513
4514 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
4515 with plain OpenGL, the function is only usable when the given profile and version contains the
4516 function either in core or as an extension.
4517
4518 For more information, see the OpenGL ES 3.X documentation for
4519 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glCopyImageSubData.xhtml}{glCopyImageSubData()}.
4520*/
4521
4522/*!
4523 \fn void QOpenGLExtraFunctions::glDebugMessageCallback(GLDEBUGPROC callback, const void * userParam)
4524
4525 Convenience function that calls glDebugMessageCallback(\a callback, \a userParam).
4526
4527 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
4528 with plain OpenGL, the function is only usable when the given profile and version contains the
4529 function either in core or as an extension.
4530
4531 For more information, see the OpenGL ES 3.X documentation for
4532 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glDebugMessageCallback.xhtml}{glDebugMessageCallback()}.
4533*/
4534
4535/*!
4536 \fn void QOpenGLExtraFunctions::glDebugMessageControl(GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint * ids, GLboolean enabled)
4537
4538 Convenience function that calls glDebugMessageControl(\a source, \a type, \a severity, \a count, \a ids, \a enabled).
4539
4540 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
4541 with plain OpenGL, the function is only usable when the given profile and version contains the
4542 function either in core or as an extension.
4543
4544 For more information, see the OpenGL ES 3.X documentation for
4545 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glDebugMessageControl.xhtml}{glDebugMessageContro()}.
4546*/
4547
4548/*!
4549 \fn void QOpenGLExtraFunctions::glDebugMessageInsert(GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar * buf)
4550
4551 Convenience function that calls glDebugMessageInsert(\a source, \a type, \a id, \a severity, \a length, \a buf).
4552
4553 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
4554 with plain OpenGL, the function is only usable when the given profile and version contains the
4555 function either in core or as an extension.
4556
4557 For more information, see the OpenGL ES 3.X documentation for
4558 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glDebugMessageInsert.xhtml}{glDebugMessageInsert()}.
4559*/
4560
4561/*!
4562 \fn void QOpenGLExtraFunctions::glDisablei(GLenum target, GLuint index)
4563
4564 Convenience function that calls glDisablei(\a target, \a index).
4565
4566 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
4567 with plain OpenGL, the function is only usable when the given profile and version contains the
4568 function either in core or as an extension.
4569
4570 For more information, see the OpenGL ES 3.X documentation for
4571 \l{https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glEnable.xhtml}{glDisablei()}.
4572*/
4573
4574/*!
4575 \fn void QOpenGLExtraFunctions::glDrawElementsBaseVertex(GLenum mode, GLsizei count, GLenum type, const void * indices, GLint basevertex)
4576
4577 Convenience function that calls glDrawElementsBaseVertex(\a mode, \a count, \a type, \a indices, \a basevertex).
4578
4579 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
4580 with plain OpenGL, the function is only usable when the given profile and version contains the
4581 function either in core or as an extension.
4582
4583 For more information, see the OpenGL ES 3.X documentation for
4584 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glDrawElementsBaseVertex.xhtml}{glDrawElementsBaseVerte()}.
4585*/
4586
4587/*!
4588 \fn void QOpenGLExtraFunctions::glDrawElementsInstancedBaseVertex(GLenum mode, GLsizei count, GLenum type, const void * indices, GLsizei instancecount, GLint basevertex)
4589
4590 Convenience function that calls glDrawElementsInstancedBaseVertex(\a mode, \a count, \a type, \a indices, \a instancecount, \a basevertex).
4591
4592 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
4593 with plain OpenGL, the function is only usable when the given profile and version contains the
4594 function either in core or as an extension.
4595
4596 For more information, see the OpenGL ES 3.X documentation for
4597 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glDrawElementsInstancedBaseVertex.xhtml}{glDrawElementsInstancedBaseVerte()}.
4598*/
4599
4600/*!
4601 \fn void QOpenGLExtraFunctions::glDrawRangeElementsBaseVertex(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void * indices, GLint basevertex)
4602
4603 Convenience function that calls glDrawRangeElementsBaseVertex(\a mode, \a start, \a end, \a count, \a type, \a indices, \a basevertex).
4604
4605 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
4606 with plain OpenGL, the function is only usable when the given profile and version contains the
4607 function either in core or as an extension.
4608
4609 For more information, see the OpenGL ES 3.X documentation for
4610 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glDrawRangeElementsBaseVertex.xhtml}{glDrawRangeElementsBaseVerte()}.
4611*/
4612
4613/*!
4614 \fn void QOpenGLExtraFunctions::glEnablei(GLenum target, GLuint index)
4615
4616 Convenience function that calls glEnablei(\a target, \a index).
4617
4618 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
4619 with plain OpenGL, the function is only usable when the given profile and version contains the
4620 function either in core or as an extension.
4621
4622 For more information, see the OpenGL ES 3.X documentation for
4623 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glEnable.xhtml}{glEnablei()}.
4624*/
4625
4626/*!
4627 \fn void QOpenGLExtraFunctions::glFramebufferTexture(GLenum target, GLenum attachment, GLuint texture, GLint level)
4628
4629 Convenience function that calls glFramebufferTexture(\a target, \a attachment, \a texture, \a level).
4630
4631 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
4632 with plain OpenGL, the function is only usable when the given profile and version contains the
4633 function either in core or as an extension.
4634
4635 For more information, see the OpenGL ES 3.X documentation for
4636 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glFramebufferTexture.xhtml}{glFramebufferTexture()}.
4637*/
4638
4639/*!
4640 \fn void QOpenGLExtraFunctions::glGetDebugMessageLog(GLuint count, GLsizei bufSize, GLenum* sources, GLenum* types, GLuint* ids, GLenum* severities, GLsizei* lengths, GLchar* messageLog)
4641
4642 Convenience function that calls glGetDebugMessageLog(\a count, \a bufSize, \a sources, \a types, \a ids, \a severities, \a lengths, \a messageLog).
4643
4644 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
4645 with plain OpenGL, the function is only usable when the given profile and version contains the
4646 function either in core or as an extension.
4647
4648 For more information, see the OpenGL ES 3.X documentation for
4649 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glGetDebugMessageLog.xhtml}{glGetDebugMessageLog()}.
4650*/
4651
4652/*!
4653 \fn void QOpenGLExtraFunctions::glGetGraphicsResetStatus(void)
4654
4655 Convenience function that calls glGetGraphicsResetStatus().
4656
4657 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
4658 with plain OpenGL, the function is only usable when the given profile and version contains the
4659 function either in core or as an extension.
4660
4661 For more information, see the OpenGL ES 3.X documentation for
4662 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glGetGraphicsResetStatus.xhtml}{glGetGraphicsResetStatus()}.
4663*/
4664
4665/*!
4666 \fn void QOpenGLExtraFunctions::glGetObjectLabel(GLenum identifier, GLuint name, GLsizei bufSize, GLsizei* length, GLchar* label)
4667
4668 Convenience function that calls glGetObjectLabel(\a identifier, \a name, \a bufSize, \a length, \a label).
4669
4670 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
4671 with plain OpenGL, the function is only usable when the given profile and version contains the
4672 function either in core or as an extension.
4673
4674 For more information, see the OpenGL ES 3.X documentation for
4675 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glGetObjectLabel.xhtml}{glGetObjectLabe()}.
4676*/
4677
4678/*!
4679 \fn void QOpenGLExtraFunctions::glGetObjectPtrLabel(const void * ptr, GLsizei bufSize, GLsizei* length, GLchar* label)
4680
4681 Convenience function that calls glGetObjectPtrLabel(\a ptr, \a bufSize, \a length, \a label).
4682
4683 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
4684 with plain OpenGL, the function is only usable when the given profile and version contains the
4685 function either in core or as an extension.
4686
4687 For more information, see the OpenGL ES 3.X documentation for
4688 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glGetObjectPtrLabel.xhtml}{glGetObjectPtrLabe()}.
4689*/
4690
4691/*!
4692 \fn void QOpenGLExtraFunctions::glGetPointerv(GLenum pname, void ** params)
4693
4694 Convenience function that calls glGetPointerv(\a pname, \a params).
4695
4696 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
4697 with plain OpenGL, the function is only usable when the given profile and version contains the
4698 function either in core or as an extension.
4699
4700 For more information, see the OpenGL ES 3.X documentation for
4701 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glGetPointerv.xhtml}{glGetPointerv()}.
4702*/
4703
4704/*!
4705 \fn void QOpenGLExtraFunctions::glGetSamplerParameterIiv(GLuint sampler, GLenum pname, GLint* params)
4706
4707 Convenience function that calls glGetSamplerParameterIiv(\a sampler, \a pname, \a params).
4708
4709 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
4710 with plain OpenGL, the function is only usable when the given profile and version contains the
4711 function either in core or as an extension.
4712
4713 For more information, see the OpenGL ES 3.X documentation for
4714 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glGetSamplerParameter.xhtml}{glGetSamplerParameterIiv()}.
4715*/
4716
4717/*!
4718 \fn void QOpenGLExtraFunctions::glGetSamplerParameterIuiv(GLuint sampler, GLenum pname, GLuint* params)
4719
4720 Convenience function that calls glGetSamplerParameterIuiv(\a sampler, \a pname, \a params).
4721
4722 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
4723 with plain OpenGL, the function is only usable when the given profile and version contains the
4724 function either in core or as an extension.
4725
4726 For more information, see the OpenGL ES 3.X documentation for
4727 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glGetSamplerParameter.xhtml}{glGetSamplerParameterIuiv()}.
4728*/
4729
4730/*!
4731 \fn void QOpenGLExtraFunctions::glGetTexParameterIiv(GLenum target, GLenum pname, GLint* params)
4732
4733 Convenience function that calls glGetTexParameterIiv(\a target, \a pname, \a params).
4734
4735 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
4736 with plain OpenGL, the function is only usable when the given profile and version contains the
4737 function either in core or as an extension.
4738
4739 For more information, see the OpenGL ES 3.X documentation for
4740 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glGetTexParameter.xhtml}{glGetTexParameterIiv()}.
4741*/
4742
4743/*!
4744 \fn void QOpenGLExtraFunctions::glGetTexParameterIuiv(GLenum target, GLenum pname, GLuint* params)
4745
4746 Convenience function that calls glGetTexParameterIuiv(\a target, \a pname, \a params).
4747
4748 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
4749 with plain OpenGL, the function is only usable when the given profile and version contains the
4750 function either in core or as an extension.
4751
4752 For more information, see the OpenGL ES 3.X documentation for
4753 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glGetTexParameter.xhtml}{glGetTexParameterIuiv()}.
4754*/
4755
4756/*!
4757 \fn void QOpenGLExtraFunctions::glGetnUniformfv(GLuint program, GLint location, GLsizei bufSize, GLfloat* params)
4758
4759 Convenience function that calls glGetnUniformfv(\a program, \a location, \a bufSize, \a params).
4760
4761 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
4762 with plain OpenGL, the function is only usable when the given profile and version contains the
4763 function either in core or as an extension.
4764
4765 For more information, see the OpenGL ES 3.X documentation for
4766 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glGetUniform.xhtml}{glGetnUniformfv()}.
4767*/
4768
4769/*!
4770 \fn void QOpenGLExtraFunctions::glGetnUniformiv(GLuint program, GLint location, GLsizei bufSize, GLint* params)
4771
4772 Convenience function that calls glGetnUniformiv(\a program, \a location, \a bufSize, \a params).
4773
4774 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
4775 with plain OpenGL, the function is only usable when the given profile and version contains the
4776 function either in core or as an extension.
4777
4778 For more information, see the OpenGL ES 3.X documentation for
4779 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glGetUniform.xhtml}{glGetnUniformiv()}.
4780*/
4781
4782/*!
4783 \fn void QOpenGLExtraFunctions::glGetnUniformuiv(GLuint program, GLint location, GLsizei bufSize, GLuint* params)
4784
4785 Convenience function that calls glGetnUniformuiv(\a program, \a location, \a bufSize, \a params).
4786
4787 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
4788 with plain OpenGL, the function is only usable when the given profile and version contains the
4789 function either in core or as an extension.
4790
4791 For more information, see the OpenGL ES 3.X documentation for
4792 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glGetUniform.xhtml}{glGetnUniformuiv()}.
4793*/
4794
4795/*!
4796 \fn void QOpenGLExtraFunctions::glIsEnabledi(GLenum target, GLuint index)
4797
4798 Convenience function that calls glIsEnabledi(\a target, \a index).
4799
4800 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
4801 with plain OpenGL, the function is only usable when the given profile and version contains the
4802 function either in core or as an extension.
4803
4804 For more information, see the OpenGL ES 3.X documentation for
4805 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glIsEnabled.xhtml}{glIsEnabledi()}.
4806*/
4807
4808/*!
4809 \fn void QOpenGLExtraFunctions::glMinSampleShading(GLfloat value)
4810
4811 Convenience function that calls glMinSampleShading(\a value).
4812
4813 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
4814 with plain OpenGL, the function is only usable when the given profile and version contains the
4815 function either in core or as an extension.
4816
4817 For more information, see the OpenGL ES 3.X documentation for
4818 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glMinSampleShading.xhtml}{glMinSampleShading()}.
4819*/
4820
4821/*!
4822 \fn void QOpenGLExtraFunctions::glObjectLabel(GLenum identifier, GLuint name, GLsizei length, const GLchar * label)
4823
4824 Convenience function that calls glObjectLabel(\a identifier, \a name, \a length, \a label).
4825
4826 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
4827 with plain OpenGL, the function is only usable when the given profile and version contains the
4828 function either in core or as an extension.
4829
4830 For more information, see the OpenGL ES 3.X documentation for
4831 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glObjectLabel.xhtml}{glObjectLabe()}.
4832*/
4833
4834/*!
4835 \fn void QOpenGLExtraFunctions::glObjectPtrLabel(const void * ptr, GLsizei length, const GLchar * label)
4836
4837 Convenience function that calls glObjectPtrLabel(\a ptr, \a length, \a label).
4838
4839 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
4840 with plain OpenGL, the function is only usable when the given profile and version contains the
4841 function either in core or as an extension.
4842
4843 For more information, see the OpenGL ES 3.X documentation for
4844 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glObjectPtrLabel.xhtml}{glObjectPtrLabe()}.
4845*/
4846
4847/*!
4848 \fn void QOpenGLExtraFunctions::glPatchParameteri(GLenum pname, GLint value)
4849
4850 Convenience function that calls glPatchParameteri(\a pname, \a value).
4851
4852 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
4853 with plain OpenGL, the function is only usable when the given profile and version contains the
4854 function either in core or as an extension.
4855
4856 For more information, see the OpenGL ES 3.X documentation for
4857 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glPatchParameteri.xhtml}{glPatchParameteri()}.
4858*/
4859
4860/*!
4861 \fn void QOpenGLExtraFunctions::glPopDebugGroup(void)
4862
4863 Convenience function that calls glPopDebugGroup().
4864
4865 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
4866 with plain OpenGL, the function is only usable when the given profile and version contains the
4867 function either in core or as an extension.
4868
4869 For more information, see the OpenGL ES 3.X documentation for
4870 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glPopDebugGroup.xhtml}{glPopDebugGroup()}.
4871*/
4872
4873/*!
4874 \fn void QOpenGLExtraFunctions::glPrimitiveBoundingBox(GLfloat minX, GLfloat minY, GLfloat minZ, GLfloat minW, GLfloat maxX, GLfloat maxY, GLfloat maxZ, GLfloat maxW)
4875
4876 Convenience function that calls glPrimitiveBoundingBox(\a minX, \a minY, \a minZ, \a minW, \a maxX, \a maxY, \a maxZ, \a maxW).
4877
4878 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
4879 with plain OpenGL, the function is only usable when the given profile and version contains the
4880 function either in core or as an extension.
4881
4882 For more information, see the OpenGL ES 3.X documentation for
4883 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glPrimitiveBoundingBox.xhtml}{glPrimitiveBoundingBo()}.
4884*/
4885
4886/*!
4887 \fn void QOpenGLExtraFunctions::glPushDebugGroup(GLenum source, GLuint id, GLsizei length, const GLchar * message)
4888
4889 Convenience function that calls glPushDebugGroup(\a source, \a id, \a length, \a message).
4890
4891 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
4892 with plain OpenGL, the function is only usable when the given profile and version contains the
4893 function either in core or as an extension.
4894
4895 For more information, see the OpenGL ES 3.X documentation for
4896 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glPushDebugGroup.xhtml}{glPushDebugGroup()}.
4897*/
4898
4899/*!
4900 \fn void QOpenGLExtraFunctions::glReadnPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void * data)
4901
4902 Convenience function that calls glReadnPixels(\a x, \a y, \a width, \a height, \a format, \a type, \a bufSize, \a data).
4903
4904 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
4905 with plain OpenGL, the function is only usable when the given profile and version contains the
4906 function either in core or as an extension.
4907
4908 For more information, see the OpenGL ES 3.X documentation for
4909 \l{https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glReadPixels.xhtml}{glReadnPixels()}.
4910*/
4911
4912/*!
4913 \fn void QOpenGLExtraFunctions::glSamplerParameterIiv(GLuint sampler, GLenum pname, const GLint * param)
4914
4915 Convenience function that calls glSamplerParameterIiv(\a sampler, \a pname, \a param).
4916
4917 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
4918 with plain OpenGL, the function is only usable when the given profile and version contains the
4919 function either in core or as an extension.
4920
4921 For more information, see the OpenGL ES 3.X documentation for
4922 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glSamplerParameter.xhtml}{glSamplerParameterIiv()}.
4923*/
4924
4925/*!
4926 \fn void QOpenGLExtraFunctions::glSamplerParameterIuiv(GLuint sampler, GLenum pname, const GLuint * param)
4927
4928 Convenience function that calls glSamplerParameterIuiv(\a sampler, \a pname, \a param).
4929
4930 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
4931 with plain OpenGL, the function is only usable when the given profile and version contains the
4932 function either in core or as an extension.
4933
4934 For more information, see the OpenGL ES 3.X documentation for
4935 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glSamplerParameter.xhtml}{glSamplerParameterIuiv()}.
4936*/
4937
4938/*!
4939 \fn void QOpenGLExtraFunctions::glTexBuffer(GLenum target, GLenum internalformat, GLuint buffer)
4940
4941 Convenience function that calls glTexBuffer(\a target, \a internalformat, \a buffer).
4942
4943 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
4944 with plain OpenGL, the function is only usable when the given profile and version contains the
4945 function either in core or as an extension.
4946
4947 For more information, see the OpenGL ES 3.X documentation for
4948 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glTexBuffer.xhtml}{glTexBuffer()}.
4949*/
4950
4951/*!
4952 \fn void QOpenGLExtraFunctions::glTexBufferRange(GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size)
4953
4954 Convenience function that calls glTexBufferRange(\a target, \a internalformat, \a buffer, \a offset, \a size).
4955
4956 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
4957 with plain OpenGL, the function is only usable when the given profile and version contains the
4958 function either in core or as an extension.
4959
4960 For more information, see the OpenGL ES 3.X documentation for
4961 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glTexBufferRange.xhtml}{glTexBufferRange()}.
4962*/
4963
4964/*!
4965 \fn void QOpenGLExtraFunctions::glTexParameterIiv(GLenum target, GLenum pname, const GLint * params)
4966
4967 Convenience function that calls glTexParameterIiv(\a target, \a pname, \a params).
4968
4969 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
4970 with plain OpenGL, the function is only usable when the given profile and version contains the
4971 function either in core or as an extension.
4972
4973 For more information, see the OpenGL ES 3.X documentation for
4974 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glTexParameter.xhtml}{glTexParameterIiv()}.
4975*/
4976
4977/*!
4978 \fn void QOpenGLExtraFunctions::glTexParameterIuiv(GLenum target, GLenum pname, const GLuint * params)
4979
4980 Convenience function that calls glTexParameterIuiv(\a target, \a pname, \a params).
4981
4982 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
4983 with plain OpenGL, the function is only usable when the given profile and version contains the
4984 function either in core or as an extension.
4985
4986 For more information, see the OpenGL ES 3.X documentation for
4987 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glTexParameter.xhtml}{glTexParameterIuiv()}.
4988*/
4989
4990/*!
4991 \fn void QOpenGLExtraFunctions::glTexStorage3DMultisample(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations)
4992
4993 Convenience function that calls glTexStorage3DMultisample(\a target, \a samples, \a internalformat, \a width, \a height, \a depth, \a fixedsamplelocations).
4994
4995 This function is only available in OpenGL ES 3.x, or OpenGL 3.x or 4.x contexts. When running
4996 with plain OpenGL, the function is only usable when the given profile and version contains the
4997 function either in core or as an extension.
4998
4999 For more information, see the OpenGL ES 3.X documentation for
5000 \l{https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glTexStorage3DMultisample.xhtml}{glTexStorage3DMultisample()}.
5001*/
5002
5003/*!
5004 \fn bool QOpenGLExtraFunctions::isInitialized(const QOpenGLExtraFunctionsPrivate *d)
5005 \internal
5006*/
5007
5008
5009/*!
5010 Constructs a default function resolver. The resolver cannot be used until
5011 \l {QOpenGLFunctions::}{initializeOpenGLFunctions()} is called to specify
5012 the context.
5013*/
5014QOpenGLExtraFunctions::QOpenGLExtraFunctions()
5015{
5016}
5017
5018/*!
5019 Constructs a function resolver for context. If \a context is \nullptr,
5020 then the resolver will be created for the current QOpenGLContext.
5021
5022 The context or another context in the group must be current.
5023
5024 An object constructed in this way can only be used with context and other
5025 contexts that share with it. Use \l {QOpenGLFunctions::}
5026 {initializeOpenGLFunctions()} to change the object's context association.
5027*/
5028QOpenGLExtraFunctions::QOpenGLExtraFunctions(QOpenGLContext *context)
5029 : QOpenGLFunctions(context)
5030{
5031}
5032
5033QOpenGLExtraFunctionsPrivate::QOpenGLExtraFunctionsPrivate(QOpenGLContext *ctx)
5034 : QOpenGLFunctionsPrivate(ctx)
5035{
5036 init(context: ctx);
5037}
5038
5039QT_OPENGL_IMPLEMENT(QOpenGLExtraFunctionsPrivate, QT_OPENGL_EXTRA_FUNCTIONS)
5040
5041QOpenGLExtensionsPrivate::QOpenGLExtensionsPrivate(QOpenGLContext *ctx)
5042 : QOpenGLExtraFunctionsPrivate(ctx),
5043 flushVendorChecked(false)
5044{
5045 QOpenGLContext *context = QOpenGLContext::currentContext();
5046
5047 MapBuffer = RESOLVE(MapBuffer);
5048 GetBufferSubData = RESOLVE(GetBufferSubData);
5049 DiscardFramebuffer = RESOLVE(DiscardFramebuffer);
5050 }
5051
5052void QOpenGLExtensions::flushShared()
5053{
5054 Q_D(QOpenGLExtensions);
5055
5056 if (!d->flushVendorChecked) {
5057 d->flushVendorChecked = true;
5058 // It is not quite clear if glFlush() is sufficient to synchronize access to
5059 // resources between sharing contexts in the same thread. On most platforms this
5060 // is enough (e.g. iOS explicitly documents it), while certain drivers only work
5061 // properly when doing glFinish().
5062 d->flushIsSufficientToSyncContexts = false; // default to false, not guaranteed by the spec
5063 const char *vendor = (const char *) glGetString(GL_VENDOR);
5064 if (vendor) {
5065 static const char *const flushEnough[] = { "Apple", "ATI", "Intel", "NVIDIA" };
5066 for (size_t i = 0; i < sizeof(flushEnough) / sizeof(const char *); ++i) {
5067 if (strstr(haystack: vendor, needle: flushEnough[i])) {
5068 d->flushIsSufficientToSyncContexts = true;
5069 break;
5070 }
5071 }
5072 }
5073 }
5074
5075 if (d->flushIsSufficientToSyncContexts)
5076 glFlush();
5077 else
5078 glFinish();
5079}
5080
5081QT_END_NAMESPACE
5082

source code of qtbase/src/gui/opengl/qopenglfunctions.cpp