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

Provided by KDAB

Privacy Policy
Start learning QML with our Intro Training
Find out more

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