QRhiVertexInputAttribute Class
Décrit un seul élément d'entrée de sommet. Plus d'informations...
| En-tête : | #include <rhi/qrhi.h> |
| CMake : | find_package(Qt6 REQUIRED COMPONENTS GuiPrivate)target_link_libraries(mytarget PRIVATE Qt6::GuiPrivate) |
| qmake : | QT += gui-private |
| Depuis : | Qt 6.6 |
Types publics
| enum | Format { Float4, Float3, Float2, Float, UNormByte4, …, SShort } |
Fonctions publiques
| QRhiVertexInputAttribute() | |
| QRhiVertexInputAttribute(int binding, int location, QRhiVertexInputAttribute::Format format, quint32 offset, int matrixSlice = -1) | |
| int | binding() const |
| QRhiVertexInputAttribute::Format | format() const |
| int | location() const |
| int | matrixSlice() const |
| quint32 | offset() const |
| void | setBinding(int b) |
| void | setFormat(QRhiVertexInputAttribute::Format f) |
| void | setLocation(int loc) |
| void | setMatrixSlice(int slice) |
| void | setOffset(quint32 ofs) |
Non-membres apparentés
| size_t | qHash(const QRhiVertexInputAttribute &key, size_t seed = 0) |
| bool | operator!=(const QRhiVertexInputAttribute &a, const QRhiVertexInputAttribute &b) |
| bool | operator==(const QRhiVertexInputAttribute &a, const QRhiVertexInputAttribute &b) |
Description détaillée
Les membres spécifient le numéro de liaison, l'emplacement, le format et le décalage d'un seul élément d'entrée de vertex.
Remarque : pour HLSL, on suppose que le vertex shader traduit de SPIR-V utilise TEXCOORD<location> comme sémantique pour chaque entrée. Il n'y a donc pas de nom sémantique et d'index séparés.
À titre d'exemple, supposons un nuanceur de sommets avec les entrées suivantes :
layout(location = 0) in vec4 position; layout(location = 1) in vec2 texcoord;
Supposons maintenant que nous ayons des positions de vertex à 3 composants (x, y, z) et des coordonnées de texture à 2 composants (u, v) qui sont fournis dans un format non entrelacé dans un tampon (ou même des tampons séparés). Une fois que deux liaisons sont définies, les attributs peuvent être spécifiés comme suit :
QRhiVertexInputLayout inputLayout; inputLayout.setBindings({ { 3 * sizeof(float) }, { 2 * sizeof(float) } }); inputLayout.setAttributes({ { 0, 0, QRhiVertexInputAttribute::Float3, 0 }, { 1, 1, QRhiVertexInputAttribute::Float2, 0 } });
Une fois qu'un pipeline graphique avec cette disposition d'entrée de vertex est lié, les entrées de vertex peuvent être configurées comme suit pour dessiner un cube avec 36 sommets, en supposant que nous ayons un seul tampon avec d'abord les positions et ensuite les coordonnées de texture :
const QRhiCommandBuffer::VertexInput vbufBindings[] = { { cubeBuf, 0 }, { cubeBuf, 36 * 3 * sizeof(float) } }; cb->setVertexInput(0, 2, vbufBindings);
Lorsque l'on travaille avec des données entrelacées, il n'y a généralement qu'une seule liaison, avec plusieurs attributs se référant au même point de liaison du tampon :
QRhiVertexInputLayout inputLayout; inputLayout.setBindings({ { 5 * sizeof(float) } }); inputLayout.setAttributes({ { 0, 0, QRhiVertexInputAttribute::Float3, 0 }, { 0, 1, QRhiVertexInputAttribute::Float2, 3 * sizeof(float) } });
et ensuite :
const QRhiCommandBuffer::VertexInput vbufBinding(interleavedCubeBuf, 0); cb->setVertexInput(0, 1, &vbufBinding);
Remarque : il s'agit d'une API RHI avec des garanties de compatibilité limitées, voir QRhi pour plus de détails.
Voir également QRhiCommandBuffer::setVertexInput().
Documentation sur les types de membres
enum QRhiVertexInputAttribute::Format
Spécifie le type de données de l'élément.
| Constante | Valeur | Description de l'élément |
|---|---|---|
QRhiVertexInputAttribute::Float4 | 0 | Vecteur flottant à quatre composantes |
QRhiVertexInputAttribute::Float3 | 1 | Vecteur flottant à trois composantes |
QRhiVertexInputAttribute::Float2 | 2 | Vecteur flottant à deux composantes |
QRhiVertexInputAttribute::Float | 3 | Flottant |
QRhiVertexInputAttribute::UNormByte4 | 4 | Vecteur d'octets non signés normalisés à quatre composantes |
QRhiVertexInputAttribute::UNormByte2 | 5 | Vecteur d'octets non signés normalisés à deux composantes |
QRhiVertexInputAttribute::UNormByte | 6 | Octet non signé normalisé |
QRhiVertexInputAttribute::UInt4 | 7 | Vecteur d'entiers non signés à quatre composantes |
QRhiVertexInputAttribute::UInt3 | 8 | Vecteur d'entiers non signés à trois composantes |
QRhiVertexInputAttribute::UInt2 | 9 | Vecteur d'entiers non signés à deux composantes |
QRhiVertexInputAttribute::UInt | 10 | Entier non signé |
QRhiVertexInputAttribute::SInt4 | 11 | Vecteur d'entiers signés à quatre composantes |
QRhiVertexInputAttribute::SInt3 | 12 | Vecteur d'entiers signés à trois composantes |
QRhiVertexInputAttribute::SInt2 | 13 | Vecteur d'entiers signés à deux composantes |
QRhiVertexInputAttribute::SInt | 14 | Entier signé |
QRhiVertexInputAttribute::Half4 | 15 | Vecteur flottant de demi-précision à quatre composantes (16 bits) |
QRhiVertexInputAttribute::Half3 | 16 | Vecteur flottant de demi-précision à trois composantes (16 bits) |
QRhiVertexInputAttribute::Half2 | 17 | Vecteur flottant de demi-précision à deux composantes (16 bits) |
QRhiVertexInputAttribute::Half | 18 | Vecteur de demi-précision (16 bits) flottant |
QRhiVertexInputAttribute::UShort4 | 19 | Vecteur entier non signé à quatre composantes (16 bits) |
QRhiVertexInputAttribute::UShort3 | 20 | Vecteur de nombres entiers courts non signés à trois composantes (16 bits) |
QRhiVertexInputAttribute::UShort2 | 21 | Vecteur entier court non signé à deux composantes (16 bits) |
QRhiVertexInputAttribute::UShort | 22 | Vecteur entier court non signé (16 bits) |
QRhiVertexInputAttribute::SShort4 | 23 | Vecteur d'entiers courts signés à quatre composantes (16 bits) |
QRhiVertexInputAttribute::SShort3 | 24 | Vecteur de nombres entiers courts signés à trois composantes (16 bits) |
QRhiVertexInputAttribute::SShort2 | 25 | Vecteur de nombres entiers courts signés à deux composantes (16 bits) |
QRhiVertexInputAttribute::SShort | 26 | Entier court signé (16 bits) |
Remarque : la prise en charge des attributs en virgule flottante de demi-précision est indiquée au moment de l'exécution par le drapeau de fonctionnalité QRhi::Feature::HalfAttributes.
Remarque : Direct3D 11/12 prend en charge les attributs d'entrée de 16 bits, mais ne prend pas en charge les types Half3, UShort3 ou SShort3. Les backends D3D transmettent Half3 comme Half4, UShort3 comme UShort4 et SShort3 comme SShort4. Pour assurer la compatibilité entre les plates-formes, les entrées 16 bits doivent être complétées par 8 octets.
Documentation des fonctions membres
[constexpr noexcept] QRhiVertexInputAttribute::QRhiVertexInputAttribute()
Construit une description d'attribut d'entrée de sommet par défaut.
QRhiVertexInputAttribute::QRhiVertexInputAttribute(int binding, int location, QRhiVertexInputAttribute::Format format, quint32 offset, int matrixSlice = -1)
Construit une description d'attribut d'entrée de sommet avec le numéro binding spécifié, location, format, et offset.
matrixSlice doit être égal à -1 sauf lorsque cet attribut correspond à une ligne ou à une colonne d'une matrice (par exemple, une matrice 4x4 devient 4 vec4s, consommant 4 emplacements d'entrée de sommet consécutifs), auquel cas il s'agit de l'index de la ligne ou de la colonne. location - matrixSlice doit toujours être égal à location pour la première ligne ou la première colonne de la matrice déroulée.
int QRhiVertexInputAttribute::binding() const
Renvoie l'indice du point de liaison.
Voir également setBinding().
QRhiVertexInputAttribute::Format QRhiVertexInputAttribute::format() const
Renvoie le format de l'élément d'entrée du sommet.
Voir aussi setFormat().
int QRhiVertexInputAttribute::location() const
Renvoie l'emplacement de l'élément d'entrée du sommet.
Voir également setLocation().
int QRhiVertexInputAttribute::matrixSlice() const
Renvoie la tranche de matrice si l'élément d'entrée correspond à une ligne ou une colonne d'une matrice, ou -1 s'il n'est pas pertinent.
Voir aussi setMatrixSlice().
quint32 QRhiVertexInputAttribute::offset() const
Renvoie le décalage d'un octet pour l'élément d'entrée.
Voir aussi setOffset().
void QRhiVertexInputAttribute::setBinding(int b)
Fixe l'indice du point de liaison à b. Par défaut, il est fixé à 0.
Voir aussi binding().
void QRhiVertexInputAttribute::setFormat(QRhiVertexInputAttribute::Format f)
Définit le format de l'élément d'entrée du sommet à f. Par défaut, il est défini à Float4.
Voir également format().
void QRhiVertexInputAttribute::setLocation(int loc)
Définit l'emplacement de l'élément d'entrée du sommet à loc. Par défaut, cette valeur est fixée à 0.
Voir également location().
void QRhiVertexInputAttribute::setMatrixSlice(int slice)
Définit la matrice slice. Par défaut, cette valeur est fixée à -1 et ne doit être fixée à une valeur >= 0 que lorsque cet attribut correspond à une ligne ou à une colonne d'une matrice (par exemple, une matrice 4x4 devient 4 vec4s, consommant 4 emplacements d'entrée de sommet consécutifs), auquel cas il s'agit de l'index de la ligne ou de la colonne. location - matrixSlice doit toujours être égal à location pour la première ligne ou la première colonne de la matrice déroulée.
Voir également matrixSlice().
void QRhiVertexInputAttribute::setOffset(quint32 ofs)
Définit le décalage d'octet pour l'élément d'entrée à ofs.
Voir également offset().
Non-membres apparentés
[noexcept] size_t qHash(const QRhiVertexInputAttribute &key, size_t seed = 0)
Renvoie la valeur de hachage pour key, en utilisant seed comme base de calcul.
[noexcept] bool operator!=(const QRhiVertexInputAttribute &a, const QRhiVertexInputAttribute &b)
Renvoie false si les valeurs des deux objets QRhiVertexInputAttribute a et b sont égales ; sinon, renvoie true.
[noexcept] bool operator==(const QRhiVertexInputAttribute &a, const QRhiVertexInputAttribute &b)
Renvoie true si les valeurs des deux objets QRhiVertexInputAttribute a et b sont égales.
© 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.