
We bake cookies in your browser for a better experience. Using this site means that you consent.Read More
TheQGLShaderProgram class allowsOpenGL shader programs to be linked and used.More...
| Header: | #include <QGLShaderProgram> |
| Since: | Qt 4.6 |
| Inherits: | QObject |
| QGLShaderProgram(QObject * parent = 0) | |
| QGLShaderProgram(const QGLContext * context, QObject * parent = 0) | |
| virtual | ~QGLShaderProgram() |
| bool | addShader(QGLShader * shader) |
| bool | addShaderFromSourceCode(QGLShader::ShaderType type, const char * source) |
| bool | addShaderFromSourceCode(QGLShader::ShaderType type, const QByteArray & source) |
| bool | addShaderFromSourceCode(QGLShader::ShaderType type, const QString & source) |
| bool | addShaderFromSourceFile(QGLShader::ShaderType type, const QString & fileName) |
| int | attributeLocation(const char * name) const |
| int | attributeLocation(const QByteArray & name) const |
| int | attributeLocation(const QString & name) const |
| bool | bind() |
| void | bindAttributeLocation(const char * name, int location) |
| void | bindAttributeLocation(const QByteArray & name, int location) |
| void | bindAttributeLocation(const QString & name, int location) |
| void | disableAttributeArray(int location) |
| void | disableAttributeArray(const char * name) |
| void | enableAttributeArray(int location) |
| void | enableAttributeArray(const char * name) |
| GLenum | geometryInputType() const |
| GLenum | geometryOutputType() const |
| int | geometryOutputVertexCount() const |
| bool | isLinked() const |
| virtual bool | link() |
| QString | log() const |
| int | maxGeometryOutputVertices() const |
| GLuint | programId() const |
| void | release() |
| void | removeAllShaders() |
| void | removeShader(QGLShader * shader) |
| void | setAttributeArray(int location, const GLfloat * values, int tupleSize, int stride = 0) |
| void | setAttributeArray(int location, const QVector2D * values, int stride = 0) |
| void | setAttributeArray(int location, const QVector3D * values, int stride = 0) |
| void | setAttributeArray(int location, const QVector4D * values, int stride = 0) |
| void | setAttributeArray(int location, GLenum type, const void * values, int tupleSize, int stride = 0) |
| void | setAttributeArray(const char * name, const GLfloat * values, int tupleSize, int stride = 0) |
| void | setAttributeArray(const char * name, const QVector2D * values, int stride = 0) |
| void | setAttributeArray(const char * name, const QVector3D * values, int stride = 0) |
| void | setAttributeArray(const char * name, const QVector4D * values, int stride = 0) |
| void | setAttributeArray(const char * name, GLenum type, const void * values, int tupleSize, int stride = 0) |
| void | setAttributeBuffer(int location, GLenum type, int offset, int tupleSize, int stride = 0) |
| void | setAttributeBuffer(const char * name, GLenum type, int offset, int tupleSize, int stride = 0) |
| void | setAttributeValue(int location, GLfloat value) |
| void | setAttributeValue(int location, GLfloat x, GLfloat y) |
| void | setAttributeValue(int location, GLfloat x, GLfloat y, GLfloat z) |
| void | setAttributeValue(int location, GLfloat x, GLfloat y, GLfloat z, GLfloat w) |
| void | setAttributeValue(int location, const QVector2D & value) |
| void | setAttributeValue(int location, const QVector3D & value) |
| void | setAttributeValue(int location, const QVector4D & value) |
| void | setAttributeValue(int location, const QColor & value) |
| void | setAttributeValue(int location, const GLfloat * values, int columns, int rows) |
| void | setAttributeValue(const char * name, GLfloat value) |
| void | setAttributeValue(const char * name, GLfloat x, GLfloat y) |
| void | setAttributeValue(const char * name, GLfloat x, GLfloat y, GLfloat z) |
| void | setAttributeValue(const char * name, GLfloat x, GLfloat y, GLfloat z, GLfloat w) |
| void | setAttributeValue(const char * name, const QVector2D & value) |
| void | setAttributeValue(const char * name, const QVector3D & value) |
| void | setAttributeValue(const char * name, const QVector4D & value) |
| void | setAttributeValue(const char * name, const QColor & value) |
| void | setAttributeValue(const char * name, const GLfloat * values, int columns, int rows) |
| void | setGeometryInputType(GLenum inputType) |
| void | setGeometryOutputType(GLenum outputType) |
| void | setGeometryOutputVertexCount(int count) |
| void | setUniformValue(int location, GLfloat value) |
| void | setUniformValue(const char * name, const QPointF & point) |
| void | setUniformValue(const char * name, const QSize & size) |
| void | setUniformValue(const char * name, const QSizeF & size) |
| void | setUniformValue(const char * name, const QMatrix2x2 & value) |
| void | setUniformValue(const char * name, const QMatrix2x3 & value) |
| void | setUniformValue(const char * name, const QMatrix2x4 & value) |
| void | setUniformValue(const char * name, const QMatrix3x2 & value) |
| void | setUniformValue(const char * name, const QMatrix3x3 & value) |
| void | setUniformValue(const char * name, const QMatrix3x4 & value) |
| void | setUniformValue(const char * name, const QMatrix4x2 & value) |
| void | setUniformValue(const char * name, const QMatrix4x3 & value) |
| void | setUniformValue(const char * name, const QMatrix4x4 & value) |
| void | setUniformValue(int location, const GLfloat[2][2] value) |
| void | setUniformValue(int location, const GLfloat[3][3] value) |
| void | setUniformValue(int location, const GLfloat[4][4] value) |
| void | setUniformValue(const char * name, const GLfloat[2][2] value) |
| void | setUniformValue(const char * name, const GLfloat[3][3] value) |
| void | setUniformValue(const char * name, const GLfloat[4][4] value) |
| void | setUniformValue(const char * name, const QTransform & value) |
| void | setUniformValue(int location, GLint value) |
| void | setUniformValue(int location, GLuint value) |
| void | setUniformValue(int location, GLfloat x, GLfloat y) |
| void | setUniformValue(int location, GLfloat x, GLfloat y, GLfloat z) |
| void | setUniformValue(int location, GLfloat x, GLfloat y, GLfloat z, GLfloat w) |
| void | setUniformValue(int location, const QVector2D & value) |
| void | setUniformValue(int location, const QVector3D & value) |
| void | setUniformValue(int location, const QVector4D & value) |
| void | setUniformValue(int location, const QColor & color) |
| void | setUniformValue(int location, const QPoint & point) |
| void | setUniformValue(int location, const QPointF & point) |
| void | setUniformValue(int location, const QSize & size) |
| void | setUniformValue(int location, const QSizeF & size) |
| void | setUniformValue(int location, const QMatrix2x2 & value) |
| void | setUniformValue(int location, const QMatrix2x3 & value) |
| void | setUniformValue(int location, const QMatrix2x4 & value) |
| void | setUniformValue(int location, const QMatrix3x2 & value) |
| void | setUniformValue(int location, const QMatrix3x3 & value) |
| void | setUniformValue(int location, const QMatrix3x4 & value) |
| void | setUniformValue(int location, const QMatrix4x2 & value) |
| void | setUniformValue(int location, const QMatrix4x3 & value) |
| void | setUniformValue(int location, const QMatrix4x4 & value) |
| void | setUniformValue(int location, const QTransform & value) |
| void | setUniformValue(const char * name, GLfloat value) |
| void | setUniformValue(const char * name, GLint value) |
| void | setUniformValue(const char * name, GLuint value) |
| void | setUniformValue(const char * name, GLfloat x, GLfloat y) |
| void | setUniformValue(const char * name, GLfloat x, GLfloat y, GLfloat z) |
| void | setUniformValue(const char * name, GLfloat x, GLfloat y, GLfloat z, GLfloat w) |
| void | setUniformValue(const char * name, const QVector2D & value) |
| void | setUniformValue(const char * name, const QVector3D & value) |
| void | setUniformValue(const char * name, const QVector4D & value) |
| void | setUniformValue(const char * name, const QColor & color) |
| void | setUniformValue(const char * name, const QPoint & point) |
| void | setUniformValueArray(int location, const GLfloat * values, int count, int tupleSize) |
| void | setUniformValueArray(int location, const GLint * values, int count) |
| void | setUniformValueArray(int location, const GLuint * values, int count) |
| void | setUniformValueArray(int location, const QVector2D * values, int count) |
| void | setUniformValueArray(int location, const QVector3D * values, int count) |
| void | setUniformValueArray(int location, const QVector4D * values, int count) |
| void | setUniformValueArray(int location, const QMatrix2x2 * values, int count) |
| void | setUniformValueArray(int location, const QMatrix2x3 * values, int count) |
| void | setUniformValueArray(int location, const QMatrix2x4 * values, int count) |
| void | setUniformValueArray(int location, const QMatrix3x2 * values, int count) |
| void | setUniformValueArray(int location, const QMatrix3x3 * values, int count) |
| void | setUniformValueArray(int location, const QMatrix3x4 * values, int count) |
| void | setUniformValueArray(int location, const QMatrix4x2 * values, int count) |
| void | setUniformValueArray(int location, const QMatrix4x3 * values, int count) |
| void | setUniformValueArray(int location, const QMatrix4x4 * values, int count) |
| void | setUniformValueArray(const char * name, const GLint * values, int count) |
| void | setUniformValueArray(const char * name, const GLuint * values, int count) |
| void | setUniformValueArray(const char * name, const GLfloat * values, int count, int tupleSize) |
| void | setUniformValueArray(const char * name, const QVector2D * values, int count) |
| void | setUniformValueArray(const char * name, const QVector3D * values, int count) |
| void | setUniformValueArray(const char * name, const QVector4D * values, int count) |
| void | setUniformValueArray(const char * name, const QMatrix2x2 * values, int count) |
| void | setUniformValueArray(const char * name, const QMatrix2x3 * values, int count) |
| void | setUniformValueArray(const char * name, const QMatrix2x4 * values, int count) |
| void | setUniformValueArray(const char * name, const QMatrix3x2 * values, int count) |
| void | setUniformValueArray(const char * name, const QMatrix3x3 * values, int count) |
| void | setUniformValueArray(const char * name, const QMatrix3x4 * values, int count) |
| void | setUniformValueArray(const char * name, const QMatrix4x2 * values, int count) |
| void | setUniformValueArray(const char * name, const QMatrix4x3 * values, int count) |
| void | setUniformValueArray(const char * name, const QMatrix4x4 * values, int count) |
| QList<QGLShader *> | shaders() const |
| int | uniformLocation(const char * name) const |
| int | uniformLocation(const QByteArray & name) const |
| int | uniformLocation(const QString & name) const |
| bool | hasOpenGLShaderPrograms(const QGLContext * context = 0) |
TheQGLShaderProgram class allowsOpenGL shader programs to be linked and used.
This class supports shader programs written in theOpenGL Shading Language (GLSL) and in theOpenGL/ES Shading Language (GLSL/ES).
QGLShader andQGLShaderProgram shelter the programmer from the details of compiling and linking vertex and fragment shaders.
The following example creates a vertex shader program using the supplied sourcecode. Once compiled and linked, the shader program is activated in the currentQGLContext by callingQGLShaderProgram::bind():
QGLShader shader(QGLShader::Vertex);shader.compileSourceCode(code);QGLShaderProgram program(context);program.addShader(shader);program.link();program.bind();
Shader programs can be difficult to reuse acrossOpenGL implementations because of varying levels of support for standard vertex attributes and uniform variables. In particular, GLSL/ES lacks all of the standard variables that are present on desktopOpenGL systems:gl_Vertex,gl_Normal,gl_Color, and so on. DesktopOpenGL lacks the variable qualifiershighp,mediump, andlowp.
TheQGLShaderProgram class makes the process of writing portable shaders easier by prefixing all shader programs with the following lines on desktopOpenGL:
#define highp#define mediump#define lowp
This makes it possible to run most GLSL/ES shader programs on desktop systems. The programmer should restrict themselves to just features that are present in GLSL/ES, and avoid standard variable names that only work on the desktop.
program.addShaderFromSourceCode(QGLShader::Vertex,"attribute highp vec4 vertex;\n""uniform highp mat4 matrix;\n""void main(void)\n""{\n"" gl_Position = matrix * vertex;\n""}");program.addShaderFromSourceCode(QGLShader::Fragment,"uniform mediump vec4 color;\n""void main(void)\n""{\n"" gl_FragColor = color;\n""}");program.link();program.bind();int vertexLocation= program.attributeLocation("vertex");int matrixLocation= program.uniformLocation("matrix");int colorLocation= program.uniformLocation("color");
With the above shader program active, we can draw a green triangle as follows:
static GLfloatconst triangleVertices[]= {60.0f,10.0f,0.0f,110.0f,110.0f,0.0f,10.0f,110.0f,0.0f};QColor color(0,255,0,255);QMatrix4x4 pmvMatrix;pmvMatrix.ortho(rect());program.enableAttributeArray(vertexLocation);program.setAttributeArray(vertexLocation, triangleVertices,3);program.setUniformValue(matrixLocation, pmvMatrix);program.setUniformValue(colorLocation, color);glDrawArrays(GL_TRIANGLES,0,3);program.disableAttributeArray(vertexLocation);
Binary shaders may be specified usingglShaderBinary() on the return value fromQGLShader::shaderId(). TheQGLShader instance containing the binary can then be added to the shader program withaddShader() and linked in the usual fashion withlink().
Binary programs may be specified usingglProgramBinaryOES() on the return value fromprogramId(). Then the application should calllink(), which will notice that the program has already been specified and linked, allowing other operations to be performed on the shader program.
See alsoQGLShader.
Constructs a new shader program and attaches it toparent. The program will be invalid untiladdShader() is called.
The shader program will be associated with the currentQGLContext.
See alsoaddShader().
Constructs a new shader program and attaches it toparent. The program will be invalid untiladdShader() is called.
The shader program will be associated withcontext.
See alsoaddShader().
[virtual]QGLShaderProgram::~QGLShaderProgram()Deletes this shader program.
Adds a compiledshader to this shader program. Returns true if the shader could be added, or false otherwise.
Ownership of theshader object remains with the caller. It will not be deleted when thisQGLShaderProgram instance is deleted. This allows the caller to add the same shader to multiple shader programs.
See alsoaddShaderFromSourceCode(),addShaderFromSourceFile(),removeShader(),link(), andremoveAllShaders().
Compilessource as a shader of the specifiedtype and adds it to this shader program. Returns true if compilation was successful, false otherwise. The compilation errors and warnings will be made available vialog().
This function is intended to be a short-cut for quickly adding vertex and fragment shaders to a shader program without creating an instance ofQGLShader first.
See alsoaddShader(),addShaderFromSourceFile(),removeShader(),link(),log(), andremoveAllShaders().
This is an overloaded function.
Compilessource as a shader of the specifiedtype and adds it to this shader program. Returns true if compilation was successful, false otherwise. The compilation errors and warnings will be made available vialog().
This function is intended to be a short-cut for quickly adding vertex and fragment shaders to a shader program without creating an instance ofQGLShader first.
See alsoaddShader(),addShaderFromSourceFile(),removeShader(),link(),log(), andremoveAllShaders().
This is an overloaded function.
Compilessource as a shader of the specifiedtype and adds it to this shader program. Returns true if compilation was successful, false otherwise. The compilation errors and warnings will be made available vialog().
This function is intended to be a short-cut for quickly adding vertex and fragment shaders to a shader program without creating an instance ofQGLShader first.
See alsoaddShader(),addShaderFromSourceFile(),removeShader(),link(),log(), andremoveAllShaders().
Compiles the contents offileName as a shader of the specifiedtype and adds it to this shader program. Returns true if compilation was successful, false otherwise. The compilation errors and warnings will be made available vialog().
This function is intended to be a short-cut for quickly adding vertex and fragment shaders to a shader program without creating an instance ofQGLShader first.
See alsoaddShader() andaddShaderFromSourceCode().
Returns the location of the attributename within this shader program's parameter list. Returns -1 ifname is not a valid attribute for this shader program.
See alsouniformLocation() andbindAttributeLocation().
This is an overloaded function.
Returns the location of the attributename within this shader program's parameter list. Returns -1 ifname is not a valid attribute for this shader program.
See alsouniformLocation() andbindAttributeLocation().
This is an overloaded function.
Returns the location of the attributename within this shader program's parameter list. Returns -1 ifname is not a valid attribute for this shader program.
See alsouniformLocation() andbindAttributeLocation().
Binds this shader program to the activeQGLContext and makes it the current shader program. Any previously bound shader program is released. This is equivalent to callingglUseProgram() onprogramId(). Returns true if the program was successfully bound; false otherwise. If the shader program has not yet been linked, or it needs to be re-linked, this function will calllink().
Binds the attributename to the specifiedlocation. This function can be called before or after the program has been linked. Any attributes that have not been explicitly bound when the program is linked will be assigned locations automatically.
When this function is called after the program has been linked, the program will need to be relinked for the change to take effect.
See alsoattributeLocation().
This is an overloaded function.
Binds the attributename to the specifiedlocation. This function can be called before or after the program has been linked. Any attributes that have not been explicitly bound when the program is linked will be assigned locations automatically.
When this function is called after the program has been linked, the program will need to be relinked for the change to take effect.
See alsoattributeLocation().
This is an overloaded function.
Binds the attributename to the specifiedlocation. This function can be called before or after the program has been linked. Any attributes that have not been explicitly bound when the program is linked will be assigned locations automatically.
When this function is called after the program has been linked, the program will need to be relinked for the change to take effect.
See alsoattributeLocation().
Disables the vertex array atlocation in this shader program that was enabled by a previous call toenableAttributeArray().
See alsoenableAttributeArray(),setAttributeArray(),setAttributeValue(), andsetUniformValue().
This is an overloaded function.
Disables the vertex array calledname in this shader program that was enabled by a previous call toenableAttributeArray().
See alsoenableAttributeArray(),setAttributeArray(),setAttributeValue(), andsetUniformValue().
Enables the vertex array atlocation in this shader program so that the value set bysetAttributeArray() onlocation will be used by the shader program.
See alsodisableAttributeArray(),setAttributeArray(),setAttributeValue(), andsetUniformValue().
This is an overloaded function.
Enables the vertex array calledname in this shader program so that the value set bysetAttributeArray() onname will be used by the shader program.
See alsodisableAttributeArray(),setAttributeArray(),setAttributeValue(), andsetUniformValue().
Returns the geometry shader input type, if active.
This parameter takes effect the next time the program is linked.
This function was introduced in Qt 4.7.
See alsosetGeometryInputType().
Returns the geometry shader output type, if active.
This parameter takes effect the next time the program is linked.
This function was introduced in Qt 4.7.
See alsosetGeometryOutputType().
Returns the maximum number of vertices the current geometry shader program will produce, if active.
This parameter takes effect the ntext time the program is linked.
This function was introduced in Qt 4.7.
See alsosetGeometryOutputVertexCount().
[static]bool QGLShaderProgram::hasOpenGLShaderPrograms(constQGLContext * context = 0)Returns true if shader programs written in theOpenGL Shading Language (GLSL) are supported on this system; false otherwise.
Thecontext is used to resolve the GLSL extensions. Ifcontext is null, thenQGLContext::currentContext() is used.
Returns true if this shader program has been linked; false otherwise.
See alsolink().
[virtual]bool QGLShaderProgram::link()Links together the shaders that were added to this program withaddShader(). Returns true if the link was successful or false otherwise. If the link failed, the error messages can be retrieved withlog().
Subclasses can override this function to initialize attributes and uniform variables for use in specific shader programs.
If the shader program was already linked, calling this function again will force it to be re-linked.
Returns the errors and warnings that occurred during the lastlink() oraddShader() with explicitly specified source code.
See alsolink().
Returns the hardware limit for how many vertices a geometry shader can output.
This function was introduced in Qt 4.7.
See alsosetGeometryOutputVertexCount().
Returns theOpenGL identifier associated with this shader program.
See alsoQGLShader::shaderId().
Releases the active shader program from the currentQGLContext. This is equivalent to callingglUseProgram(0).
See alsobind().
Removes all of the shaders that were added to this program previously. TheQGLShader objects for the shaders will not be deleted if they were constructed externally.QGLShader objects that are constructed internally byQGLShaderProgram will be deleted.
See alsoaddShader() andremoveShader().
Removesshader from this shader program. The object is not deleted.
See alsoaddShader(),link(), andremoveAllShaders().
Sets an array of vertexvalues on the attribute atlocation in this shader program. ThetupleSize indicates the number of components per vertex (1, 2, 3, or 4), and thestride indicates the number of bytes between vertices. A defaultstride value of zero indicates that the vertices are densely packed invalues.
The array will become active whenenableAttributeArray() is called on thelocation. Otherwise the value specified withsetAttributeValue() forlocation will be used.
See alsosetAttributeValue(),setUniformValue(),enableAttributeArray(), anddisableAttributeArray().
Sets an array of 2D vertexvalues on the attribute atlocation in this shader program. Thestride indicates the number of bytes between vertices. A defaultstride value of zero indicates that the vertices are densely packed invalues.
The array will become active whenenableAttributeArray() is called on thelocation. Otherwise the value specified withsetAttributeValue() forlocation will be used.
See alsosetAttributeValue(),setUniformValue(),enableAttributeArray(), anddisableAttributeArray().
Sets an array of 3D vertexvalues on the attribute atlocation in this shader program. Thestride indicates the number of bytes between vertices. A defaultstride value of zero indicates that the vertices are densely packed invalues.
The array will become active whenenableAttributeArray() is called on thelocation. Otherwise the value specified withsetAttributeValue() forlocation will be used.
See alsosetAttributeValue(),setUniformValue(),enableAttributeArray(), anddisableAttributeArray().
Sets an array of 4D vertexvalues on the attribute atlocation in this shader program. Thestride indicates the number of bytes between vertices. A defaultstride value of zero indicates that the vertices are densely packed invalues.
The array will become active whenenableAttributeArray() is called on thelocation. Otherwise the value specified withsetAttributeValue() forlocation will be used.
See alsosetAttributeValue(),setUniformValue(),enableAttributeArray(), anddisableAttributeArray().
Sets an array of vertexvalues on the attribute atlocation in this shader program. Thestride indicates the number of bytes between vertices. A defaultstride value of zero indicates that the vertices are densely packed invalues.
Thetype indicates the type of elements in thevalues array, usuallyGL_FLOAT,GL_UNSIGNED_BYTE, etc. ThetupleSize indicates the number of components per vertex: 1, 2, 3, or 4.
The array will become active whenenableAttributeArray() is called on thelocation. Otherwise the value specified withsetAttributeValue() forlocation will be used.
ThesetAttributeBuffer() function can be used to set the attribute array to an offset within a vertex buffer.
This function was introduced in Qt 4.7.
See alsosetAttributeValue(),setUniformValue(),enableAttributeArray(),disableAttributeArray(), andsetAttributeBuffer().
This is an overloaded function.
Sets an array of vertexvalues on the attribute calledname in this shader program. ThetupleSize indicates the number of components per vertex (1, 2, 3, or 4), and thestride indicates the number of bytes between vertices. A defaultstride value of zero indicates that the vertices are densely packed invalues.
The array will become active whenenableAttributeArray() is called onname. Otherwise the value specified withsetAttributeValue() forname will be used.
See alsosetAttributeValue(),setUniformValue(),enableAttributeArray(), anddisableAttributeArray().
This is an overloaded function.
Sets an array of 2D vertexvalues on the attribute calledname in this shader program. Thestride indicates the number of bytes between vertices. A defaultstride value of zero indicates that the vertices are densely packed invalues.
The array will become active whenenableAttributeArray() is called onname. Otherwise the value specified withsetAttributeValue() forname will be used.
See alsosetAttributeValue(),setUniformValue(),enableAttributeArray(), anddisableAttributeArray().
This is an overloaded function.
Sets an array of 3D vertexvalues on the attribute calledname in this shader program. Thestride indicates the number of bytes between vertices. A defaultstride value of zero indicates that the vertices are densely packed invalues.
The array will become active whenenableAttributeArray() is called onname. Otherwise the value specified withsetAttributeValue() forname will be used.
See alsosetAttributeValue(),setUniformValue(),enableAttributeArray(), anddisableAttributeArray().
This is an overloaded function.
Sets an array of 4D vertexvalues on the attribute calledname in this shader program. Thestride indicates the number of bytes between vertices. A defaultstride value of zero indicates that the vertices are densely packed invalues.
The array will become active whenenableAttributeArray() is called onname. Otherwise the value specified withsetAttributeValue() forname will be used.
See alsosetAttributeValue(),setUniformValue(),enableAttributeArray(), anddisableAttributeArray().
This is an overloaded function.
Sets an array of vertexvalues on the attribute calledname in this shader program. Thestride indicates the number of bytes between vertices. A defaultstride value of zero indicates that the vertices are densely packed invalues.
Thetype indicates the type of elements in thevalues array, usuallyGL_FLOAT,GL_UNSIGNED_BYTE, etc. ThetupleSize indicates the number of components per vertex: 1, 2, 3, or 4.
The array will become active whenenableAttributeArray() is called on thename. Otherwise the value specified withsetAttributeValue() forname will be used.
ThesetAttributeBuffer() function can be used to set the attribute array to an offset within a vertex buffer.
This function was introduced in Qt 4.7.
See alsosetAttributeValue(),setUniformValue(),enableAttributeArray(),disableAttributeArray(), andsetAttributeBuffer().
Sets an array of vertex values on the attribute atlocation in this shader program, starting at a specificoffset in the currently bound vertex buffer. Thestride indicates the number of bytes between vertices. A defaultstride value of zero indicates that the vertices are densely packed in the value array.
Thetype indicates the type of elements in the vertex value array, usuallyGL_FLOAT,GL_UNSIGNED_BYTE, etc. ThetupleSize indicates the number of components per vertex: 1, 2, 3, or 4.
The array will become active whenenableAttributeArray() is called on thelocation. Otherwise the value specified withsetAttributeValue() forlocation will be used.
This function was introduced in Qt 4.7.
See alsosetAttributeArray().
This is an overloaded function.
Sets an array of vertex values on the attribute calledname in this shader program, starting at a specificoffset in the currently bound vertex buffer. Thestride indicates the number of bytes between vertices. A defaultstride value of zero indicates that the vertices are densely packed in the value array.
Thetype indicates the type of elements in the vertex value array, usuallyGL_FLOAT,GL_UNSIGNED_BYTE, etc. ThetupleSize indicates the number of components per vertex: 1, 2, 3, or 4.
The array will become active whenenableAttributeArray() is called on thename. Otherwise the value specified withsetAttributeValue() forname will be used.
This function was introduced in Qt 4.7.
See alsosetAttributeArray().
Sets the attribute atlocation in the current context tovalue.
See alsosetUniformValue().
Sets the attribute atlocation in the current context to the 2D vector (x,y).
See alsosetUniformValue().
Sets the attribute atlocation in the current context to the 3D vector (x,y,z).
See alsosetUniformValue().
Sets the attribute atlocation in the current context to the 4D vector (x,y,z,w).
See alsosetUniformValue().
Sets the attribute atlocation in the current context tovalue.
See alsosetUniformValue().
Sets the attribute atlocation in the current context tovalue.
See alsosetUniformValue().
Sets the attribute atlocation in the current context tovalue.
See alsosetUniformValue().
Sets the attribute atlocation in the current context tovalue.
See alsosetUniformValue().
Sets the attribute atlocation in the current context to the contents ofvalues, which containscolumns elements, each consisting ofrows elements. Therows value should be 1, 2, 3, or 4. This function is typically used to set matrix values and column vectors.
See alsosetUniformValue().
This is an overloaded function.
Sets the attribute calledname in the current context tovalue.
See alsosetUniformValue().
This is an overloaded function.
Sets the attribute calledname in the current context to the 2D vector (x,y).
See alsosetUniformValue().
This is an overloaded function.
Sets the attribute calledname in the current context to the 3D vector (x,y,z).
See alsosetUniformValue().
This is an overloaded function.
Sets the attribute calledname in the current context to the 4D vector (x,y,z,w).
See alsosetUniformValue().
This is an overloaded function.
Sets the attribute calledname in the current context tovalue.
See alsosetUniformValue().
This is an overloaded function.
Sets the attribute calledname in the current context tovalue.
See alsosetUniformValue().
This is an overloaded function.
Sets the attribute calledname in the current context tovalue.
See alsosetUniformValue().
This is an overloaded function.
Sets the attribute calledname in the current context tovalue.
See alsosetUniformValue().
This is an overloaded function.
Sets the attribute calledname in the current context to the contents ofvalues, which containscolumns elements, each consisting ofrows elements. Therows value should be 1, 2, 3, or 4. This function is typically used to set matrix values and column vectors.
See alsosetUniformValue().
Sets the input type frominputType.
This parameter takes effect the next time the program is linked.
See alsogeometryInputType().
Sets the output type from the geometry shader, if active, tooutputType.
This parameter takes effect the next time the program is linked.
This function was introduced in Qt 4.7.
See alsogeometryOutputType().
Sets the maximum number of vertices the current geometry shader program will produce, if active, tocount.
This parameter takes effect the next time the program is linked.
This function was introduced in Qt 4.7.
See alsogeometryOutputVertexCount().
Sets the uniform variable atlocation in the current context tovalue.
See alsosetAttributeValue().
This is an overloaded function.
Sets the uniform variable associated withname in the current context to the x and y coordinates ofpoint.
See alsosetAttributeValue().
This is an overloaded function.
Sets the uniform variable associated withname in the current context to the width and height of the givensize.
See alsosetAttributeValue().
This is an overloaded function.
Sets the uniform variable associated withname in the current context to the width and height of the givensize.
See alsosetAttributeValue().
This is an overloaded function.
Sets the uniform variable calledname in the current context to a 2x2 matrixvalue.
See alsosetAttributeValue().
This is an overloaded function.
Sets the uniform variable calledname in the current context to a 2x3 matrixvalue.
See alsosetAttributeValue().
This is an overloaded function.
Sets the uniform variable calledname in the current context to a 2x4 matrixvalue.
See alsosetAttributeValue().
This is an overloaded function.
Sets the uniform variable calledname in the current context to a 3x2 matrixvalue.
See alsosetAttributeValue().
This is an overloaded function.
Sets the uniform variable calledname in the current context to a 3x3 matrixvalue.
See alsosetAttributeValue().
This is an overloaded function.
Sets the uniform variable calledname in the current context to a 3x4 matrixvalue.
See alsosetAttributeValue().
This is an overloaded function.
Sets the uniform variable calledname in the current context to a 4x2 matrixvalue.
See alsosetAttributeValue().
This is an overloaded function.
Sets the uniform variable calledname in the current context to a 4x3 matrixvalue.
See alsosetAttributeValue().
This is an overloaded function.
Sets the uniform variable calledname in the current context to a 4x4 matrixvalue.
See alsosetAttributeValue().
This is an overloaded function.
Sets the uniform variable atlocation in the current context to a 2x2 matrixvalue. The matrix elements must be specified in column-major order.
This function was introduced in Qt 4.7.
See alsosetAttributeValue().
This is an overloaded function.
Sets the uniform variable atlocation in the current context to a 3x3 matrixvalue. The matrix elements must be specified in column-major order.
This function was introduced in Qt 4.7.
See alsosetAttributeValue().
This is an overloaded function.
Sets the uniform variable atlocation in the current context to a 4x4 matrixvalue. The matrix elements must be specified in column-major order.
See alsosetAttributeValue().
This is an overloaded function.
Sets the uniform variable calledname in the current context to a 2x2 matrixvalue. The matrix elements must be specified in column-major order.
This function was introduced in Qt 4.7.
See alsosetAttributeValue().
This is an overloaded function.
Sets the uniform variable calledname in the current context to a 3x3 matrixvalue. The matrix elements must be specified in column-major order.
This function was introduced in Qt 4.7.
See alsosetAttributeValue().
This is an overloaded function.
Sets the uniform variable calledname in the current context to a 4x4 matrixvalue. The matrix elements must be specified in column-major order.
See alsosetAttributeValue().
This is an overloaded function.
Sets the uniform variable calledname in the current context to a 3x3 transformation matrixvalue that is specified as aQTransform value.
To set aQTransform value as a 4x4 matrix in a shader, usesetUniformValue(name, QMatrix4x4(value)).
Sets the uniform variable atlocation in the current context tovalue.
See alsosetAttributeValue().
Sets the uniform variable atlocation in the current context tovalue. This function should be used when setting sampler values.
See alsosetAttributeValue().
Sets the uniform variable atlocation in the current context to the 2D vector (x,y).
See alsosetAttributeValue().
Sets the uniform variable atlocation in the current context to the 3D vector (x,y,z).
See alsosetAttributeValue().
Sets the uniform variable atlocation in the current context to the 4D vector (x,y,z,w).
See alsosetAttributeValue().
Sets the uniform variable atlocation in the current context tovalue.
See alsosetAttributeValue().
Sets the uniform variable atlocation in the current context tovalue.
See alsosetAttributeValue().
Sets the uniform variable atlocation in the current context tovalue.
See alsosetAttributeValue().
Sets the uniform variable atlocation in the current context to the red, green, blue, and alpha components ofcolor.
See alsosetAttributeValue().
Sets the uniform variable atlocation in the current context to the x and y coordinates ofpoint.
See alsosetAttributeValue().
Sets the uniform variable atlocation in the current context to the x and y coordinates ofpoint.
See alsosetAttributeValue().
Sets the uniform variable atlocation in the current context to the width and height of the givensize.
See alsosetAttributeValue().
Sets the uniform variable atlocation in the current context to the width and height of the givensize.
See alsosetAttributeValue().
Sets the uniform variable atlocation in the current context to a 2x2 matrixvalue.
See alsosetAttributeValue().
Sets the uniform variable atlocation in the current context to a 2x3 matrixvalue.
See alsosetAttributeValue().
Sets the uniform variable atlocation in the current context to a 2x4 matrixvalue.
See alsosetAttributeValue().
Sets the uniform variable atlocation in the current context to a 3x2 matrixvalue.
See alsosetAttributeValue().
Sets the uniform variable atlocation in the current context to a 3x3 matrixvalue.
See alsosetAttributeValue().
Sets the uniform variable atlocation in the current context to a 3x4 matrixvalue.
See alsosetAttributeValue().
Sets the uniform variable atlocation in the current context to a 4x2 matrixvalue.
See alsosetAttributeValue().
Sets the uniform variable atlocation in the current context to a 4x3 matrixvalue.
See alsosetAttributeValue().
Sets the uniform variable atlocation in the current context to a 4x4 matrixvalue.
See alsosetAttributeValue().
Sets the uniform variable atlocation in the current context to a 3x3 transformation matrixvalue that is specified as aQTransform value.
To set aQTransform value as a 4x4 matrix in a shader, usesetUniformValue(location, QMatrix4x4(value)).
This is an overloaded function.
Sets the uniform variable calledname in the current context tovalue.
See alsosetAttributeValue().
This is an overloaded function.
Sets the uniform variable calledname in the current context tovalue.
See alsosetAttributeValue().
This is an overloaded function.
Sets the uniform variable calledname in the current context tovalue. This function should be used when setting sampler values.
See alsosetAttributeValue().
This is an overloaded function.
Sets the uniform variable calledname in the current context to the 2D vector (x,y).
See alsosetAttributeValue().
This is an overloaded function.
Sets the uniform variable calledname in the current context to the 3D vector (x,y,z).
See alsosetAttributeValue().
This is an overloaded function.
Sets the uniform variable calledname in the current context to the 4D vector (x,y,z,w).
See alsosetAttributeValue().
This is an overloaded function.
Sets the uniform variable calledname in the current context tovalue.
See alsosetAttributeValue().
This is an overloaded function.
Sets the uniform variable calledname in the current context tovalue.
See alsosetAttributeValue().
This is an overloaded function.
Sets the uniform variable calledname in the current context tovalue.
See alsosetAttributeValue().
This is an overloaded function.
Sets the uniform variable calledname in the current context to the red, green, blue, and alpha components ofcolor.
See alsosetAttributeValue().
This is an overloaded function.
Sets the uniform variable associated withname in the current context to the x and y coordinates ofpoint.
See alsosetAttributeValue().
Sets the uniform variable array atlocation in the current context to thecount elements ofvalues. Each element hastupleSize components. ThetupleSize must be 1, 2, 3, or 4.
See alsosetAttributeValue().
Sets the uniform variable array atlocation in the current context to thecount elements ofvalues.
See alsosetAttributeValue().
Sets the uniform variable array atlocation in the current context to thecount elements ofvalues. This overload should be used when setting an array of sampler values.
See alsosetAttributeValue().
Sets the uniform variable array atlocation in the current context to thecount 2D vector elements ofvalues.
See alsosetAttributeValue().
Sets the uniform variable array atlocation in the current context to thecount 3D vector elements ofvalues.
See alsosetAttributeValue().
Sets the uniform variable array atlocation in the current context to thecount 4D vector elements ofvalues.
See alsosetAttributeValue().
Sets the uniform variable array atlocation in the current context to thecount 2x2 matrix elements ofvalues.
See alsosetAttributeValue().
Sets the uniform variable array atlocation in the current context to thecount 2x3 matrix elements ofvalues.
See alsosetAttributeValue().
Sets the uniform variable array atlocation in the current context to thecount 2x4 matrix elements ofvalues.
See alsosetAttributeValue().
Sets the uniform variable array atlocation in the current context to thecount 3x2 matrix elements ofvalues.
See alsosetAttributeValue().
Sets the uniform variable array atlocation in the current context to thecount 3x3 matrix elements ofvalues.
See alsosetAttributeValue().
Sets the uniform variable array atlocation in the current context to thecount 3x4 matrix elements ofvalues.
See alsosetAttributeValue().
Sets the uniform variable array atlocation in the current context to thecount 4x2 matrix elements ofvalues.
See alsosetAttributeValue().
Sets the uniform variable array atlocation in the current context to thecount 4x3 matrix elements ofvalues.
See alsosetAttributeValue().
Sets the uniform variable array atlocation in the current context to thecount 4x4 matrix elements ofvalues.
See alsosetAttributeValue().
This is an overloaded function.
Sets the uniform variable array calledname in the current context to thecount elements ofvalues.
See alsosetAttributeValue().
This is an overloaded function.
Sets the uniform variable array calledname in the current context to thecount elements ofvalues. This overload should be used when setting an array of sampler values.
See alsosetAttributeValue().
This is an overloaded function.
Sets the uniform variable array calledname in the current context to thecount elements ofvalues. Each element hastupleSize components. ThetupleSize must be 1, 2, 3, or 4.
See alsosetAttributeValue().
This is an overloaded function.
Sets the uniform variable array calledname in the current context to thecount 2D vector elements ofvalues.
See alsosetAttributeValue().
This is an overloaded function.
Sets the uniform variable array calledname in the current context to thecount 3D vector elements ofvalues.
See alsosetAttributeValue().
This is an overloaded function.
Sets the uniform variable array calledname in the current context to thecount 4D vector elements ofvalues.
See alsosetAttributeValue().
This is an overloaded function.
Sets the uniform variable array calledname in the current context to thecount 2x2 matrix elements ofvalues.
See alsosetAttributeValue().
This is an overloaded function.
Sets the uniform variable array calledname in the current context to thecount 2x3 matrix elements ofvalues.
See alsosetAttributeValue().
This is an overloaded function.
Sets the uniform variable array calledname in the current context to thecount 2x4 matrix elements ofvalues.
See alsosetAttributeValue().
This is an overloaded function.
Sets the uniform variable array calledname in the current context to thecount 3x2 matrix elements ofvalues.
See alsosetAttributeValue().
This is an overloaded function.
Sets the uniform variable array calledname in the current context to thecount 3x3 matrix elements ofvalues.
See alsosetAttributeValue().
This is an overloaded function.
Sets the uniform variable array calledname in the current context to thecount 3x4 matrix elements ofvalues.
See alsosetAttributeValue().
This is an overloaded function.
Sets the uniform variable array calledname in the current context to thecount 4x2 matrix elements ofvalues.
See alsosetAttributeValue().
This is an overloaded function.
Sets the uniform variable array calledname in the current context to thecount 4x3 matrix elements ofvalues.
See alsosetAttributeValue().
This is an overloaded function.
Sets the uniform variable array calledname in the current context to thecount 4x4 matrix elements ofvalues.
See alsosetAttributeValue().
Returns a list of all shaders that have been added to this shader program usingaddShader().
See alsoaddShader() andremoveShader().
Returns the location of the uniform variablename within this shader program's parameter list. Returns -1 ifname is not a valid uniform variable for this shader program.
See alsoattributeLocation().
This is an overloaded function.
Returns the location of the uniform variablename within this shader program's parameter list. Returns -1 ifname is not a valid uniform variable for this shader program.
See alsoattributeLocation().
This is an overloaded function.
Returns the location of the uniform variablename within this shader program's parameter list. Returns -1 ifname is not a valid uniform variable for this shader program.
See alsoattributeLocation().
© 2016 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of theGNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.