QOpenGLShader类

QOpenGLShader类允许编译OpenGL着色器。 更多...

头文件 #include <QOpenGLShader>
CMakefind_package(Qt6 REQUIRED COMPONENTS OpenGL)
target_link_libraries(mytarget PRIVATE Qt6::OpenGL)
qmakeQT += opengl
继承 QObject

公共类型

flagsShaderType
枚举ShaderTypeBit { Vertex, Fragment, Geometry, TessellationControl, TessellationEvaluation, Compute }

公共函数

QOpenGLShader(QOpenGLShader::ShaderType type, QObject *parent = nullptr)
虚拟~QOpenGLShader()
boolcompileSourceCode(const char *source)
boolcompileSourceCode(const QByteArray &source)
boolcompileSourceCode(const QString &source)
boolcompileSourceFile(const QString &fileName)
boolisCompiled() const
QStringlog() const
GLuintshaderId() const
QOpenGLShader::ShaderTypeshaderType() const
QByteArraysourceCode() const

静态公共成员

boolhasOpenGLShaders(QOpenGLShader::ShaderType type, QOpenGLContext *context = nullptr)

详细描述

此类支持使用OpenGL着色语言(GLSL)和OpenGL/ES着色语言(GLSL/ES)编写的着色器。

QOpenGLShader和QOpenGLShaderProgram隐藏了编译和链接顶点和片段着色器的细节。

另请参阅QOpenGLShaderProgram.

成员类型文档

枚举QOpenGLShader::ShaderTypeBit
标志QOpenGLShader::ShaderType

此枚举指定正在创建的QOpenGLShader的类型。

常数描述
QOpenGLShader::Vertex0x0001使用OpenGL着色语言(GLSL)编写的顶点着色器。
QOpenGLShader::Fragment0x0002使用OpenGL着色语言(GLSL)编写的片段着色器。
QOpenGLShader::Geometry0x0004使用OpenGL着色语言(GLSL)编写的几何着色器(需要OpenGL >= 3.2或OpenGL ES >= 3.2)。
QOpenGLShader::TessellationControl0x0008使用OpenGL着色语言(GLSL)编写的细分控制着色器(需要OpenGL >= 4.0或OpenGL ES >= 3.2)。
QOpenGLShader::TessellationEvaluation0x0010使用OpenGL着色语言(GLSL)编写的细分评估着色器(需要OpenGL >= 4.0或OpenGL ES >= 3.2)。
QOpenGLShader::Compute0x0020使用OpenGL着色语言(GLSL)编写的计算着色器(需要OpenGL >= 4.3或OpenGL ES >= 3.1)。

ShaderType类型是QFlags<ShaderTypeBit>的typedef示例。它存储ShaderTypeBit值的或组合。

成员函数文档

[显式构造函数] QOpenGLShader::QOpenGLShader(QOpenGLShader::ShaderType type, QObject *parent = nullptr)

构建一个指定type的QOpenGLShader对象并将其附加到parent上。如果不受支持的着色程序,则QOpenGLShaderProgram::hasOpenGLShaderPrograms()将返回false。

此构造函数通常后面跟着对compileSourceCode()compileSourceFile()的调用。

着色器将与当前QOpenGLContext关联。

另请参阅compileSourceCode() 和 compileSourceFile()。

[虚函数,无异常] QOpenGLShader::~QOpenGLShader()

删除此着色器。如果着色器已附加到QOpenGLShaderProgram对象,则实际着色器将保持存在直到QOpenGLShaderProgram被销毁。

bool QOpenGLShader::compileSourceCode(const char *source)

为此着色器设置source代码并将其编译。如果源代码成功编译则返回true,否则返回false。

另请参阅compileSourceFile()。

bool QOpenGLShader::compileSourceCode(const QByteArray &source)

这是一个重载函数。

为此着色器设置source代码并将其编译。如果源代码成功编译则返回true,否则返回false。

另请参阅compileSourceFile()。

bool QOpenGLShader::compileSourceCode(const QString &source)

这是一个重载函数。

为此着色器设置source代码并将其编译。如果源代码成功编译则返回true,否则返回false。

另请参阅compileSourceFile()。

bool QOpenGLShader::compileSourceFile(const QString &fileName)

将此着色器的源代码设置为文件fileName的内容,并编译它。如果文件可以打开并且源代码可以编译则返回true,否则返回false。

另请参阅compileSourceCode()。

[静态] bool QOpenGLShader::hasOpenGLShaders(QOpenGLShader::ShaderType type, QOpenGLContext *context = nullptr)

如果此系统支持类型为type的着色程序,则返回true;否则返回false。

context用于解决GLSL扩展。如果contextnullptr,则使用QOpenGLContext::currentContext()。

bool QOpenGLShader::isCompiled() const

如果此着色器已编译则返回 true;否则返回 false。

另请参阅compileSourceCode() 和 compileSourceFile()。

QString QOpenGLShader::log() const

返回上次编译过程中发生的错误和警告。

另请参阅compileSourceCode() 和 compileSourceFile()。

GLuint QOpenGLShader::shaderId() const

返回与该着色器关联的 OpenGL 标识符。

另请参阅 QOpenGLShaderProgram::programId().

QOpenGLShader::ShaderType QOpenGLShader::shaderType() const

返回此着色器的类型。

QByteArray QOpenGLShader::sourceCode() const

返回此着色器的源代码。

另请参阅compileSourceCode()。

© 2024 The Qt Company Ltd. 本文档中的文档贡献为各自所有者的版权。提供的文档根据自由软件基金会发布的 GNU 自由文档许可证版本 1.3 的条款授予许可。Qt 及其相关标识为芬兰及/或其他国家的 The Qt Company Ltd 的商标。所有其他商标均为其各自所有者的财产。