QRhiVertexInputBinding Class

Beschreibt eine Vertex-Eingabebindung. Mehr...

Kopfzeile: #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

Öffentliche Typen

enum Classification { PerVertex, PerInstance }

Öffentliche Funktionen

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)

Detaillierte Beschreibung

Gibt den Stride (in Bytes, muss ein Vielfaches von 4 sein), die Klassifizierung und optional die Instanzschrittrate an.

Nehmen wir als Beispiel einen Vertex-Shader mit den folgenden Eingaben an:

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

Nehmen wir weiter an, dass 3 Komponenten-Vertex-Positionen (x, y, z) und 2 Komponenten-Texturkoordinaten (u, v) in einem nicht verschachtelten Format in einem Puffer (oder sogar in getrennten Puffern) bereitgestellt werden. Die Definition von zwei Bindungen könnte dann wie folgt erfolgen:

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

Hier ist nur der Stride von Interesse, da keine Instanzierung verwendet wird. Die Bindungsnummer wird durch den Index des QRhiVertexInputBinding-Elements im Bindungsvektor der QRhiVertexInputLayout angegeben.

Sobald eine Grafikpipeline mit diesem Vertex-Input-Layout gebunden ist, könnten die Vertex-Inputs wie folgt für das Zeichnen eines Würfels mit 36 Scheitelpunkten eingerichtet werden, unter der Annahme, dass wir einen einzigen Puffer mit zuerst den Positionen und dann den Texturkoordinaten haben:

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

Beachten Sie, wie der durch startBinding + i definierte Index, wobei i der Index im zweiten Argument von setVertexInput() ist, mit dem Index des entsprechenden Eintrags im bindings Vektor von QRhiVertexInputLayout übereinstimmt.

Hinweis: Die Schrittweite muss immer ein Vielfaches von 4 sein.

Hinweis: Dies ist eine RHI-API mit begrenzten Kompatibilitätsgarantien, siehe QRhi für Details.

Siehe auch QRhiCommandBuffer::setVertexInput().

Dokumentation der Mitgliedstypen

enum QRhiVertexInputBinding::Classification

Beschreibt die Klassifizierung der Eingabedaten.

KonstanteWertBeschreibung
QRhiVertexInputBinding::PerVertex0Daten sind pro Scheitelpunkt
QRhiVertexInputBinding::PerInstance1Daten sind pro Instanz

Dokumentation der Mitgliedsfunktionen

[constexpr noexcept] QRhiVertexInputBinding::QRhiVertexInputBinding()

Konstruiert eine Beschreibung der Standard-Eingabebindung für Scheitelpunkte.

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

Konstruiert eine Scheitelpunkt-Eingabeverbindungsbeschreibung mit der angegebenen stride, Klassifizierung cls und Instanzschrittrate stepRate.

Hinweis: stepRate ungleich 1 wird nur unterstützt, wenn QRhi::CustomInstanceStepRate als unterstützt gemeldet wird.

QRhiVertexInputBinding::Classification QRhiVertexInputBinding::classification() const

Gibt die Klassifizierung der Eingabedaten zurück.

Siehe auch setClassification().

quint32 QRhiVertexInputBinding::instanceStepRate() const

Gibt die Schrittgeschwindigkeit der Instanz zurück.

Siehe auch setInstanceStepRate().

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

Legt die Klassifizierung der Eingabedaten fest c. Standardmäßig ist dies auf PerVertex eingestellt.

Siehe auch classification().

void QRhiVertexInputBinding::setInstanceStepRate(quint32 rate)

Legt den Instanzschritt rate fest. Standardmäßig ist dieser Wert auf 1 gesetzt.

Siehe auch instanceStepRate().

void QRhiVertexInputBinding::setStride(quint32 s)

Setzt die Schrittweite auf s.

Siehe auch stride().

quint32 QRhiVertexInputBinding::stride() const

Gibt die Schrittweite in Bytes zurück.

Siehe auch setStride().

Verwandte Nicht-Mitglieder

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

Gibt den Hash-Wert für key zurück, wobei seed als Startwert für die Berechnung verwendet wird.

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

Gibt false zurück, wenn die Werte in den beiden Objekten QRhiVertexInputBinding a und b gleich sind; andernfalls wird true zurückgegeben.

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

Gibt true zurück, wenn die Werte in den beiden Objekten QRhiVertexInputBinding a und b gleich sind.

© 2025 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.