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