QRhiShaderStage 类
指定了管线中着色器阶段的类型和着色器代码。 更多...
头文件 | #include <QRhiShaderStage> |
CMake | find_package(Qt6 REQUIRED COMPONENTS Gui) target_link_libraries(mytarget PRIVATE Qt6::Gui) |
qmake | QT += gui |
自 | Qt 6.6 |
公共类型
枚举 | 类型 { Vertex, TessellationControl, TessellationEvaluation, Fragment, Compute, Geometry } |
公共函数
QRhiShaderStage() | |
QRhiShaderStage(QRhiShaderStage::Type 类型, const QShader &着色器, QShader::Variant 变体 = QShader::StandardShader) | |
void | setShader(const QShader &着色器) |
void | setShaderVariant(QShader::Variant 变体) |
void | setType(QRhiShaderStage::Type 类型) |
QShader | shader() const |
QShader::Variant | shaderVariant() const |
QRhiShaderStage::Type | type() const |
相关非成员
size_t | qHash(const QRhiShaderStage &变量, size_t 种子 = 0) |
bool | 操作符!=(const QRhiShaderStage &a, const QRhiShaderStage &b) |
bool | 操作符==(const QRhiShaderStage &a, const QRhiShaderStage &b) |
详细描述
设置 QRhiGraphicsPipeline 时,会指定一组着色器阶段。QRhiShaderStage 包含一个 QShader 和一些相关元数据,例如图形管线阶段和要选择的 着色器变体。不需要指定着色器语言或版本,因为运行时使用的 QRhi 后端会负责从 QShader 中的集合中选择合适的着色器版本。
典型用法是与 QRhiGraphicsPipeline::setShaderStages 结合使用,在此处使用简单方法从离线或构建时生成的 .qsb
文件中加载 QShader
QShader getShader(const QString &name) { QFile f(name); return f.open(QIODevice::ReadOnly) ? QShader::fromSerialized(f.readAll()) : QShader(); } QShader vs = getShader("material.vert.qsb"); QShader fs = getShader("material.frag.qsb"); pipeline->setShaderStages({ { QRhiShaderStage::Vertex, vs }, { QRhiShaderStage::Fragment, fs } });
注意:这是一个具有有限兼容性保证的 RHI API,有关详细信息,请参阅 QRhi。
成员类型文档
枚举 QRhiShaderStage::Type
指定着色器阶段的类型。
常量 | 值 | 描述 |
---|---|---|
QRhiShaderStage::Vertex | 0 | 顶点阶段 |
QRhiShaderStage::TessellationControl | 1 | 剖分控制(海蜇着色器)阶段。必须在支持QRhi::Tessellation功能时使用。 |
QRhiShaderStage::TessellationEvaluation | 2 | 剖分评估(域着色器)阶段。必须在支持QRhi::Tessellation功能时使用。 |
QRhiShaderStage::Fragment | 4 | 片段(像素着色器)阶段 |
QRhiShaderStage::Compute | 5 | 计算阶段。必须在支持QRhi::Compute功能时使用。 |
QRhiShaderStage::Geometry | 3 | 几何阶段。必须在支持QRhi::GeometryShader功能时使用。 |
成员函数文档
[noexcept]
QRhiShaderStage::QRhiShaderStage()
使用空QShader构造顶点阶段的着色器阶段描述。
QRhiShaderStage::QRhiShaderStage(QRhiShaderStage::Type type, const QShader &shader, QShader::Variant v = QShader::StandardShader)
使用阶段的type和shader构造着色器阶段描述。
着色器变体v默认为QShader::StandardShader。一个QShader包含多个着色器的源和二进制版本。此外,它还可以包含略微修改过的着色器变体。v可以用来选择所需的变体。
void QRhiShaderStage::setShader(const QShader &s)
设置着色器集合s。
另请参阅shader()。
void QRhiShaderStage::setShaderVariant(QShader::Variant v)
设置请求的着色器变体v。
另请参阅shaderVariant。
void QRhiShaderStage::setType(QRhiShaderStage::Type t)
将阶段的类型设置为t。在实际应用中,很少需要设置器。大多数应用程序很可能在最常见的情况下使用QRhiShaderStage构造函数。
另请参阅type。
QShader QRhiShaderStage::shader() const
返回用于图形管道此阶段的QShader。
另请参阅setShader。
QShader::Variant QRhiShaderStage::shaderVariant() const
返回请求的着色器变体。
另请参阅setShaderVariant。
QRhiShaderStage::Type QRhiShaderStage::type() const
返回此阶段的类型。
另请参阅setType().
相关非成员
[noexcept]
size_t qHash(const QRhiShaderStage &v, size_t seed = 0)
返回对象 v 的哈希值,使用 seed 作为计算种子。
[noexcept]
bool operator!=(const QRhiShaderStage &a, const QRhiShaderStage &b)
如果两个 QRhiShaderStage 对象 a 和 b 的值相等,则返回 false
;否则返回 true
。
[noexcept]
bool operator==(const QRhiShaderStage &a, const QRhiShaderStage &b)
如果两个 QRhiShaderStage 对象 a 和 b 的值相等,则返回 true
。
© 2024 The Qt Company Ltd. 本文档中包含的文档贡献者的版权属于各自的所有者。本说明文档是根据自由软件基金会公布、自由软件基金会出版的 GNU自由文档许可证版本1.3条款 许可的。Qt及其相关标志是芬兰及其它国家/地区的 The Qt Company Ltd. 的 商标。所有其他商标均属于它们各自的所有者。