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

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