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

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