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 |
Verwandte Nicht-Mitglieder
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.
Konstante | Wert | Beschreibung |
---|---|---|
QRhiVertexInputBinding::PerVertex | 0 | Daten sind pro Scheitelpunkt |
QRhiVertexInputBinding::PerInstance | 1 | Daten 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.