本页内容

QRhiVertexInputBinding Class

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

头文件: #include <rhi/qrhi.h>
CMake: find_package(Qt6 REQUIRED COMPONENTS GuiPrivate)
target_link_libraries(mytarget PRIVATE Qt6::GuiPrivate)
qmake: QT += gui-private
自: Qt 6.6

公共类型

enum 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 &key, 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) }
});

由于未使用实例化,此处仅需关注步长。绑定编号由QRhiVertexInputLayout 的绑定向量中 QRhiVertexInputBinding 元素的索引决定。

一旦绑定了具有此顶点输入布局的图形管道,即可按如下方式设置顶点输入以绘制一个具有 36 个顶点的立方体(假设我们有一个单一缓冲区,其中首先存储位置数据,随后是纹理坐标):

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

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

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

注意:这是一个 兼容性保证有限的 RHI API,详情请参见QRhi 。

另请参阅 QRhiCommandBuffer::setVertexInput()。

成员类型文档

enum QRhiVertexInputBinding::Classification

描述了输入数据的分类。

常量值描述
QRhiVertexInputBinding::PerVertex0数据按顶点提供
QRhiVertexInputBinding::PerInstance1数据按实例提供

成员函数文档

[constexpr noexcept default] QRhiVertexInputBinding::QRhiVertexInputBinding()

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

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

根据指定的stride 、分类cls 以及实例步进率stepRate ,构建一个顶点输入绑定描述。

注意: 仅当报告支持QRhi::CustomInstanceStepRate 时,才支持不为1的stepRate 。

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 &key, size_t seed = 0)

返回key 的哈希值,并使用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 。

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.