QRhiVertexInputBinding 类
描述了一个顶点输入绑定。 了解更多...
| 头文件 | #include <QRhiVertexInputBinding> | 
| CMake | find_package(Qt6 REQUIRED COMPONENTS Gui) target_link_libraries(mytarget PRIVATE Qt6::Gui) | 
| qmake | QT += gui | 
| 自 | Qt 6.6 | 
公共类型
| 枚举 | Classification { PerVertex, PerInstance } | 
公共函数
| QRhiVertexInputBinding() | |
| QRhiVertexInputBinding(quint32 stride, QRhiVertexInputBinding::Classification cls = PerVertex, quint32 stepRate = 1) | |
| QRhiVertexInputBinding::Classification | classification() const | 
| quint32 | instanceStepRate() const | 
| void | setClassification(QRhiVertexInputBinding::Classification c) | 
| void | setInstanceStepRate(quint32 rate) | 
| void | setStride(quint32 s) | 
| quint32 | stride() const | 
相关非成员
| size_t | qHash(const QRhiVertexInputBinding &v, size_t seed = 0) | 
| bool | operator!=(const QRhiVertexInputBinding &a, const QRhiVertexInputBinding &b) | 
| bool | operator==(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 向量中相应条目的索引相匹配,其中 i 是 setVertexInput() 的第二个参数中的索引。
注意:步长必须始终是4的倍数。
注意:这是一个具有有限兼容性保证的RHI API,详细信息请参见QRhi。
相关内容:QRhiCommandBuffer::setVertexInput()。
成员类型文档
enum QRhiVertexInputBinding::Classification
描述输入数据分类。
| 常量 | 值 | 描述 | 
|---|---|---|
| QRhiVertexInputBinding::PerVertex | 0 | 每顶点数据 | 
| QRhiVertexInputBinding::PerInstance | 1 | 每实例数据 | 
成员函数文档
[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. 的商标。所有其他商标均为其各自拥有者的财产。