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. 的商标。所有其他商标均为其各自拥有者的财产。