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