QShaderProgram Class

(Qt3DRender::QShaderProgram)

Encapsulates a Shader Program. More...

Header: #include <QShaderProgram>
qmake: QT += 3drender
Since: Qt 5.5
Instantiated By: ShaderProgram
Inherits: Qt3DCore::QNode

Public Types

enum ShaderType { Vertex, Fragment, TessellationControl, TessellationEvaluation, Geometry, Compute }
enum Status { NotReady, Ready, Error }

Properties

Public Functions

QShaderProgram(Qt3DCore::QNode *parent = nullptr)
~QShaderProgram()
QByteArray computeShaderCode() const
QByteArray fragmentShaderCode() const
QByteArray geometryShaderCode() const
QString log() const
void setShaderCode(ShaderType type, const QByteArray &shaderCode)
QByteArray shaderCode(ShaderType type) const
Status status() const
QByteArray tessellationControlShaderCode() const
QByteArray tessellationEvaluationShaderCode() const
QByteArray vertexShaderCode() const

Public Slots

void setComputeShaderCode(const QByteArray &computeShaderCode)
void setFragmentShaderCode(const QByteArray &fragmentShaderCode)
void setGeometryShaderCode(const QByteArray &geometryShaderCode)
void setTessellationControlShaderCode(const QByteArray &tessellationControlShaderCode)
void setTessellationEvaluationShaderCode(const QByteArray &tessellationEvaluationShaderCode)
void setVertexShaderCode(const QByteArray &vertexShaderCode)

Signals

void computeShaderCodeChanged(const QByteArray &computeShaderCode)
void fragmentShaderCodeChanged(const QByteArray &fragmentShaderCode)
void geometryShaderCodeChanged(const QByteArray &geometryShaderCode)
void logChanged(const QString &log)
void statusChanged(Status status)
void tessellationControlShaderCodeChanged(const QByteArray &tessellationControlShaderCode)
void tessellationEvaluationShaderCodeChanged(const QByteArray &tessellationEvaluationShaderCode)
void vertexShaderCodeChanged(const QByteArray &vertexShaderCode)

Static Public Members

QByteArray loadSource(const QUrl &sourceUrl)
  • 11 static public members inherited from QObject

Protected Functions

QShaderProgram(QShaderProgramPrivate &dd, Qt3DCore::QNode *parent = nullptr)
void sceneChangeEvent(const Qt3DCore::QSceneChangePtr &change)

Detailed Description

Encapsulates a Shader Program.

A shader program consists of several different shaders, such as vertex and fragment shaders.

Member Type Documentation

enum QShaderProgram::ShaderType

This enum identifies the type of shader used.

ConstantValueDescription
Qt3DRender::QShaderProgram::Vertex0Vertex shader
Qt3DRender::QShaderProgram::Fragment1Fragment shader
Qt3DRender::QShaderProgram::TessellationControl2Tesselation control shader
Qt3DRender::QShaderProgram::TessellationEvaluation3Tesselation evaluation shader
Qt3DRender::QShaderProgram::Geometry4Geometry shader
Qt3DRender::QShaderProgram::Compute5Compute shader

enum QShaderProgram::Status

Property Documentation

computeShaderCode : QByteArray

Holds the compute shader code used by this shader program.

Access functions:

QByteArray computeShaderCode() const
void setComputeShaderCode(const QByteArray &computeShaderCode)

Notifier signal:

void computeShaderCodeChanged(const QByteArray &computeShaderCode)

fragmentShaderCode : QByteArray

Holds the fragment shader code used by this shader program.

Access functions:

QByteArray fragmentShaderCode() const
void setFragmentShaderCode(const QByteArray &fragmentShaderCode)

Notifier signal:

void fragmentShaderCodeChanged(const QByteArray &fragmentShaderCode)

geometryShaderCode : QByteArray

Holds the geometry shader code used by this shader program.

Access functions:

QByteArray geometryShaderCode() const
void setGeometryShaderCode(const QByteArray &geometryShaderCode)

Notifier signal:

void geometryShaderCodeChanged(const QByteArray &geometryShaderCode)

log : const QString

Holds the log of the current shader program. This is useful to diagnose a compilation failure of the shader program.

Access functions:

QString log() const

Notifier signal:

void logChanged(const QString &log)

status : const Status

Holds the status of the current shader program.

Access functions:

Status status() const

Notifier signal:

void statusChanged(Status status)

tessellationControlShaderCode : QByteArray

Holds the tesselation control shader code used by this shader program.

Access functions:

QByteArray tessellationControlShaderCode() const
void setTessellationControlShaderCode(const QByteArray &tessellationControlShaderCode)

Notifier signal:

void tessellationControlShaderCodeChanged(const QByteArray &tessellationControlShaderCode)

tessellationEvaluationShaderCode : QByteArray

Holds the tesselation evaluation shader code used by this shader program.

Access functions:

QByteArray tessellationEvaluationShaderCode() const
void setTessellationEvaluationShaderCode(const QByteArray &tessellationEvaluationShaderCode)

Notifier signal:

void tessellationEvaluationShaderCodeChanged(const QByteArray &tessellationEvaluationShaderCode)

vertexShaderCode : QByteArray

Holds the vertex shader code used by this shader program.

Access functions:

QByteArray vertexShaderCode() const
void setVertexShaderCode(const QByteArray &vertexShaderCode)

Notifier signal:

void vertexShaderCodeChanged(const QByteArray &vertexShaderCode)

Member Function Documentation

QShaderProgram::QShaderProgram(Qt3DCore::QNode *parent = nullptr)

Default constructs an instance of QShaderProgram.

[protected] QShaderProgram::QShaderProgram(QShaderProgramPrivate &dd, Qt3DCore::QNode *parent = nullptr)

Copy constructor.

QShaderProgram::~QShaderProgram()

Destroys the instance of QShaderProgram.

[static] QByteArray QShaderProgram::loadSource(const QUrl &sourceUrl)

Returns the shader code loaded from sourceUrl.

[protected] void QShaderProgram::sceneChangeEvent(const Qt3DCore::QSceneChangePtr &change)

void QShaderProgram::setShaderCode(ShaderType type, const QByteArray &shaderCode)

Sets the shader code for type of shader to the shaderCode.

See also shaderCode().

QByteArray QShaderProgram::shaderCode(ShaderType type) const

Returns the shader code for type.

See also setShaderCode().

© 2017 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 the GNU 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.