QRhiShaderStage 类

指定了管线中着色器阶段的类型和着色器代码。 更多...

头文件 #include <QRhiShaderStage>
CMakefind_package(Qt6 REQUIRED COMPONENTS Gui)
target_link_libraries(mytarget PRIVATE Qt6::Gui)
qmakeQT += gui
Qt 6.6

公共类型

枚举类型 { Vertex, TessellationControl, TessellationEvaluation, Fragment, Compute, Geometry }

公共函数

QRhiShaderStage()
QRhiShaderStage(QRhiShaderStage::Type 类型, const QShader &着色器, QShader::Variant 变体 = QShader::StandardShader)
voidsetShader(const QShader &着色器)
voidsetShaderVariant(QShader::Variant 变体)
voidsetType(QRhiShaderStage::Type 类型)
QShadershader() const
QShader::VariantshaderVariant() const
QRhiShaderStage::Typetype() const
size_tqHash(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::Vertex0顶点阶段
QRhiShaderStage::TessellationControl1剖分控制(海蜇着色器)阶段。必须在支持QRhi::Tessellation功能时使用。
QRhiShaderStage::TessellationEvaluation2剖分评估(域着色器)阶段。必须在支持QRhi::Tessellation功能时使用。
QRhiShaderStage::Fragment4片段(像素着色器)阶段
QRhiShaderStage::Compute5计算阶段。必须在支持QRhi::Compute功能时使用。
QRhiShaderStage::Geometry3几何阶段。必须在支持QRhi::GeometryShader功能时使用。

成员函数文档

[noexcept] QRhiShaderStage::QRhiShaderStage()

使用空QShader构造顶点阶段的着色器阶段描述。

QRhiShaderStage::QRhiShaderStage(QRhiShaderStage::Type type, const QShader &shader, QShader::Variant v = QShader::StandardShader)

使用阶段的typeshader构造着色器阶段描述。

着色器变体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 对象 ab 的值相等,则返回 false;否则返回 true

[noexcept] bool operator==(const QRhiShaderStage &a, const QRhiShaderStage &b)

如果两个 QRhiShaderStage 对象 ab 的值相等,则返回 true

© 2024 The Qt Company Ltd. 本文档中包含的文档贡献者的版权属于各自的所有者。本说明文档是根据自由软件基金会公布、自由软件基金会出版的 GNU自由文档许可证版本1.3条款 许可的。Qt及其相关标志是芬兰及其它国家/地区的 The Qt Company Ltd. 的 商标。所有其他商标均属于它们各自的所有者。