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