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