QOpenGLShader类
QOpenGLShader类允许编译OpenGL着色器。 更多...
头文件 | #include <QOpenGLShader> |
CMake | find_package(Qt6 REQUIRED COMPONENTS OpenGL) target_link_libraries(mytarget PRIVATE Qt6::OpenGL) |
qmake | QT += opengl |
继承 | QObject |
- 包括继承成员在内的所有成员列表
- QOpenGLShader是3D渲染的一部分。
公共类型
flags | ShaderType |
枚举 | ShaderTypeBit { Vertex, Fragment, Geometry, TessellationControl, TessellationEvaluation, Compute } |
公共函数
QOpenGLShader(QOpenGLShader::ShaderType type, QObject *parent = nullptr) | |
虚拟 | ~QOpenGLShader() |
bool | compileSourceCode(const char *source) |
bool | compileSourceCode(const QByteArray &source) |
bool | compileSourceCode(const QString &source) |
bool | compileSourceFile(const QString &fileName) |
bool | isCompiled() const |
QString | log() const |
GLuint | shaderId() const |
QOpenGLShader::ShaderType | shaderType() const |
QByteArray | sourceCode() const |
静态公共成员
bool | hasOpenGLShaders(QOpenGLShader::ShaderType type, QOpenGLContext *context = nullptr) |
详细描述
此类支持使用OpenGL着色语言(GLSL)和OpenGL/ES着色语言(GLSL/ES)编写的着色器。
QOpenGLShader和QOpenGLShaderProgram隐藏了编译和链接顶点和片段着色器的细节。
另请参阅QOpenGLShaderProgram.
成员类型文档
枚举QOpenGLShader::ShaderTypeBit
标志QOpenGLShader::ShaderType
此枚举指定正在创建的QOpenGLShader的类型。
常数 | 值 | 描述 |
---|---|---|
QOpenGLShader::Vertex | 0x0001 | 使用OpenGL着色语言(GLSL)编写的顶点着色器。 |
QOpenGLShader::Fragment | 0x0002 | 使用OpenGL着色语言(GLSL)编写的片段着色器。 |
QOpenGLShader::Geometry | 0x0004 | 使用OpenGL着色语言(GLSL)编写的几何着色器(需要OpenGL >= 3.2或OpenGL ES >= 3.2)。 |
QOpenGLShader::TessellationControl | 0x0008 | 使用OpenGL着色语言(GLSL)编写的细分控制着色器(需要OpenGL >= 4.0或OpenGL ES >= 3.2)。 |
QOpenGLShader::TessellationEvaluation | 0x0010 | 使用OpenGL着色语言(GLSL)编写的细分评估着色器(需要OpenGL >= 4.0或OpenGL ES >= 3.2)。 |
QOpenGLShader::Compute | 0x0020 | 使用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扩展。如果context是nullptr
,则使用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 的商标。所有其他商标均为其各自所有者的财产。