Commit Graph

4 Commits

Author SHA1 Message Date
Joerg Bornemann
6608e63298 Fix build of util/glgen
Don't use QSet::toList(), and fix an obvious typo.
Also, core5compat is now needed due to the use of QRegExp.

Change-Id: I766455996c07d354e97a4ed4939f1774fc449331
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
2022-05-06 03:48:09 +02:00
Joerg Bornemann
8fe3680193 Add cmdline feature to qmake
[ChangeLog][qmake] A new feature "cmdline" was added that implies
"CONFIG += console" and "CONFIG -= app_bundle".

Task-number: QTBUG-27079
Change-Id: I6e52b07c9341c904bb1424fc717057432f9360e1
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@gmx.de>
2019-02-18 07:12:14 +00:00
David Morgan
d444bbf110 glgen: Added support for parsing the new xml spec.
The .spec file is no longer updated thus support for gl 4.4 is impossible without an update to parse the new xml spec. The legacy parser can be used with the -l (--legacy) switch.

Task-number: QTBUG-33671
Task-number: QTBUG-40090
Change-Id: I83d9380842a16e925f6c07331ee35fe035f6baa9
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
2014-08-29 12:41:21 +02:00
Sean Harmer
9eb9bd703b 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>
2013-02-25 17:22:28 +01:00