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