QRhiVertexInputAttribute Class
Décrit un élément d'entrée à sommet unique. En savoir plus...
| 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) |
Éléments non membres associé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 élément d'entrée de sommet unique.
Remarque : pour HLSL, on part du principe que le shader de sommet traduit à partir de SPIR-V utilise « TEXCOORD<location> » comme sémantique pour chaque entrée. Il n’y a donc pas de nom de sémantique ni d’index distincts.
À titre d’exemple, supposons un shader de sommets avec les entrées suivantes :
layout(location = 0) in vec4 position;
layout(location = 1) in vec2 texcoord;Supposons maintenant que nous disposions de positions de sommets à 3 composantes (x, y, z) et de coordonnées de texture à 2 composantes (u, v), fournies dans un format non entrelacé dans un tampon (voire dans des tampons distincts). Une fois les deux liaisons définies, les attributs pourraient ê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ées de sommets est lié, les entrées de sommets pourraient être configurées comme suit pour dessiner un cube de 36 sommets, en supposant que nous disposions d’un seul tampon contenant d’abord les positions, puis 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 à ce 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) }
});puis :
const QRhiCommandBuffer::VertexInput vbufBinding(interleavedCubeBuf, 0);
cb->setVertexInput(0, 1, &vbufBinding);Remarque : il s’agit d’une API RHI dont la compatibilité est garantie de manière limitée ; voir QRhi pour plus de détails.
Voir également QRhiCommandBuffer::setVertexInput().
Documentation sur les types de membres
enum QRhiVertexInputAttribute::Format
Spécifie le type des données de l'élément.
| Constante | Valeur | Description |
|---|---|---|
QRhiVertexInputAttribute::Float4 | 0 | Vecteur à quatre composantes de type float |
QRhiVertexInputAttribute::Float3 | 1 | Vecteur à trois composantes de type float |
QRhiVertexInputAttribute::Float2 | 2 | Vecteur à deux composantes de type float |
QRhiVertexInputAttribute::Float | 3 | Float |
QRhiVertexInputAttribute::UNormByte4 | 4 | Vecteur d'octets non signés normalisés à quatre composantes |
QRhiVertexInputAttribute::UNormByte2 | 5 | Vecteur d'octets non signé normalisé à 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 à deux composantes d'entiers signés |
QRhiVertexInputAttribute::SInt | 14 | Entier signé |
QRhiVertexInputAttribute::Half4 | 15 | Vecteur flottant à demi-précision (16 bits) à quatre composantes |
QRhiVertexInputAttribute::Half3 | 16 | Vecteur flottant à demi-précision (16 bits) à trois composantes |
QRhiVertexInputAttribute::Half2 | 17 | Vecteur flottant à demi-précision (16 bits) à deux composantes |
QRhiVertexInputAttribute::Half | 18 | Nombre à virgule flottante de demi-précision (16 bits) |
QRhiVertexInputAttribute::UShort4 | 19 | Vecteur d'entiers courts non signés (16 bits) à quatre composantes |
QRhiVertexInputAttribute::UShort3 | 20 | Vecteur d'entiers courts non signés (16 bits) à trois composantes |
QRhiVertexInputAttribute::UShort2 | 21 | Vecteur d'entiers courts non signés (16 bits) à deux composantes |
QRhiVertexInputAttribute::UShort | 22 | Entier court non signé (16 bits) |
QRhiVertexInputAttribute::SShort4 | 23 | Vecteur de quatre composantes de type entier court signé (16 bits) |
QRhiVertexInputAttribute::SShort3 | 24 | Vecteur d'entiers courts signés (16 bits) à trois composantes |
QRhiVertexInputAttribute::SShort2 | 25 | Vecteur de deux éléments entiers signés de type « short » (16 bits) |
QRhiVertexInputAttribute::SShort | 26 | Entier court signé (16 bits) Remarque : la prise en charge des attributs à virgule flottante demi-précision est indiquée au moment de l'exécution par l'indicateur de fonctionnalité « QRhi::Feature::HalfAttributes ». Remarque : Direct3D 11/12 prend en charge les attributs d'entrée 16 bits, mais ne prend pas en charge les types Half3, UShort3 ou SShort3. Les backends D3D transmettent Half3 sous la forme Half4, UShort3 sous la forme UShort4 et SShort3 sous la forme SShort4. Pour garantir la compatibilité multiplateforme, les entrées de 16 bits doivent être complétées pour atteindre 8 octets. |
Documentation des fonctions membres
[constexpr noexcept default] QRhiVertexInputAttribute::QRhiVertexInputAttribute()
Crée une description par défaut de l'attribut d'entrée « vertex ».
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 nombre d’ binding s 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 vec4, occupant 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 à l’ location e de la première ligne ou colonne de la matrice déroulée.
int QRhiVertexInputAttribute::binding() const
Renvoie l'index du point de liaison.
Voir également la fonction « setBinding() ».
QRhiVertexInputAttribute::Format QRhiVertexInputAttribute::format() const
Renvoie le format de l'élément de point d'entrée.
Voir également setFormat().
int QRhiVertexInputAttribute::location() const
Renvoie la position de l'élément de saisie « vertex ».
Voir aussi 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 si ce n'est pas le cas.
Voir également setMatrixSlice().
quint32 QRhiVertexInputAttribute::offset() const
Renvoie le décalage en octets de l'élément d'entrée.
Voir aussi setOffset().
void QRhiVertexInputAttribute::setBinding(int b)
Définit l'index du point de liaison sur b. Par défaut, cette valeur est définie sur 0.
Voir également binding().
void QRhiVertexInputAttribute::setFormat(QRhiVertexInputAttribute::Format f)
Définit le format de l'élément d'entrée des sommets sur « f ». Par défaut, il est défini sur « Float4 ».
Voir également format().
void QRhiVertexInputAttribute::setLocation(int loc)
Définit la position de l'élément d'entrée du sommet sur loc. Par défaut, cette valeur est définie sur 0.
Voir également location().
void QRhiVertexInputAttribute::setMatrixSlice(int slice)
Définit l'slice de la matrice. Par défaut, cette valeur est définie sur -1 et ne doit être définie sur une valeur a >= 0 que lorsque cet attribut correspond à une ligne ou une colonne d’une matrice (par exemple, une matrice 4x4 devient 4 vec4, occupant 4 emplacements d’entrée de sommets consécutifs), auquel cas il s’agit de l’index de la ligne ou de la colonne. location - matrixSlice doit toujours être égal à l’ location e de la première ligne ou colonne de la matrice déroulée.
Voir également matrixSlice().
void QRhiVertexInputAttribute::setOffset(quint32 ofs)
Définit le décalage en octets de l'élément d'entrée sur ofs.
Voir également offset().
Éléments non membres associés
[noexcept] size_t qHash(const QRhiVertexInputAttribute &key, size_t seed = 0)
Renvoie la valeur de hachage de key, en utilisant seed comme graine pour le calcul.
[noexcept] bool operator!=(const QRhiVertexInputAttribute &a, const QRhiVertexInputAttribute &b)
Renvoie « false » si les valeurs des deux objets « QRhiVertexInputAttribute » ( a et b ) sont identiques ; sinon, renvoie « true ».
[noexcept] bool operator==(const QRhiVertexInputAttribute &a, const QRhiVertexInputAttribute &b)
Renvoie « true » si les valeurs contenues dans les deux objets « QRhiVertexInputAttribute » a et b sont identiques.
© 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.