1/****************************************************************************
2**
3** Copyright (C) 2016 The Qt Company Ltd.
4** Contact: https://www.qt.io/licensing/
5**
6** This file is part of the QtOpenGL module of the Qt Toolkit.
7**
8** $QT_BEGIN_LICENSE:LGPL$
9** Commercial License Usage
10** Licensees holding valid commercial Qt licenses may use this file in
11** accordance with the commercial license agreement provided with the
12** Software or, alternatively, in accordance with the terms contained in
13** a written agreement between you and The Qt Company. For licensing terms
14** and conditions see https://www.qt.io/terms-conditions. For further
15** information use the contact form at https://www.qt.io/contact-us.
16**
17** GNU Lesser General Public License Usage
18** Alternatively, this file may be used under the terms of the GNU Lesser
19** General Public License version 3 as published by the Free Software
20** Foundation and appearing in the file LICENSE.LGPL3 included in the
21** packaging of this file. Please review the following information to
22** ensure the GNU Lesser General Public License version 3 requirements
23** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
24**
25** GNU General Public License Usage
26** Alternatively, this file may be used under the terms of the GNU
27** General Public License version 2.0 or (at your option) the GNU General
28** Public license version 3 or any later version approved by the KDE Free
29** Qt Foundation. The licenses are as published by the Free Software
30** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
31** included in the packaging of this file. Please review the following
32** information to ensure the GNU General Public License requirements will
33** be met: https://www.gnu.org/licenses/gpl-2.0.html and
34** https://www.gnu.org/licenses/gpl-3.0.html.
35**
36** $QT_END_LICENSE$
37**
38****************************************************************************/
39
40#include "qglfunctions.h"
41#include "qgl_p.h"
42#include "QtGui/private/qopenglcontext_p.h"
43#include <private/qopengl_p.h>
44
45QT_BEGIN_NAMESPACE
46
47/*!
48 \class QGLFunctions
49 \inmodule QtOpenGL
50 \brief The QGLFunctions class provides cross-platform access to the OpenGL ES 2.0 API.
51 \since 4.8
52 \obsolete
53 \ingroup painting-3D
54
55 OpenGL ES 2.0 defines a subset of the OpenGL specification that is
56 common across many desktop and embedded OpenGL implementations.
57 However, it can be difficult to use the functions from that subset
58 because they need to be resolved manually on desktop systems.
59
60 QGLFunctions provides a guaranteed API that is available on all
61 OpenGL systems and takes care of function resolution on systems
62 that need it. The recommended way to use QGLFunctions is by
63 direct inheritance:
64
65 \snippet code/src_opengl_qglfunctions.cpp 0
66
67 The \c{paintGL()} function can then use any of the OpenGL ES 2.0
68 functions without explicit resolution, such as glActiveTexture()
69 in the following example:
70
71 \snippet code/src_opengl_qglfunctions.cpp 1
72
73 QGLFunctions can also be used directly for ad-hoc invocation
74 of OpenGL ES 2.0 functions on all platforms:
75
76 \snippet code/src_opengl_qglfunctions.cpp 2
77
78 QGLFunctions provides wrappers for all OpenGL ES 2.0 functions,
79 except those like \c{glDrawArrays()}, \c{glViewport()}, and
80 \c{glBindTexture()} that don't have portability issues.
81
82 Including the header for QGLFunctions will also define all of
83 the OpenGL ES 2.0 macro constants that are not already defined by
84 the system's OpenGL headers, such as \c{GL_TEXTURE1} above.
85
86 The hasOpenGLFeature() and openGLFeatures() functions can be used
87 to determine if the OpenGL implementation has a major OpenGL ES 2.0
88 feature. For example, the following checks if non power of two
89 textures are available:
90
91 \snippet code/src_opengl_qglfunctions.cpp 3
92
93 \note This class has been deprecated in favor of QOpenGLFunctions.
94*/
95
96/*!
97 \enum QGLFunctions::OpenGLFeature
98 This enum defines OpenGL ES 2.0 features that may be optional
99 on other platforms.
100
101 \value Multitexture glActiveTexture() function is available.
102 \value Shaders Shader functions are available.
103 \value Buffers Vertex and index buffer functions are available.
104 \value Framebuffers Framebuffer object functions are available.
105 \value BlendColor glBlendColor() is available.
106 \value BlendEquation glBlendEquation() is available.
107 \value BlendEquationSeparate glBlendEquationSeparate() is available.
108 \value BlendFuncSeparate glBlendFuncSeparate() is available.
109 \value BlendSubtract Blend subtract mode is available.
110 \value CompressedTextures Compressed texture functions are available.
111 \value Multisample glSampleCoverage() function is available.
112 \value StencilSeparate Separate stencil functions are available.
113 \value NPOTTextures Non power of two textures are available.
114*/
115
116// Hidden private fields for additional extension data.
117struct QGLFunctionsPrivateEx : public QGLFunctionsPrivate, public QOpenGLSharedResource
118{
119 QGLFunctionsPrivateEx(QOpenGLContext *context)
120 : QGLFunctionsPrivate(QGLContext::fromOpenGLContext(context))
121 , QOpenGLSharedResource(context->shareGroup())
122 , m_features(-1)
123 {
124 funcs = new QOpenGLFunctions(context);
125 funcs->initializeOpenGLFunctions();
126 }
127
128 ~QGLFunctionsPrivateEx()
129 {
130 delete funcs;
131 }
132
133 void invalidateResource() override
134 {
135 m_features = -1;
136 }
137
138 void freeResource(QOpenGLContext *) override
139 {
140 // no gl resources to free
141 }
142
143 int m_features;
144};
145
146Q_GLOBAL_STATIC(QOpenGLMultiGroupSharedResource, qt_gl_functions_resource)
147
148static QGLFunctionsPrivateEx *qt_gl_functions(const QGLContext *context = 0)
149{
150 if (!context)
151 context = QGLContext::currentContext();
152 Q_ASSERT(context);
153 QGLFunctionsPrivateEx *funcs =
154 reinterpret_cast<QGLFunctionsPrivateEx *>
155 (qt_gl_functions_resource()->value<QGLFunctionsPrivateEx>(context->contextHandle()));
156 return funcs;
157}
158
159/*!
160 Constructs a default function resolver. The resolver cannot
161 be used until initializeGLFunctions() is called to specify
162 the context.
163
164 \sa initializeGLFunctions()
165*/
166QGLFunctions::QGLFunctions()
167 : d_ptr(0)
168{
169}
170
171/*!
172 Constructs a function resolver for \a context. If \a context
173 is \nullptr, then the resolver will be created for the current
174 QGLContext.
175
176 An object constructed in this way can only be used with \a context
177 and other contexts that share with it. Use initializeGLFunctions()
178 to change the object's context association.
179
180 \sa initializeGLFunctions()
181*/
182QGLFunctions::QGLFunctions(const QGLContext *context)
183 : d_ptr(qt_gl_functions(context))
184{
185}
186
187/*!
188 \fn QGLFunctions::~QGLFunctions()
189
190 Destroys this function resolver.
191*/
192
193static int qt_gl_resolve_features()
194{
195 QOpenGLContext *ctx = QOpenGLContext::currentContext();
196 if (ctx->isOpenGLES()) {
197 // OpenGL ES 2
198 int features = QGLFunctions::Multitexture |
199 QGLFunctions::Shaders |
200 QGLFunctions::Buffers |
201 QGLFunctions::Framebuffers |
202 QGLFunctions::BlendColor |
203 QGLFunctions::BlendEquation |
204 QGLFunctions::BlendEquationSeparate |
205 QGLFunctions::BlendFuncSeparate |
206 QGLFunctions::BlendSubtract |
207 QGLFunctions::CompressedTextures |
208 QGLFunctions::Multisample |
209 QGLFunctions::StencilSeparate;
210 QOpenGLExtensionMatcher extensions;
211 if (extensions.match("GL_OES_texture_npot"))
212 features |= QGLFunctions::NPOTTextures;
213 if (extensions.match("GL_IMG_texture_npot"))
214 features |= QGLFunctions::NPOTTextures;
215 return features;
216 } else {
217 // OpenGL
218 int features = 0;
219 QGLFormat::OpenGLVersionFlags versions = QGLFormat::openGLVersionFlags();
220 QOpenGLExtensionMatcher extensions;
221
222 // Recognize features by extension name.
223 if (extensions.match("GL_ARB_multitexture"))
224 features |= QGLFunctions::Multitexture;
225 if (extensions.match("GL_ARB_shader_objects"))
226 features |= QGLFunctions::Shaders;
227 if (extensions.match("GL_EXT_framebuffer_object") ||
228 extensions.match("GL_ARB_framebuffer_object"))
229 features |= QGLFunctions::Framebuffers;
230 if (extensions.match("GL_EXT_blend_color"))
231 features |= QGLFunctions::BlendColor;
232 if (extensions.match("GL_EXT_blend_equation_separate"))
233 features |= QGLFunctions::BlendEquationSeparate;
234 if (extensions.match("GL_EXT_blend_func_separate"))
235 features |= QGLFunctions::BlendFuncSeparate;
236 if (extensions.match("GL_EXT_blend_subtract"))
237 features |= QGLFunctions::BlendSubtract;
238 if (extensions.match("GL_ARB_texture_compression"))
239 features |= QGLFunctions::CompressedTextures;
240 if (extensions.match("GL_ARB_multisample"))
241 features |= QGLFunctions::Multisample;
242 if (extensions.match("GL_ARB_texture_non_power_of_two"))
243 features |= QGLFunctions::NPOTTextures;
244
245 // Recognize features by minimum OpenGL version.
246 if (versions & QGLFormat::OpenGL_Version_1_2) {
247 features |= QGLFunctions::BlendColor |
248 QGLFunctions::BlendEquation;
249 }
250 if (versions & QGLFormat::OpenGL_Version_1_3) {
251 features |= QGLFunctions::Multitexture |
252 QGLFunctions::CompressedTextures |
253 QGLFunctions::Multisample;
254 }
255 if (versions & QGLFormat::OpenGL_Version_1_4)
256 features |= QGLFunctions::BlendFuncSeparate;
257 if (versions & QGLFormat::OpenGL_Version_1_5)
258 features |= QGLFunctions::Buffers;
259 if (versions & QGLFormat::OpenGL_Version_2_0) {
260 features |= QGLFunctions::Shaders |
261 QGLFunctions::StencilSeparate |
262 QGLFunctions::BlendEquationSeparate |
263 QGLFunctions::NPOTTextures;
264 }
265 return features;
266 }
267}
268
269/*!
270 Returns the set of features that are present on this system's
271 OpenGL implementation.
272
273 It is assumed that the QGLContext associated with this function
274 resolver is current.
275
276 \sa hasOpenGLFeature()
277*/
278QGLFunctions::OpenGLFeatures QGLFunctions::openGLFeatures() const
279{
280 QGLFunctionsPrivateEx *d = static_cast<QGLFunctionsPrivateEx *>(d_ptr);
281 if (!d)
282 return 0;
283 if (d->m_features == -1)
284 d->m_features = qt_gl_resolve_features();
285 return QGLFunctions::OpenGLFeatures(d->m_features);
286}
287
288/*!
289 Returns \c true if \a feature is present on this system's OpenGL
290 implementation; false otherwise.
291
292 It is assumed that the QGLContext associated with this function
293 resolver is current.
294
295 \sa openGLFeatures()
296*/
297bool QGLFunctions::hasOpenGLFeature(QGLFunctions::OpenGLFeature feature) const
298{
299 QGLFunctionsPrivateEx *d = static_cast<QGLFunctionsPrivateEx *>(d_ptr);
300 if (!d)
301 return false;
302 if (d->m_features == -1)
303 d->m_features = qt_gl_resolve_features();
304 return (d->m_features & int(feature)) != 0;
305}
306
307/*!
308 Initializes GL function resolution for \a context. If \a context
309 is \nullptr, then the current QGLContext will be used.
310
311 After calling this function, the QGLFunctions object can only be
312 used with \a context and other contexts that share with it.
313 Call initializeGLFunctions() again to change the object's context
314 association.
315*/
316void QGLFunctions::initializeGLFunctions(const QGLContext *context)
317{
318 d_ptr = qt_gl_functions(context);
319}
320
321/*!
322 \fn void QGLFunctions::glActiveTexture(GLenum texture)
323
324 Convenience function that calls glActiveTexture(\a texture).
325
326 For more information, see the OpenGL ES 2.0 documentation for
327 \l{http://www.khronos.org/opengles/sdk/docs/man/glActiveTexture.xml}{glActiveTexture()}.
328*/
329
330/*!
331 \fn void QGLFunctions::glAttachShader(GLuint program, GLuint shader)
332
333 Convenience function that calls glAttachShader(\a program, \a shader).
334
335 For more information, see the OpenGL ES 2.0 documentation for
336 \l{http://www.khronos.org/opengles/sdk/docs/man/glAttachShader.xml}{glAttachShader()}.
337
338 This convenience function will do nothing on OpenGL ES 1.x systems.
339*/
340
341/*!
342 \fn void QGLFunctions::glBindAttribLocation(GLuint program, GLuint index, const char* name)
343
344 Convenience function that calls glBindAttribLocation(\a program, \a index, \a name).
345
346 For more information, see the OpenGL ES 2.0 documentation for
347 \l{http://www.khronos.org/opengles/sdk/docs/man/glBindAttribLocation.xml}{glBindAttribLocation()}.
348
349 This convenience function will do nothing on OpenGL ES 1.x systems.
350*/
351
352/*!
353 \fn void QGLFunctions::glBindBuffer(GLenum target, GLuint buffer)
354
355 Convenience function that calls glBindBuffer(\a target, \a buffer).
356
357 For more information, see the OpenGL ES 2.0 documentation for
358 \l{http://www.khronos.org/opengles/sdk/docs/man/glBindBuffer.xml}{glBindBuffer()}.
359*/
360
361/*!
362 \fn void QGLFunctions::glBindFramebuffer(GLenum target, GLuint framebuffer)
363
364 Convenience function that calls glBindFramebuffer(\a target, \a framebuffer).
365
366 Note that Qt will translate a \a framebuffer argument of 0 to the currently
367 bound QOpenGLContext's defaultFramebufferObject().
368
369 For more information, see the OpenGL ES 2.0 documentation for
370 \l{http://www.khronos.org/opengles/sdk/docs/man/glBindFramebuffer.xml}{glBindFramebuffer()}.
371*/
372
373/*!
374 \fn void QGLFunctions::glBindRenderbuffer(GLenum target, GLuint renderbuffer)
375
376 Convenience function that calls glBindRenderbuffer(\a target, \a renderbuffer).
377
378 For more information, see the OpenGL ES 2.0 documentation for
379 \l{http://www.khronos.org/opengles/sdk/docs/man/glBindRenderbuffer.xml}{glBindRenderbuffer()}.
380*/
381
382/*!
383 \fn void QGLFunctions::glBlendColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha)
384
385 Convenience function that calls glBlendColor(\a red, \a green, \a blue, \a alpha).
386
387 For more information, see the OpenGL ES 2.0 documentation for
388 \l{http://www.khronos.org/opengles/sdk/docs/man/glBlendColor.xml}{glBlendColor()}.
389*/
390
391/*!
392 \fn void QGLFunctions::glBlendEquation(GLenum mode)
393
394 Convenience function that calls glBlendEquation(\a mode).
395
396 For more information, see the OpenGL ES 2.0 documentation for
397 \l{http://www.khronos.org/opengles/sdk/docs/man/glBlendEquation.xml}{glBlendEquation()}.
398*/
399
400/*!
401 \fn void QGLFunctions::glBlendEquationSeparate(GLenum modeRGB, GLenum modeAlpha)
402
403 Convenience function that calls glBlendEquationSeparate(\a modeRGB, \a modeAlpha).
404
405 For more information, see the OpenGL ES 2.0 documentation for
406 \l{http://www.khronos.org/opengles/sdk/docs/man/glBlendEquationSeparate.xml}{glBlendEquationSeparate()}.
407*/
408
409/*!
410 \fn void QGLFunctions::glBlendFuncSeparate(GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha)
411
412 Convenience function that calls glBlendFuncSeparate(\a srcRGB, \a dstRGB, \a srcAlpha, \a dstAlpha).
413
414 For more information, see the OpenGL ES 2.0 documentation for
415 \l{http://www.khronos.org/opengles/sdk/docs/man/glBlendFuncSeparate.xml}{glBlendFuncSeparate()}.
416*/
417
418/*!
419 \fn void QGLFunctions::glBufferData(GLenum target, qopengl_GLsizeiptr size, const void* data, GLenum usage)
420
421 Convenience function that calls glBufferData(\a target, \a size, \a data, \a usage).
422
423 For more information, see the OpenGL ES 2.0 documentation for
424 \l{http://www.khronos.org/opengles/sdk/docs/man/glBufferData.xml}{glBufferData()}.
425*/
426
427/*!
428 \fn void QGLFunctions::glBufferSubData(GLenum target, qopengl_GLintptr offset, qopengl_GLsizeiptr size, const void* data)
429
430 Convenience function that calls glBufferSubData(\a target, \a offset, \a size, \a data).
431
432 For more information, see the OpenGL ES 2.0 documentation for
433 \l{http://www.khronos.org/opengles/sdk/docs/man/glBufferSubData.xml}{glBufferSubData()}.
434*/
435
436/*!
437 \fn GLenum QGLFunctions::glCheckFramebufferStatus(GLenum target)
438
439 Convenience function that calls glCheckFramebufferStatus(\a target).
440
441 For more information, see the OpenGL ES 2.0 documentation for
442 \l{http://www.khronos.org/opengles/sdk/docs/man/glCheckFramebufferStatus.xml}{glCheckFramebufferStatus()}.
443*/
444
445/*!
446 \fn void QGLFunctions::glClearDepthf(GLclampf depth)
447
448 Convenience function that calls glClearDepth(\a depth) on
449 desktop OpenGL systems and glClearDepthf(\a depth) on
450 embedded OpenGL ES systems.
451
452 For more information, see the OpenGL ES 2.0 documentation for
453 \l{http://www.khronos.org/opengles/sdk/docs/man/glClearDepthf.xml}{glClearDepthf()}.
454*/
455
456/*!
457 \fn void QGLFunctions::glCompileShader(GLuint shader)
458
459 Convenience function that calls glCompileShader(\a shader).
460
461 For more information, see the OpenGL ES 2.0 documentation for
462 \l{http://www.khronos.org/opengles/sdk/docs/man/glCompileShader.xml}{glCompileShader()}.
463
464 This convenience function will do nothing on OpenGL ES 1.x systems.
465*/
466
467/*!
468 \fn void QGLFunctions::glCompressedTexImage2D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void* data)
469
470 Convenience function that calls glCompressedTexImage2D(\a target, \a level, \a internalformat, \a width, \a height, \a border, \a imageSize, \a data).
471
472 For more information, see the OpenGL ES 2.0 documentation for
473 \l{http://www.khronos.org/opengles/sdk/docs/man/glCompressedTexImage2D.xml}{glCompressedTexImage2D()}.
474*/
475
476/*!
477 \fn void QGLFunctions::glCompressedTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void* data)
478
479 Convenience function that calls glCompressedTexSubImage2D(\a target, \a level, \a xoffset, \a yoffset, \a width, \a height, \a format, \a imageSize, \a data).
480
481 For more information, see the OpenGL ES 2.0 documentation for
482 \l{http://www.khronos.org/opengles/sdk/docs/man/glCompressedTexSubImage2D.xml}{glCompressedTexSubImage2D()}.
483*/
484
485/*!
486 \fn GLuint QGLFunctions::glCreateProgram()
487
488 Convenience function that calls glCreateProgram().
489
490 For more information, see the OpenGL ES 2.0 documentation for
491 \l{http://www.khronos.org/opengles/sdk/docs/man/glCreateProgram.xml}{glCreateProgram()}.
492
493 This convenience function will do nothing on OpenGL ES 1.x systems.
494*/
495
496/*!
497 \fn GLuint QGLFunctions::glCreateShader(GLenum type)
498
499 Convenience function that calls glCreateShader(\a type).
500
501 For more information, see the OpenGL ES 2.0 documentation for
502 \l{http://www.khronos.org/opengles/sdk/docs/man/glCreateShader.xml}{glCreateShader()}.
503
504 This convenience function will do nothing on OpenGL ES 1.x systems.
505*/
506
507/*!
508 \fn void QGLFunctions::glDeleteBuffers(GLsizei n, const GLuint* buffers)
509
510 Convenience function that calls glDeleteBuffers(\a n, \a buffers).
511
512 For more information, see the OpenGL ES 2.0 documentation for
513 \l{http://www.khronos.org/opengles/sdk/docs/man/glDeleteBuffers.xml}{glDeleteBuffers()}.
514*/
515
516/*!
517 \fn void QGLFunctions::glDeleteFramebuffers(GLsizei n, const GLuint* framebuffers)
518
519 Convenience function that calls glDeleteFramebuffers(\a n, \a framebuffers).
520
521 For more information, see the OpenGL ES 2.0 documentation for
522 \l{http://www.khronos.org/opengles/sdk/docs/man/glDeleteFramebuffers.xml}{glDeleteFramebuffers()}.
523*/
524
525/*!
526 \fn void QGLFunctions::glDeleteProgram(GLuint program)
527
528 Convenience function that calls glDeleteProgram(\a program).
529
530 For more information, see the OpenGL ES 2.0 documentation for
531 \l{http://www.khronos.org/opengles/sdk/docs/man/glDeleteProgram.xml}{glDeleteProgram()}.
532
533 This convenience function will do nothing on OpenGL ES 1.x systems.
534*/
535
536/*!
537 \fn void QGLFunctions::glDeleteRenderbuffers(GLsizei n, const GLuint* renderbuffers)
538
539 Convenience function that calls glDeleteRenderbuffers(\a n, \a renderbuffers).
540
541 For more information, see the OpenGL ES 2.0 documentation for
542 \l{http://www.khronos.org/opengles/sdk/docs/man/glDeleteRenderbuffers.xml}{glDeleteRenderbuffers()}.
543*/
544
545/*!
546 \fn void QGLFunctions::glDeleteShader(GLuint shader)
547
548 Convenience function that calls glDeleteShader(\a shader).
549
550 For more information, see the OpenGL ES 2.0 documentation for
551 \l{http://www.khronos.org/opengles/sdk/docs/man/glDeleteShader.xml}{glDeleteShader()}.
552
553 This convenience function will do nothing on OpenGL ES 1.x systems.
554*/
555
556/*!
557 \fn void QGLFunctions::glDepthRangef(GLclampf zNear, GLclampf zFar)
558
559 Convenience function that calls glDepthRange(\a zNear, \a zFar) on
560 desktop OpenGL systems and glDepthRangef(\a zNear, \a zFar) on
561 embedded OpenGL ES systems.
562
563 For more information, see the OpenGL ES 2.0 documentation for
564 \l{http://www.khronos.org/opengles/sdk/docs/man/glDepthRangef.xml}{glDepthRangef()}.
565*/
566
567/*!
568 \fn void QGLFunctions::glDetachShader(GLuint program, GLuint shader)
569
570 Convenience function that calls glDetachShader(\a program, \a shader).
571
572 For more information, see the OpenGL ES 2.0 documentation for
573 \l{http://www.khronos.org/opengles/sdk/docs/man/glDetachShader.xml}{glDetachShader()}.
574
575 This convenience function will do nothing on OpenGL ES 1.x systems.
576*/
577
578/*!
579 \fn void QGLFunctions::glDisableVertexAttribArray(GLuint index)
580
581 Convenience function that calls glDisableVertexAttribArray(\a index).
582
583 For more information, see the OpenGL ES 2.0 documentation for
584 \l{http://www.khronos.org/opengles/sdk/docs/man/glDisableVertexAttribArray.xml}{glDisableVertexAttribArray()}.
585
586 This convenience function will do nothing on OpenGL ES 1.x systems.
587*/
588
589/*!
590 \fn void QGLFunctions::glEnableVertexAttribArray(GLuint index)
591
592 Convenience function that calls glEnableVertexAttribArray(\a index).
593
594 For more information, see the OpenGL ES 2.0 documentation for
595 \l{http://www.khronos.org/opengles/sdk/docs/man/glEnableVertexAttribArray.xml}{glEnableVertexAttribArray()}.
596
597 This convenience function will do nothing on OpenGL ES 1.x systems.
598*/
599
600/*!
601 \fn void QGLFunctions::glFramebufferRenderbuffer(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer)
602
603 Convenience function that calls glFramebufferRenderbuffer(\a target, \a attachment, \a renderbuffertarget, \a renderbuffer).
604
605 For more information, see the OpenGL ES 2.0 documentation for
606 \l{http://www.khronos.org/opengles/sdk/docs/man/glFramebufferRenderbuffer.xml}{glFramebufferRenderbuffer()}.
607*/
608
609/*!
610 \fn void QGLFunctions::glFramebufferTexture2D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level)
611
612 Convenience function that calls glFramebufferTexture2D(\a target, \a attachment, \a textarget, \a texture, \a level).
613
614 For more information, see the OpenGL ES 2.0 documentation for
615 \l{http://www.khronos.org/opengles/sdk/docs/man/glFramebufferTexture2D.xml}{glFramebufferTexture2D()}.
616*/
617
618/*!
619 \fn void QGLFunctions::glGenBuffers(GLsizei n, GLuint* buffers)
620
621 Convenience function that calls glGenBuffers(\a n, \a buffers).
622
623 For more information, see the OpenGL ES 2.0 documentation for
624 \l{http://www.khronos.org/opengles/sdk/docs/man/glGenBuffers.xml}{glGenBuffers()}.
625*/
626
627/*!
628 \fn void QGLFunctions::glGenerateMipmap(GLenum target)
629
630 Convenience function that calls glGenerateMipmap(\a target).
631
632 For more information, see the OpenGL ES 2.0 documentation for
633 \l{http://www.khronos.org/opengles/sdk/docs/man/glGenerateMipmap.xml}{glGenerateMipmap()}.
634*/
635
636/*!
637 \fn void QGLFunctions::glGenFramebuffers(GLsizei n, GLuint* framebuffers)
638
639 Convenience function that calls glGenFramebuffers(\a n, \a framebuffers).
640
641 For more information, see the OpenGL ES 2.0 documentation for
642 \l{http://www.khronos.org/opengles/sdk/docs/man/glGenFramebuffers.xml}{glGenFramebuffers()}.
643*/
644
645/*!
646 \fn void QGLFunctions::glGenRenderbuffers(GLsizei n, GLuint* renderbuffers)
647
648 Convenience function that calls glGenRenderbuffers(\a n, \a renderbuffers).
649
650 For more information, see the OpenGL ES 2.0 documentation for
651 \l{http://www.khronos.org/opengles/sdk/docs/man/glGenRenderbuffers.xml}{glGenRenderbuffers()}.
652*/
653
654/*!
655 \fn void QGLFunctions::glGetActiveAttrib(GLuint program, GLuint index, GLsizei bufsize, GLsizei* length, GLint* size, GLenum* type, char* name)
656
657 Convenience function that calls glGetActiveAttrib(\a program, \a index, \a bufsize, \a length, \a size, \a type, \a name).
658
659 For more information, see the OpenGL ES 2.0 documentation for
660 \l{http://www.khronos.org/opengles/sdk/docs/man/glGetActiveAttrib.xml}{glGetActiveAttrib()}.
661
662 This convenience function will do nothing on OpenGL ES 1.x systems.
663*/
664
665/*!
666 \fn void QGLFunctions::glGetActiveUniform(GLuint program, GLuint index, GLsizei bufsize, GLsizei* length, GLint* size, GLenum* type, char* name)
667
668 Convenience function that calls glGetActiveUniform(\a program, \a index, \a bufsize, \a length, \a size, \a type, \a name).
669
670 For more information, see the OpenGL ES 2.0 documentation for
671 \l{http://www.khronos.org/opengles/sdk/docs/man/glGetActiveUniform.xml}{glGetActiveUniform()}.
672
673 This convenience function will do nothing on OpenGL ES 1.x systems.
674*/
675
676/*!
677 \fn void QGLFunctions::glGetAttachedShaders(GLuint program, GLsizei maxcount, GLsizei* count, GLuint* shaders)
678
679 Convenience function that calls glGetAttachedShaders(\a program, \a maxcount, \a count, \a shaders).
680
681 For more information, see the OpenGL ES 2.0 documentation for
682 \l{http://www.khronos.org/opengles/sdk/docs/man/glGetAttachedShaders.xml}{glGetAttachedShaders()}.
683
684 This convenience function will do nothing on OpenGL ES 1.x systems.
685*/
686
687/*!
688 \fn int QGLFunctions::glGetAttribLocation(GLuint program, const char* name)
689
690 Convenience function that calls glGetAttribLocation(\a program, \a name).
691
692 For more information, see the OpenGL ES 2.0 documentation for
693 \l{http://www.khronos.org/opengles/sdk/docs/man/glGetAttribLocation.xml}{glGetAttribLocation()}.
694
695 This convenience function will do nothing on OpenGL ES 1.x systems.
696*/
697
698/*!
699 \fn void QGLFunctions::glGetBufferParameteriv(GLenum target, GLenum pname, GLint* params)
700
701 Convenience function that calls glGetBufferParameteriv(\a target, \a pname, \a params).
702
703 For more information, see the OpenGL ES 2.0 documentation for
704 \l{http://www.khronos.org/opengles/sdk/docs/man/glGetBufferParameteriv.xml}{glGetBufferParameteriv()}.
705*/
706
707/*!
708 \fn void QGLFunctions::glGetFramebufferAttachmentParameteriv(GLenum target, GLenum attachment, GLenum pname, GLint* params)
709
710 Convenience function that calls glGetFramebufferAttachmentParameteriv(\a target, \a attachment, \a pname, \a params).
711
712 For more information, see the OpenGL ES 2.0 documentation for
713 \l{http://www.khronos.org/opengles/sdk/docs/man/glGetFramebufferAttachmentParameteriv.xml}{glGetFramebufferAttachmentParameteriv()}.
714*/
715
716/*!
717 \fn void QGLFunctions::glGetProgramiv(GLuint program, GLenum pname, GLint* params)
718
719 Convenience function that calls glGetProgramiv(\a program, \a pname, \a params).
720
721 For more information, see the OpenGL ES 2.0 documentation for
722 \l{http://www.khronos.org/opengles/sdk/docs/man/glGetProgramiv.xml}{glGetProgramiv()}.
723
724 This convenience function will do nothing on OpenGL ES 1.x systems.
725*/
726
727/*!
728 \fn void QGLFunctions::glGetProgramInfoLog(GLuint program, GLsizei bufsize, GLsizei* length, char* infolog)
729
730 Convenience function that calls glGetProgramInfoLog(\a program, \a bufsize, \a length, \a infolog).
731
732 For more information, see the OpenGL ES 2.0 documentation for
733 \l{http://www.khronos.org/opengles/sdk/docs/man/glGetProgramInfoLog.xml}{glGetProgramInfoLog()}.
734
735 This convenience function will do nothing on OpenGL ES 1.x systems.
736*/
737
738/*!
739 \fn void QGLFunctions::glGetRenderbufferParameteriv(GLenum target, GLenum pname, GLint* params)
740
741 Convenience function that calls glGetRenderbufferParameteriv(\a target, \a pname, \a params).
742
743 For more information, see the OpenGL ES 2.0 documentation for
744 \l{http://www.khronos.org/opengles/sdk/docs/man/glGetRenderbufferParameteriv.xml}{glGetRenderbufferParameteriv()}.
745*/
746
747/*!
748 \fn void QGLFunctions::glGetShaderiv(GLuint shader, GLenum pname, GLint* params)
749
750 Convenience function that calls glGetShaderiv(\a shader, \a pname, \a params).
751
752 For more information, see the OpenGL ES 2.0 documentation for
753 \l{http://www.khronos.org/opengles/sdk/docs/man/glGetShaderiv.xml}{glGetShaderiv()}.
754
755 This convenience function will do nothing on OpenGL ES 1.x systems.
756*/
757
758/*!
759 \fn void QGLFunctions::glGetShaderInfoLog(GLuint shader, GLsizei bufsize, GLsizei* length, char* infolog)
760
761 Convenience function that calls glGetShaderInfoLog(\a shader, \a bufsize, \a length, \a infolog).
762
763 For more information, see the OpenGL ES 2.0 documentation for
764 \l{http://www.khronos.org/opengles/sdk/docs/man/glGetShaderInfoLog.xml}{glGetShaderInfoLog()}.
765
766 This convenience function will do nothing on OpenGL ES 1.x systems.
767*/
768
769/*!
770 \fn void QGLFunctions::glGetShaderPrecisionFormat(GLenum shadertype, GLenum precisiontype, GLint* range, GLint* precision)
771
772 Convenience function that calls glGetShaderPrecisionFormat(\a shadertype, \a precisiontype, \a range, \a precision).
773
774 For more information, see the OpenGL ES 2.0 documentation for
775 \l{http://www.khronos.org/opengles/sdk/docs/man/glGetShaderPrecisionFormat.xml}{glGetShaderPrecisionFormat()}.
776
777 This convenience function will do nothing on OpenGL ES 1.x systems.
778*/
779
780/*!
781 \fn void QGLFunctions::glGetShaderSource(GLuint shader, GLsizei bufsize, GLsizei* length, char* source)
782
783 Convenience function that calls glGetShaderSource(\a shader, \a bufsize, \a length, \a source).
784
785 For more information, see the OpenGL ES 2.0 documentation for
786 \l{http://www.khronos.org/opengles/sdk/docs/man/glGetShaderSource.xml}{glGetShaderSource()}.
787
788 This convenience function will do nothing on OpenGL ES 1.x systems.
789*/
790
791/*!
792 \fn void QGLFunctions::glGetUniformfv(GLuint program, GLint location, GLfloat* params)
793
794 Convenience function that calls glGetUniformfv(\a program, \a location, \a params).
795
796 For more information, see the OpenGL ES 2.0 documentation for
797 \l{http://www.khronos.org/opengles/sdk/docs/man/glGetUniformfv.xml}{glGetUniformfv()}.
798
799 This convenience function will do nothing on OpenGL ES 1.x systems.
800*/
801
802/*!
803 \fn void QGLFunctions::glGetUniformiv(GLuint program, GLint location, GLint* params)
804
805 Convenience function that calls glGetUniformiv(\a program, \a location, \a params).
806
807 For more information, see the OpenGL ES 2.0 documentation for
808 \l{http://www.khronos.org/opengles/sdk/docs/man/glGetUniformiv.xml}{glGetUniformiv()}.
809
810 This convenience function will do nothing on OpenGL ES 1.x systems.
811*/
812
813/*!
814 \fn int QGLFunctions::glGetUniformLocation(GLuint program, const char* name)
815
816 Convenience function that calls glGetUniformLocation(\a program, \a name).
817
818 For more information, see the OpenGL ES 2.0 documentation for
819 \l{http://www.khronos.org/opengles/sdk/docs/man/glGetUniformLocation.xml}{glGetUniformLocation()}.
820
821 This convenience function will do nothing on OpenGL ES 1.x systems.
822*/
823
824/*!
825 \fn void QGLFunctions::glGetVertexAttribfv(GLuint index, GLenum pname, GLfloat* params)
826
827 Convenience function that calls glGetVertexAttribfv(\a index, \a pname, \a params).
828
829 For more information, see the OpenGL ES 2.0 documentation for
830 \l{http://www.khronos.org/opengles/sdk/docs/man/glGetVertexAttribfv.xml}{glGetVertexAttribfv()}.
831
832 This convenience function will do nothing on OpenGL ES 1.x systems.
833*/
834
835/*!
836 \fn void QGLFunctions::glGetVertexAttribiv(GLuint index, GLenum pname, GLint* params)
837
838 Convenience function that calls glGetVertexAttribiv(\a index, \a pname, \a params).
839
840 For more information, see the OpenGL ES 2.0 documentation for
841 \l{http://www.khronos.org/opengles/sdk/docs/man/glGetVertexAttribiv.xml}{glGetVertexAttribiv()}.
842
843 This convenience function will do nothing on OpenGL ES 1.x systems.
844*/
845
846/*!
847 \fn void QGLFunctions::glGetVertexAttribPointerv(GLuint index, GLenum pname, void** pointer)
848
849 Convenience function that calls glGetVertexAttribPointerv(\a index, \a pname, \a pointer).
850
851 For more information, see the OpenGL ES 2.0 documentation for
852 \l{http://www.khronos.org/opengles/sdk/docs/man/glGetVertexAttribPointerv.xml}{glGetVertexAttribPointerv()}.
853
854 This convenience function will do nothing on OpenGL ES 1.x systems.
855*/
856
857/*!
858 \fn GLboolean QGLFunctions::glIsBuffer(GLuint buffer)
859
860 Convenience function that calls glIsBuffer(\a buffer).
861
862 For more information, see the OpenGL ES 2.0 documentation for
863 \l{http://www.khronos.org/opengles/sdk/docs/man/glIsBuffer.xml}{glIsBuffer()}.
864*/
865
866/*!
867 \fn GLboolean QGLFunctions::glIsFramebuffer(GLuint framebuffer)
868
869 Convenience function that calls glIsFramebuffer(\a framebuffer).
870
871 For more information, see the OpenGL ES 2.0 documentation for
872 \l{http://www.khronos.org/opengles/sdk/docs/man/glIsFramebuffer.xml}{glIsFramebuffer()}.
873*/
874
875/*!
876 \fn GLboolean QGLFunctions::glIsProgram(GLuint program)
877
878 Convenience function that calls glIsProgram(\a program).
879
880 For more information, see the OpenGL ES 2.0 documentation for
881 \l{http://www.khronos.org/opengles/sdk/docs/man/glIsProgram.xml}{glIsProgram()}.
882
883 This convenience function will do nothing on OpenGL ES 1.x systems.
884*/
885
886/*!
887 \fn GLboolean QGLFunctions::glIsRenderbuffer(GLuint renderbuffer)
888
889 Convenience function that calls glIsRenderbuffer(\a renderbuffer).
890
891 For more information, see the OpenGL ES 2.0 documentation for
892 \l{http://www.khronos.org/opengles/sdk/docs/man/glIsRenderbuffer.xml}{glIsRenderbuffer()}.
893*/
894
895/*!
896 \fn GLboolean QGLFunctions::glIsShader(GLuint shader)
897
898 Convenience function that calls glIsShader(\a shader).
899
900 For more information, see the OpenGL ES 2.0 documentation for
901 \l{http://www.khronos.org/opengles/sdk/docs/man/glIsShader.xml}{glIsShader()}.
902
903 This convenience function will do nothing on OpenGL ES 1.x systems.
904*/
905
906/*!
907 \fn void QGLFunctions::glLinkProgram(GLuint program)
908
909 Convenience function that calls glLinkProgram(\a program).
910
911 For more information, see the OpenGL ES 2.0 documentation for
912 \l{http://www.khronos.org/opengles/sdk/docs/man/glLinkProgram.xml}{glLinkProgram()}.
913
914 This convenience function will do nothing on OpenGL ES 1.x systems.
915*/
916
917/*!
918 \fn void QGLFunctions::glReleaseShaderCompiler()
919
920 Convenience function that calls glReleaseShaderCompiler().
921
922 For more information, see the OpenGL ES 2.0 documentation for
923 \l{http://www.khronos.org/opengles/sdk/docs/man/glReleaseShaderCompiler.xml}{glReleaseShaderCompiler()}.
924
925 This convenience function will do nothing on OpenGL ES 1.x systems.
926*/
927
928/*!
929 \fn void QGLFunctions::glRenderbufferStorage(GLenum target, GLenum internalformat, GLsizei width, GLsizei height)
930
931 Convenience function that calls glRenderbufferStorage(\a target, \a internalformat, \a width, \a height).
932
933 For more information, see the OpenGL ES 2.0 documentation for
934 \l{http://www.khronos.org/opengles/sdk/docs/man/glRenderbufferStorage.xml}{glRenderbufferStorage()}.
935*/
936
937/*!
938 \fn void QGLFunctions::glSampleCoverage(GLclampf value, GLboolean invert)
939
940 Convenience function that calls glSampleCoverage(\a value, \a invert).
941
942 For more information, see the OpenGL ES 2.0 documentation for
943 \l{http://www.khronos.org/opengles/sdk/docs/man/glSampleCoverage.xml}{glSampleCoverage()}.
944*/
945
946/*!
947 \fn void QGLFunctions::glShaderBinary(GLint n, const GLuint* shaders, GLenum binaryformat, const void* binary, GLint length)
948
949 Convenience function that calls glShaderBinary(\a n, \a shaders, \a binaryformat, \a binary, \a length).
950
951 For more information, see the OpenGL ES 2.0 documentation for
952 \l{http://www.khronos.org/opengles/sdk/docs/man/glShaderBinary.xml}{glShaderBinary()}.
953
954 This convenience function will do nothing on OpenGL ES 1.x systems.
955*/
956
957/*!
958 \fn void QGLFunctions::glShaderSource(GLuint shader, GLsizei count, const char** string, const GLint* length)
959
960 Convenience function that calls glShaderSource(\a shader, \a count, \a string, \a length).
961
962 For more information, see the OpenGL ES 2.0 documentation for
963 \l{http://www.khronos.org/opengles/sdk/docs/man/glShaderSource.xml}{glShaderSource()}.
964
965 This convenience function will do nothing on OpenGL ES 1.x systems.
966*/
967
968/*!
969 \fn void QGLFunctions::glStencilFuncSeparate(GLenum face, GLenum func, GLint ref, GLuint mask)
970
971 Convenience function that calls glStencilFuncSeparate(\a face, \a func, \a ref, \a mask).
972
973 For more information, see the OpenGL ES 2.0 documentation for
974 \l{http://www.khronos.org/opengles/sdk/docs/man/glStencilFuncSeparate.xml}{glStencilFuncSeparate()}.
975*/
976
977/*!
978 \fn void QGLFunctions::glStencilMaskSeparate(GLenum face, GLuint mask)
979
980 Convenience function that calls glStencilMaskSeparate(\a face, \a mask).
981
982 For more information, see the OpenGL ES 2.0 documentation for
983 \l{http://www.khronos.org/opengles/sdk/docs/man/glStencilMaskSeparate.xml}{glStencilMaskSeparate()}.
984*/
985
986/*!
987 \fn void QGLFunctions::glStencilOpSeparate(GLenum face, GLenum fail, GLenum zfail, GLenum zpass)
988
989 Convenience function that calls glStencilOpSeparate(\a face, \a fail, \a zfail, \a zpass).
990
991 For more information, see the OpenGL ES 2.0 documentation for
992 \l{http://www.khronos.org/opengles/sdk/docs/man/glStencilOpSeparate.xml}{glStencilOpSeparate()}.
993*/
994
995/*!
996 \fn void QGLFunctions::glUniform1f(GLint location, GLfloat x)
997
998 Convenience function that calls glUniform1f(\a location, \a x).
999
1000 For more information, see the OpenGL ES 2.0 documentation for
1001 \l{http://www.khronos.org/opengles/sdk/docs/man/glUniform1f.xml}{glUniform1f()}.
1002
1003 This convenience function will do nothing on OpenGL ES 1.x systems.
1004*/
1005
1006/*!
1007 \fn void QGLFunctions::glUniform1fv(GLint location, GLsizei count, const GLfloat* v)
1008
1009 Convenience function that calls glUniform1fv(\a location, \a count, \a v).
1010
1011 For more information, see the OpenGL ES 2.0 documentation for
1012 \l{http://www.khronos.org/opengles/sdk/docs/man/glUniform1fv.xml}{glUniform1fv()}.
1013
1014 This convenience function will do nothing on OpenGL ES 1.x systems.
1015*/
1016
1017/*!
1018 \fn void QGLFunctions::glUniform1i(GLint location, GLint x)
1019
1020 Convenience function that calls glUniform1i(\a location, \a x).
1021
1022 For more information, see the OpenGL ES 2.0 documentation for
1023 \l{http://www.khronos.org/opengles/sdk/docs/man/glUniform1i.xml}{glUniform1i()}.
1024
1025 This convenience function will do nothing on OpenGL ES 1.x systems.
1026*/
1027
1028/*!
1029 \fn void QGLFunctions::glUniform1iv(GLint location, GLsizei count, const GLint* v)
1030
1031 Convenience function that calls glUniform1iv(\a location, \a count, \a v).
1032
1033 For more information, see the OpenGL ES 2.0 documentation for
1034 \l{http://www.khronos.org/opengles/sdk/docs/man/glUniform1iv.xml}{glUniform1iv()}.
1035
1036 This convenience function will do nothing on OpenGL ES 1.x systems.
1037*/
1038
1039/*!
1040 \fn void QGLFunctions::glUniform2f(GLint location, GLfloat x, GLfloat y)
1041
1042 Convenience function that calls glUniform2f(\a location, \a x, \a y).
1043
1044 For more information, see the OpenGL ES 2.0 documentation for
1045 \l{http://www.khronos.org/opengles/sdk/docs/man/glUniform2f.xml}{glUniform2f()}.
1046
1047 This convenience function will do nothing on OpenGL ES 1.x systems.
1048*/
1049
1050/*!
1051 \fn void QGLFunctions::glUniform2fv(GLint location, GLsizei count, const GLfloat* v)
1052
1053 Convenience function that calls glUniform2fv(\a location, \a count, \a v).
1054
1055 For more information, see the OpenGL ES 2.0 documentation for
1056 \l{http://www.khronos.org/opengles/sdk/docs/man/glUniform2fv.xml}{glUniform2fv()}.
1057
1058 This convenience function will do nothing on OpenGL ES 1.x systems.
1059*/
1060
1061/*!
1062 \fn void QGLFunctions::glUniform2i(GLint location, GLint x, GLint y)
1063
1064 Convenience function that calls glUniform2i(\a location, \a x, \a y).
1065
1066 For more information, see the OpenGL ES 2.0 documentation for
1067 \l{http://www.khronos.org/opengles/sdk/docs/man/glUniform2i.xml}{glUniform2i()}.
1068
1069 This convenience function will do nothing on OpenGL ES 1.x systems.
1070*/
1071
1072/*!
1073 \fn void QGLFunctions::glUniform2iv(GLint location, GLsizei count, const GLint* v)
1074
1075 Convenience function that calls glUniform2iv(\a location, \a count, \a v).
1076
1077 For more information, see the OpenGL ES 2.0 documentation for
1078 \l{http://www.khronos.org/opengles/sdk/docs/man/glUniform2iv.xml}{glUniform2iv()}.
1079
1080 This convenience function will do nothing on OpenGL ES 1.x systems.
1081*/
1082
1083/*!
1084 \fn void QGLFunctions::glUniform3f(GLint location, GLfloat x, GLfloat y, GLfloat z)
1085
1086 Convenience function that calls glUniform3f(\a location, \a x, \a y, \a z).
1087
1088 For more information, see the OpenGL ES 2.0 documentation for
1089 \l{http://www.khronos.org/opengles/sdk/docs/man/glUniform3f.xml}{glUniform3f()}.
1090
1091 This convenience function will do nothing on OpenGL ES 1.x systems.
1092*/
1093
1094/*!
1095 \fn void QGLFunctions::glUniform3fv(GLint location, GLsizei count, const GLfloat* v)
1096
1097 Convenience function that calls glUniform3fv(\a location, \a count, \a v).
1098
1099 For more information, see the OpenGL ES 2.0 documentation for
1100 \l{http://www.khronos.org/opengles/sdk/docs/man/glUniform3fv.xml}{glUniform3fv()}.
1101
1102 This convenience function will do nothing on OpenGL ES 1.x systems.
1103*/
1104
1105/*!
1106 \fn void QGLFunctions::glUniform3i(GLint location, GLint x, GLint y, GLint z)
1107
1108 Convenience function that calls glUniform3i(\a location, \a x, \a y, \a z).
1109
1110 For more information, see the OpenGL ES 2.0 documentation for
1111 \l{http://www.khronos.org/opengles/sdk/docs/man/glUniform3i.xml}{glUniform3i()}.
1112
1113 This convenience function will do nothing on OpenGL ES 1.x systems.
1114*/
1115
1116/*!
1117 \fn void QGLFunctions::glUniform3iv(GLint location, GLsizei count, const GLint* v)
1118
1119 Convenience function that calls glUniform3iv(\a location, \a count, \a v).
1120
1121 For more information, see the OpenGL ES 2.0 documentation for
1122 \l{http://www.khronos.org/opengles/sdk/docs/man/glUniform3iv.xml}{glUniform3iv()}.
1123
1124 This convenience function will do nothing on OpenGL ES 1.x systems.
1125*/
1126
1127/*!
1128 \fn void QGLFunctions::glUniform4f(GLint location, GLfloat x, GLfloat y, GLfloat z, GLfloat w)
1129
1130 Convenience function that calls glUniform4f(\a location, \a x, \a y, \a z, \a w).
1131
1132 For more information, see the OpenGL ES 2.0 documentation for
1133 \l{http://www.khronos.org/opengles/sdk/docs/man/glUniform4f.xml}{glUniform4f()}.
1134
1135 This convenience function will do nothing on OpenGL ES 1.x systems.
1136*/
1137
1138/*!
1139 \fn void QGLFunctions::glUniform4fv(GLint location, GLsizei count, const GLfloat* v)
1140
1141 Convenience function that calls glUniform4fv(\a location, \a count, \a v).
1142
1143 For more information, see the OpenGL ES 2.0 documentation for
1144 \l{http://www.khronos.org/opengles/sdk/docs/man/glUniform4fv.xml}{glUniform4fv()}.
1145
1146 This convenience function will do nothing on OpenGL ES 1.x systems.
1147*/
1148
1149/*!
1150 \fn void QGLFunctions::glUniform4i(GLint location, GLint x, GLint y, GLint z, GLint w)
1151
1152 Convenience function that calls glUniform4i(\a location, \a x, \a y, \a z, \a w).
1153
1154 For more information, see the OpenGL ES 2.0 documentation for
1155 \l{http://www.khronos.org/opengles/sdk/docs/man/glUniform4i.xml}{glUniform4i()}.
1156
1157 This convenience function will do nothing on OpenGL ES 1.x systems.
1158*/
1159
1160/*!
1161 \fn void QGLFunctions::glUniform4iv(GLint location, GLsizei count, const GLint* v)
1162
1163 Convenience function that calls glUniform4iv(\a location, \a count, \a v).
1164
1165 For more information, see the OpenGL ES 2.0 documentation for
1166 \l{http://www.khronos.org/opengles/sdk/docs/man/glUniform4iv.xml}{glUniform4iv()}.
1167
1168 This convenience function will do nothing on OpenGL ES 1.x systems.
1169*/
1170
1171/*!
1172 \fn void QGLFunctions::glUniformMatrix2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
1173
1174 Convenience function that calls glUniformMatrix2fv(\a location, \a count, \a transpose, \a value).
1175
1176 For more information, see the OpenGL ES 2.0 documentation for
1177 \l{http://www.khronos.org/opengles/sdk/docs/man/glUniformMatrix2fv.xml}{glUniformMatrix2fv()}.
1178
1179 This convenience function will do nothing on OpenGL ES 1.x systems.
1180*/
1181
1182/*!
1183 \fn void QGLFunctions::glUniformMatrix3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
1184
1185 Convenience function that calls glUniformMatrix3fv(\a location, \a count, \a transpose, \a value).
1186
1187 For more information, see the OpenGL ES 2.0 documentation for
1188 \l{http://www.khronos.org/opengles/sdk/docs/man/glUniformMatrix3fv.xml}{glUniformMatrix3fv()}.
1189
1190 This convenience function will do nothing on OpenGL ES 1.x systems.
1191*/
1192
1193/*!
1194 \fn void QGLFunctions::glUniformMatrix4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
1195
1196 Convenience function that calls glUniformMatrix4fv(\a location, \a count, \a transpose, \a value).
1197
1198 For more information, see the OpenGL ES 2.0 documentation for
1199 \l{http://www.khronos.org/opengles/sdk/docs/man/glUniformMatrix4fv.xml}{glUniformMatrix4fv()}.
1200
1201 This convenience function will do nothing on OpenGL ES 1.x systems.
1202*/
1203
1204/*!
1205 \fn void QGLFunctions::glUseProgram(GLuint program)
1206
1207 Convenience function that calls glUseProgram(\a program).
1208
1209 For more information, see the OpenGL ES 2.0 documentation for
1210 \l{http://www.khronos.org/opengles/sdk/docs/man/glUseProgram.xml}{glUseProgram()}.
1211
1212 This convenience function will do nothing on OpenGL ES 1.x systems.
1213*/
1214
1215/*!
1216 \fn void QGLFunctions::glValidateProgram(GLuint program)
1217
1218 Convenience function that calls glValidateProgram(\a program).
1219
1220 For more information, see the OpenGL ES 2.0 documentation for
1221 \l{http://www.khronos.org/opengles/sdk/docs/man/glValidateProgram.xml}{glValidateProgram()}.
1222
1223 This convenience function will do nothing on OpenGL ES 1.x systems.
1224*/
1225
1226/*!
1227 \fn void QGLFunctions::glVertexAttrib1f(GLuint indx, GLfloat x)
1228
1229 Convenience function that calls glVertexAttrib1f(\a indx, \a x).
1230
1231 For more information, see the OpenGL ES 2.0 documentation for
1232 \l{http://www.khronos.org/opengles/sdk/docs/man/glVertexAttrib1f.xml}{glVertexAttrib1f()}.
1233
1234 This convenience function will do nothing on OpenGL ES 1.x systems.
1235*/
1236
1237/*!
1238 \fn void QGLFunctions::glVertexAttrib1fv(GLuint indx, const GLfloat* values)
1239
1240 Convenience function that calls glVertexAttrib1fv(\a indx, \a values).
1241
1242 For more information, see the OpenGL ES 2.0 documentation for
1243 \l{http://www.khronos.org/opengles/sdk/docs/man/glVertexAttrib1fv.xml}{glVertexAttrib1fv()}.
1244
1245 This convenience function will do nothing on OpenGL ES 1.x systems.
1246*/
1247
1248/*!
1249 \fn void QGLFunctions::glVertexAttrib2f(GLuint indx, GLfloat x, GLfloat y)
1250
1251 Convenience function that calls glVertexAttrib2f(\a indx, \a x, \a y).
1252
1253 For more information, see the OpenGL ES 2.0 documentation for
1254 \l{http://www.khronos.org/opengles/sdk/docs/man/glVertexAttrib2f.xml}{glVertexAttrib2f()}.
1255
1256 This convenience function will do nothing on OpenGL ES 1.x systems.
1257*/
1258
1259/*!
1260 \fn void QGLFunctions::glVertexAttrib2fv(GLuint indx, const GLfloat* values)
1261
1262 Convenience function that calls glVertexAttrib2fv(\a indx, \a values).
1263
1264 For more information, see the OpenGL ES 2.0 documentation for
1265 \l{http://www.khronos.org/opengles/sdk/docs/man/glVertexAttrib2fv.xml}{glVertexAttrib2fv()}.
1266
1267 This convenience function will do nothing on OpenGL ES 1.x systems.
1268*/
1269
1270/*!
1271 \fn void QGLFunctions::glVertexAttrib3f(GLuint indx, GLfloat x, GLfloat y, GLfloat z)
1272
1273 Convenience function that calls glVertexAttrib3f(\a indx, \a x, \a y, \a z).
1274
1275 For more information, see the OpenGL ES 2.0 documentation for
1276 \l{http://www.khronos.org/opengles/sdk/docs/man/glVertexAttrib3f.xml}{glVertexAttrib3f()}.
1277
1278 This convenience function will do nothing on OpenGL ES 1.x systems.
1279*/
1280
1281/*!
1282 \fn void QGLFunctions::glVertexAttrib3fv(GLuint indx, const GLfloat* values)
1283
1284 Convenience function that calls glVertexAttrib3fv(\a indx, \a values).
1285
1286 For more information, see the OpenGL ES 2.0 documentation for
1287 \l{http://www.khronos.org/opengles/sdk/docs/man/glVertexAttrib3fv.xml}{glVertexAttrib3fv()}.
1288
1289 This convenience function will do nothing on OpenGL ES 1.x systems.
1290*/
1291
1292/*!
1293 \fn void QGLFunctions::glVertexAttrib4f(GLuint indx, GLfloat x, GLfloat y, GLfloat z, GLfloat w)
1294
1295 Convenience function that calls glVertexAttrib4f(\a indx, \a x, \a y, \a z, \a w).
1296
1297 For more information, see the OpenGL ES 2.0 documentation for
1298 \l{http://www.khronos.org/opengles/sdk/docs/man/glVertexAttrib4f.xml}{glVertexAttrib4f()}.
1299
1300 This convenience function will do nothing on OpenGL ES 1.x systems.
1301*/
1302
1303/*!
1304 \fn void QGLFunctions::glVertexAttrib4fv(GLuint indx, const GLfloat* values)
1305
1306 Convenience function that calls glVertexAttrib4fv(\a indx, \a values).
1307
1308 For more information, see the OpenGL ES 2.0 documentation for
1309 \l{http://www.khronos.org/opengles/sdk/docs/man/glVertexAttrib4fv.xml}{glVertexAttrib4fv()}.
1310
1311 This convenience function will do nothing on OpenGL ES 1.x systems.
1312*/
1313
1314/*!
1315 \fn void QGLFunctions::glVertexAttribPointer(GLuint indx, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void* ptr)
1316
1317 Convenience function that calls glVertexAttribPointer(\a indx, \a size, \a type, \a normalized, \a stride, \a ptr).
1318
1319 For more information, see the OpenGL ES 2.0 documentation for
1320 \l{http://www.khronos.org/opengles/sdk/docs/man/glVertexAttribPointer.xml}{glVertexAttribPointer()}.
1321
1322 This convenience function will do nothing on OpenGL ES 1.x systems.
1323*/
1324
1325QGLFunctionsPrivate::QGLFunctionsPrivate(const QGLContext *)
1326 : funcs(0)
1327{
1328}
1329
1330QT_END_NAMESPACE
1331