summaryrefslogtreecommitdiffstats
path: root/util/glgen/qopenglversionfunctions__VERSION__.cpp.footer
diff options
context:
space:
mode:
authorSean Harmer <sean.harmer@kdab.com>2012-08-08 16:43:48 +0100
committerThe Qt Project <gerrit-noreply@qt-project.org>2013-02-25 17:22:28 +0100
commit9eb9bd703b29022547a2ef4bdf2e805f0cb088dc (patch)
tree9706a13ced96962724421363bbc7c665e68a50f8 /util/glgen/qopenglversionfunctions__VERSION__.cpp.footer
parent3fdc4ae0ed156851c99dee4b52340cfbc0f9aaf7 (diff)
OpenGL: Add code generator for OpenGL enabler classes
This patch provides a code generator that can be executed offline to generate a few classes for enhancing Qt's support for OpenGL. The generated code effectively provides all the benefits of GLEW in its multi-context form but for all platforms and even for ES2. The code generator takes as input the official Khronos gl.spec specification and gl.tm typemap files. These provide all of the information required to create the OpenGL Desktop related classes. The classes for ES2 are hand-crafted as no similar spec files have been published. The generated code supports all OpenGL extensions listed in the Khronos registry for both Desktop OpenGL and ES 2. There is a helper factory class generated which are used by QOpenGLContext::versionFunctions(). This allows code like the following to be written: QOpenGLFunctions_3_3_Core* m_funcs = 0; m_funcs = m_context->versionFunctions<QOpenGLFunctions_3_3_Core>(); if (!m_funcs) { qWarning() << "Could not obtain required OpenGL context version"; exit(1); } if (!m_funcs->initializeOpenGLFunctions()) { qWarning() << "Failed to resolve entry points"; exit(2); } // Get an extension object QOpenGLExtension_ARB_draw_buffers* ext = 0; if (m_context->hasExtension("GL_ARB_draw_buffers")) { ext = new QOpenGLExtension_ARB_draw_buffers(); ext->initializeOpenGLFunctions(m_context); } Such usage will allow much easier and rigorous use of features in modern OpenGL and extensions both in Qt itself and by users of Qt. Follow-up patches will import the generated files and then use these to reinstate OpenGL geometry shaders, add tessellation shaders, and other OpenGL constructs. Change-Id: Id0172e8aa1fd57eb4e6979a96d10fb5a34826426 Reviewed-by: Samuel Rødal <samuel.rodal@digia.com> Reviewed-by: James Turner <james.turner@kdab.com>
Diffstat (limited to 'util/glgen/qopenglversionfunctions__VERSION__.cpp.footer')
-rw-r--r--util/glgen/qopenglversionfunctions__VERSION__.cpp.footer2
1 files changed, 2 insertions, 0 deletions
diff --git a/util/glgen/qopenglversionfunctions__VERSION__.cpp.footer b/util/glgen/qopenglversionfunctions__VERSION__.cpp.footer
new file mode 100644
index 0000000000..b81ea7b6ea
--- /dev/null
+++ b/util/glgen/qopenglversionfunctions__VERSION__.cpp.footer
@@ -0,0 +1,2 @@
+
+QT_END_NAMESPACE