QRhiVertexInputBinding 类

描述了一个顶点输入绑定。 了解更多...

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

公共类型

枚举Classification { PerVertex, PerInstance }

公共函数

QRhiVertexInputBinding()
QRhiVertexInputBinding(quint32 stride, QRhiVertexInputBinding::Classification cls = PerVertex, quint32 stepRate = 1)
QRhiVertexInputBinding::Classificationclassification() const
quint32instanceStepRate() const
voidsetClassification(QRhiVertexInputBinding::Classification c)
voidsetInstanceStepRate(quint32 rate)
voidsetStride(quint32 s)
quint32stride() const
size_tqHash(const QRhiVertexInputBinding &v, size_t seed = 0)
booloperator!=(const QRhiVertexInputBinding &a, const QRhiVertexInputBinding &b)
booloperator==(const QRhiVertexInputBinding &a, const QRhiVertexInputBinding &b)

详细描述

指定步长(以字节为单位,必须是 4 的倍数),分类和可选的实例步长率。

例如,假设有一个顶点着色器,具有以下输入

layout(location = 0) in vec4 position;
layout(location = 1) in vec2 texcoord;

现在假设 3 分量顶点位置 (x, y, z) 和 2 分量纹理坐标 (u, v) 以非交错格式存储在缓冲区中(甚至可以是单独的缓冲区)。然后可以这样定义两个绑定

QRhiVertexInputLayout inputLayout;
inputLayout.setBindings({
    { 3 * sizeof(float) },
    { 2 * sizeof(float) }
});

在这里,只有步长是有趣的,因为未使用实例化。绑定编号由 QRhiVertexInputBinding 元素在 QRhiVertexInputLayout 的绑定向量中的索引给出。

一旦绑定了具有此顶点输入布局的图形管线,顶点输入可以像以下这样设置,假设我们有一个单独的缓冲区,首先是位置然后是纹理坐标

const QRhiCommandBuffer::VertexInput vbufBindings[] = {
    { cubeBuf, 0 },
    { cubeBuf, 36 * 3 * sizeof(float) }
};
cb->setVertexInput(0, 2, vbufBindings);

注意由 startBinding + i 定义的索引与在 QRhiVertexInputLayout 的 bindings 向量中相应条目的索引相匹配,其中 isetVertexInput() 的第二个参数中的索引。

注意:步长必须始终是4的倍数。

注意:这是一个具有有限兼容性保证的RHI API,详细信息请参见QRhi

相关内容:QRhiCommandBuffer::setVertexInput()。

成员类型文档

enum QRhiVertexInputBinding::Classification

描述输入数据分类。

常量描述
QRhiVertexInputBinding::PerVertex0每顶点数据
QRhiVertexInputBinding::PerInstance1每实例数据

成员函数文档

[constexpr noexcept] QRhiVertexInputBinding::QRhiVertexInputBinding()

构建默认的顶点输入绑定描述。

QRhiVertexInputBinding::QRhiVertexInputBinding(quint32 stride, QRhiVertexInputBinding::Classification cls = PerVertex, quint32 stepRate = 1)

构建具有指定步长、分类cls和实例步ratestepRate的顶点输入绑定描述。

注意:除1之外的stepRate仅在报告支持QRhi::CustomInstanceStepRate时受支持。

QRhiVertexInputBinding::Classification QRhiVertexInputBinding::classification() const

返回输入数据分类。

相关内容:setClassification()。

quint32 QRhiVertexInputBinding::instanceStepRate() const

返回实例步率。

相关内容:setInstanceStepRate()。

void QRhiVertexInputBinding::setClassification(QRhiVertexInputBinding::Classification c)

设置输入数据分类c。默认设置为PerVertex

相关内容:classification()。

void QRhiVertexInputBinding::setInstanceStepRate(quint32 rate)

设置实例步率rate。默认设置为1。

相关内容:instanceStepRate()。

void QRhiVertexInputBinding::setStride(quint32 s)

将步长设置为s

相关内容:stride()。

quint32 QRhiVertexInputBinding::stride() const

以字节为单位返回步长。

相关内容:setStride()。

相关非成员属性

[noexcept] size_t qHash(const QRhiVertexInputBinding &v, size_t seed = 0)

返回 v 的哈希值,使用 seed 来计算。

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

如果两个 QRhiVertexInputBinding 对象 a b 的值相等,则返回 false;否则返回 true

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

如果两个 QRhiVertexInputBinding 对象 a b 的值相等,则返回 true

© 2024 Qt 公司。本文件中包含的贡献文档的版权归其各自的拥有者。本文件提供的文档受 GNU 自由文档许可协议第 1.3 版 的条款约束,由自由软件基金会发布。Qt及其相关标志是芬兰和/或其他国家的 The Qt Company Ltd. 的商标。所有其他商标均为其各自拥有者的财产。