From 12a7d23d528262ec1eca3c870fc19ef7d54ca417 Mon Sep 17 00:00:00 2001 From: Gunnar Sletta Date: Tue, 11 Feb 2014 12:53:36 +0100 Subject: [PATCH] Introducing QOpenGLShaderProgram::create() Needed for QOpenGLShaderProgram to be usable with GL_OES_get_program_binary and potentially other extensions. [Changelog][QtGui] The function QOpenGLShaderProgram::create() has been added. It is can be used to force immediate allocation of the program's id. Change-Id: I36b3f45b00e7a439df12c54af7dc06c0ba913587 Reviewed-by: Lars Knoll --- src/gui/opengl/qopenglshaderprogram.cpp | 23 ++++++++++++++++++++++- src/gui/opengl/qopenglshaderprogram.h | 2 ++ 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/src/gui/opengl/qopenglshaderprogram.cpp b/src/gui/opengl/qopenglshaderprogram.cpp index 06f40eafd0..164e5e6925 100644 --- a/src/gui/opengl/qopenglshaderprogram.cpp +++ b/src/gui/opengl/qopenglshaderprogram.cpp @@ -123,7 +123,8 @@ QT_BEGIN_NAMESPACE on the return value from programId(). Then the application should call link(), which will notice that the program has already been specified and linked, allowing other operations to be performed - on the shader program. + on the shader program. The shader program's id can be explicitly + created using the create() function. \sa QOpenGLShader */ @@ -639,6 +640,26 @@ QOpenGLShaderProgram::~QOpenGLShaderProgram() { } +/*! + Requests the shader program's id to be created immediately. Returns \c true + if successful; \c false otherwise. + + This function is primarily useful when combining QOpenGLShaderProgram + with other OpenGL functions that operate directly on the shader + program id, like \c {GL_OES_get_program_binary}. + + When the shader program is used normally, the shader program's id will + be created on demand. + + \sa programId() + + \since 5.3 + */ +bool QOpenGLShaderProgram::create() +{ + return init(); +} + bool QOpenGLShaderProgram::init() { Q_D(QOpenGLShaderProgram); diff --git a/src/gui/opengl/qopenglshaderprogram.h b/src/gui/opengl/qopenglshaderprogram.h index b894ae3af8..91754842e6 100644 --- a/src/gui/opengl/qopenglshaderprogram.h +++ b/src/gui/opengl/qopenglshaderprogram.h @@ -130,6 +130,8 @@ public: bool bind(); void release(); + bool create(); + GLuint programId() const; int maxGeometryOutputVertices() const;