QRhiVertexInputBinding Class

頂点入力バインディングを記述します。詳細...

Header: #include <rhi/qrhi.h>
CMake: find_package(Qt6 REQUIRED COMPONENTS Gui)
target_link_libraries(mytarget PRIVATE Qt6::GuiPrivate)
qmake: QT += gui-private
Since: 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 &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) が、バッファ(または別個のバッファでも可)にノンインターリーブ形式で提供されるとします。2つのバインディングを定義するには、このようにします:

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);

isetVertexInput() の第2引数のインデックスで、startBinding + i で定義されたインデックスが、QRhiVertexInputLayoutbindings ベクトルの対応するエントリのインデックスと一致することに注意してください。

注: ストライドは常に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)

指定された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

stride をバイト数で返します。

setStride()も参照

関連する非メンバ

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

seed を計算の種として使用して、v のハッシュ値を返します。

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

2つのQRhiVertexInputBinding オブジェクトab の値が等しい場合はfalse を返し、そうでない場合はtrue を返す。

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

つのQRhiVertexInputBinding オブジェクトab の値が等しい場合、true を返します。

©2024 The Qt Company Ltd. 本文書に含まれる文書の著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。