QSGGeometry Class
La classe QSGGeometry fournit un stockage de bas niveau pour les primitives graphiques dans le graphe de scèneQt Quick . Plus d'informations...
| En-tête : | #include <QSGGeometry> |
| CMake : | find_package(Qt6 REQUIRED COMPONENTS Quick)target_link_libraries(mytarget PRIVATE Qt6::Quick) |
| qmake : | QT += quick |
Types publics
| struct | Attribute |
| struct | AttributeSet |
| struct | ColoredPoint2D |
| struct | Point2D |
| struct | TexturedPoint2D |
| enum | AttributeType { UnknownAttribute, PositionAttribute, ColorAttribute, TexCoordAttribute, TexCoord1Attribute, TexCoord2Attribute } |
| enum | DataPattern { AlwaysUploadPattern, DynamicPattern, StaticPattern, StreamPattern } |
| enum | DrawingMode { DrawPoints, DrawLines, DrawLineStrip, DrawTriangles, DrawTriangleStrip } |
| enum | Type { ByteType, UnsignedByteType, ShortType, UnsignedShortType, IntType, …, DoubleType } |
Fonctions publiques
| QSGGeometry(const QSGGeometry::AttributeSet &attributes, int vertexCount, int indexCount = 0, int indexType = UnsignedShortType) | |
| virtual | ~QSGGeometry() |
| void | allocate(int vertexCount, int indexCount = 0) |
| int | attributeCount() const |
| const QSGGeometry::Attribute * | attributes() const |
| unsigned int | drawingMode() const |
| int | indexCount() const |
| void * | indexData() |
| const void * | indexData() const |
| uint * | indexDataAsUInt() |
| const uint * | indexDataAsUInt() const |
| quint16 * | indexDataAsUShort() |
| const quint16 * | indexDataAsUShort() const |
| QSGGeometry::DataPattern | indexDataPattern() const |
| int | indexType() const |
| float | lineWidth() const |
| void | markIndexDataDirty() |
| void | markVertexDataDirty() |
| void | setDrawingMode(unsigned int mode) |
(since 6.10) void | setIndexCount(int count) |
| void | setIndexDataPattern(QSGGeometry::DataPattern p) |
| void | setLineWidth(float width) |
(since 6.10) void | setVertexCount(int count) |
| void | setVertexDataPattern(QSGGeometry::DataPattern p) |
| int | sizeOfIndex() const |
| int | sizeOfVertex() const |
| int | vertexCount() const |
| void * | vertexData() |
| const void * | vertexData() const |
| QSGGeometry::ColoredPoint2D * | vertexDataAsColoredPoint2D() |
| const QSGGeometry::ColoredPoint2D * | vertexDataAsColoredPoint2D() const |
| QSGGeometry::Point2D * | vertexDataAsPoint2D() |
| const QSGGeometry::Point2D * | vertexDataAsPoint2D() const |
| QSGGeometry::TexturedPoint2D * | vertexDataAsTexturedPoint2D() |
| const QSGGeometry::TexturedPoint2D * | vertexDataAsTexturedPoint2D() const |
| QSGGeometry::DataPattern | vertexDataPattern() const |
Membres publics statiques
| const QSGGeometry::AttributeSet & | defaultAttributes_ColoredPoint2D() |
| const QSGGeometry::AttributeSet & | defaultAttributes_Point2D() |
| const QSGGeometry::AttributeSet & | defaultAttributes_TexturedPoint2D() |
| void | updateColoredRectGeometry(QSGGeometry *g, const QRectF &rect) |
| void | updateRectGeometry(QSGGeometry *g, const QRectF &rect) |
| void | updateTexturedRectGeometry(QSGGeometry *g, const QRectF &rect, const QRectF &textureRect) |
Description détaillée
La classe QSGGeometry stocke la géométrie des primitives rendues avec le graphe de scène. Elle contient des données sur les sommets et, éventuellement, des données d'index. Le mode utilisé pour dessiner la géométrie, également appelé topologie primitive, est spécifié à l'aide de setDrawingMode().
Les sommets peuvent être de simples points définis par des valeurs x et y ou être plus complexes, chaque sommet contenant une normale, des coordonnées de texture et une position 3D. Le site QSGGeometry::AttributeSet est utilisé pour décrire la manière dont les données des sommets sont construites. Le jeu d'attributs ne peut être spécifié que lors de la construction. La classe QSGGeometry fournit par défaut quelques attributs et jeux d'attributs de commodité. La fonction defaultAttributes_Point2D() renvoie un jeu d'attributs à utiliser dans les rectangles normaux de couleur unie, tandis que la fonction defaultAttributes_TexturedPoint2D renvoie des attributs à utiliser pour la géométrie 2D texturée. Les données relatives aux vertex sont stockées en interne sous la forme d'un fichier void * et sont accessibles à l'aide de la fonction vertexData(). Des accesseurs pratiques pour les ensembles d'attributs communs sont disponibles avec vertexDataAsPoint2D() et vertexDataAsTexturedPoint2D(). Les données de sommet sont allouées en passant un nombre de sommets au constructeur ou en appelant allocate() ultérieurement.
Le nombre de sommets et d'indices peut être modifié après la construction en utilisant la méthode allocate() pour redimensionner le tampon de données. Cependant, allocate() nécessite la mise à jour de toutes les données de sommets et d'index à chaque appel. Depuis Qt 6.10, setVertexCount() et setIndexCount() permettent d'ajuster le nombre de sommets ou d'indices sans réallouer le tampon de données et ne nécessitent que la mise à jour des nouveaux sommets ou indices. Dans les deux cas, l'appelant doit marquer le nœud géométrique comme sale, en appelant node->markDirty(QSGNode::DirtyGeometry), pour s'assurer que le moteur de rendu a une chance de mettre à jour les tampons internes.
La QSGGeometry peut éventuellement contenir des indices de 32 bits non signés, de 16 bits non signés ou d'entiers de 8 bits non signés. Le type d'index doit être spécifié lors de la construction et ne peut pas être modifié.
L'extrait ci-dessous illustre la manière dont une géométrie composée de vertices de position et de couleur peut être construite.
struct MyPoint2D { float x; float y; float r; float g; float b; float a; void set(float x_, float y_, float r_, float g_, float b_, float a_) { x = x_; y = y_; r = r_; g = g_; b = b_; a = a_; } }; QSGGeometry::Attribute MyPoint2D_Attributes[] = { QSGGeometry::Attribute::create(0, 2, FloatType, true), QSGGeometry::Attribute::create(1, 4, FloatType, false) }; QSGGeometry::AttributeSet MyPoint2D_AttributeSet = { 2, sizeof(MyPoint2D), MyPoint2D_Attributes }; ... geometry = new QSGGeometry(MyPoint2D_AttributeSet, 2); geometry->setDrawingMode(DrawLines); MyPoint2D *vertices = static_cast<MyPoint2D *>(geometry->vertexData()); vertices[0].set(0, 0, 1, 0, 0, 1); vertices[1].set(width(), height(), 0, 0, 1, 1);
La QSGGeometry est un tampon logiciel et côté client en termes de rendu accéléré, car les tampons utilisés dans les graphiques 2D consistent généralement en de nombreux petits tampons qui changent à chaque image et ne bénéficient pas d'être téléchargés dans la mémoire graphique. Cependant, la QSGGeometry permet d'indiquer au moteur de rendu qu'un tampon doit être téléchargé à l'aide des fonctions setVertexDataPattern() et setIndexDataPattern(). Le respect ou non de cette indication dépend de l'implémentation.
Note : Toutes les classes avec le préfixe QSG doivent être utilisées uniquement sur le thread de rendu du graphe de scène. Voir Scene Graph and Rendering pour plus d'informations.
Voir également QSGGeometryNode et Scene Graph - Custom Geometry.
Documentation sur les types de membres
enum QSGGeometry::AttributeType
Cette énumération identifie plusieurs types d'attributs.
| Constante | Valeur | Description de l'attribut |
|---|---|---|
QSGGeometry::UnknownAttribute | 0 | Ne s'en préoccupe pas |
QSGGeometry::PositionAttribute | 1 | Position |
QSGGeometry::ColorAttribute | 2 | Couleur |
QSGGeometry::TexCoordAttribute | 3 | Coordonnées de la texture |
QSGGeometry::TexCoord1Attribute | 4 | Coordonnée de texture 1 |
QSGGeometry::TexCoord2Attribute | 5 | Coordonnée 2 de la texture |
enum QSGGeometry::DataPattern
L'énumération DataPattern est utilisée pour spécifier le modèle d'utilisation des données de sommet et d'index dans un objet géométrique.
| Constante | Valeur | Description |
|---|---|---|
QSGGeometry::AlwaysUploadPattern | 0 | Les données sont toujours téléchargées. Cela signifie que l'utilisateur n'a pas besoin de marquer explicitement les données d'index et de sommet comme sales après les avoir modifiées. Il s'agit de la valeur par défaut. |
QSGGeometry::DynamicPattern | 2 | Les données sont modifiées de manière répétée et dessinées plusieurs fois. Il s'agit d'une indication qui peut améliorer les performances. Lorsqu'il est activé, l'utilisateur doit s'assurer de marquer les données comme sales après les avoir modifiées. |
QSGGeometry::StaticPattern | 3 | Les données sont modifiées une fois et dessinées plusieurs fois. Il s'agit d'un indice qui peut permettre d'améliorer les performances. Lorsque cette option est activée, l'utilisateur doit s'assurer de marquer les données comme sales après les avoir modifiées. |
QSGGeometry::StreamPattern | 1 | Les données sont modifiées presque à chaque fois qu'elles sont dessinées. Il s'agit d'un indice qui peut permettre d'améliorer les performances. Lorsqu'il est défini, l'utilisateur doit s'assurer de marquer les données comme sales après les avoir modifiées. |
enum QSGGeometry::DrawingMode
Spécifie le mode de dessin, également appelé topologie primitive.
Remarque : à partir de Qt Graphs 6, le graphe de scène n'expose que les topologies qui sont prises en charge par toutes les API graphiques 3D prises en charge. Par conséquent, les valeurs DrawLineLoop et DrawTriangleFan ne sont plus prises en charge au moment de l'exécution dans Qt 6, même si les valeurs de l'énumération sont toujours présentes.
| Constante | Valeur |
|---|---|
QSGGeometry::DrawPoints | 0x0000 |
QSGGeometry::DrawLines | 0x0001 |
QSGGeometry::DrawLineStrip | 0x0003 |
QSGGeometry::DrawTriangles | 0x0004 |
QSGGeometry::DrawTriangleStrip | 0x0005 |
enum QSGGeometry::Type
Spécifie le type de composant dans les données du sommet.
| Constante | Valeur | Description |
|---|---|---|
QSGGeometry::ByteType | 0x1400 | |
QSGGeometry::UnsignedByteType | 0x1401 | |
QSGGeometry::ShortType | 0x1402 | |
QSGGeometry::UnsignedShortType | 0x1403 | |
QSGGeometry::IntType | 0x1404 | |
QSGGeometry::UnsignedIntType | 0x1405 | |
QSGGeometry::FloatType | 0x1406 | |
QSGGeometry::Bytes2Type | 0x1407 | Ajouté dans Qt 5.14. |
QSGGeometry::Bytes3Type | 0x1408 | Ajouté dans Qt 5.14. |
QSGGeometry::Bytes4Type | 0x1409 | Ajouté dans Qt 5.14. |
QSGGeometry::DoubleType | 0x140A | Ajouté dans Qt 5.14. |
Documentation sur les fonctions membres
QSGGeometry::QSGGeometry(const QSGGeometry::AttributeSet &attributes, int vertexCount, int indexCount = 0, int indexType = UnsignedShortType)
Construit un objet géométrique basé sur attributes.
L'objet alloue de l'espace pour les sommets vertexCount en fonction de la taille accumulée dans attributes et pour indexCount.
L'adresse indexType peut être UnsignedShortType ou UnsignedIntType. La prise en charge de cette dernière dépend de l'implémentation de l'API graphique utilisée au moment de l'exécution et n'est pas toujours disponible.
Les objets géométriques sont construits par défaut avec DrawTriangleStrip comme mode de dessin.
Remarque : attributes et les objets Attribute auxquels il fait référence doivent rester valides pendant toute la durée de vie de QSGGeometry. QSGGeometry stocke une référence à attributes et ne supprime pas les objets Attribute.
[virtual noexcept] QSGGeometry::~QSGGeometry()
Détruit l'objet géométrique et les données de vertex et d'index qu'il a allouées.
void QSGGeometry::allocate(int vertexCount, int indexCount = 0)
Redimensionne les données de vertex et d'index de cet objet géométrique pour qu'elles correspondent aux vertices vertexCount et aux index indexCount et définit le nombre de vertices et d'index en conséquence.
Utilisez setVertexCount() ou setIndexCount() pour modifier le nombre de sommets ou d'index sans appeler à nouveau allocate().
Les données relatives aux sommets et aux index seront invalidées après cet appel et l'appelant doit marquer le nœud géométrique associé comme sale, en appelant node->markDirty(QSGNode::DirtyGeometry), afin de s'assurer que le moteur de rendu a une chance de mettre à jour les tampons internes.
Voir également setVertexCount() et setIndexCount().
int QSGGeometry::attributeCount() const
Renvoie le nombre d'attributs du jeu d'attributs utilisé par cette géométrie.
const QSGGeometry::Attribute *QSGGeometry::attributes() const
Renvoie un tableau contenant les attributs de cette géométrie. La taille du tableau est indiquée par attributeCount().
[static] const QSGGeometry::AttributeSet &QSGGeometry::defaultAttributes_ColoredPoint2D()
Fonction de commodité qui renvoie les attributs à utiliser pour le dessin 2D coloré par sommet.
[static] const QSGGeometry::AttributeSet &QSGGeometry::defaultAttributes_Point2D()
Fonction de commodité qui renvoie les attributs à utiliser pour le dessin 2D en aplat de couleur.
[static] const QSGGeometry::AttributeSet &QSGGeometry::defaultAttributes_TexturedPoint2D()
Fonction de commodité qui renvoie les attributs à utiliser pour le dessin 2D texturé.
unsigned int QSGGeometry::drawingMode() const
Renvoie le mode de dessin de cette géométrie.
La valeur par défaut est DrawTriangleStrip.
Voir également setDrawingMode().
int QSGGeometry::indexCount() const
Renvoie le nombre d'indices traités lors du rendu de l'objet géométrique.
Voir aussi setIndexCount().
void *QSGGeometry::indexData()
Renvoie un pointeur sur les données d'index brutes de cet objet géométrique.
Voir aussi indexDataAsUShort() et indexDataAsUInt().
const void *QSGGeometry::indexData() const
Renvoie un pointeur sur les données d'index brutes de cet objet géométrique.
Voir aussi indexDataAsUShort() et indexDataAsUInt().
uint *QSGGeometry::indexDataAsUInt()
Fonction de commodité permettant d'accéder aux données d'index sous la forme d'un tableau mutable d'entiers non signés de 32 bits.
const uint *QSGGeometry::indexDataAsUInt() const
Fonction de commodité permettant d'accéder aux données d'index sous la forme d'un tableau immuable d'entiers non signés de 32 bits.
quint16 *QSGGeometry::indexDataAsUShort()
Fonction de commodité permettant d'accéder aux données d'index sous la forme d'un tableau mutable d'entiers non signés de 16 bits.
const quint16 *QSGGeometry::indexDataAsUShort() const
Fonction de commodité permettant d'accéder aux données d'index sous la forme d'un tableau immuable d'entiers non signés de 16 bits.
QSGGeometry::DataPattern QSGGeometry::indexDataPattern() const
Renvoie le modèle d'utilisation des indices dans cette géométrie. Le modèle par défaut est AlwaysUploadPattern.
Voir aussi setIndexDataPattern().
int QSGGeometry::indexType() const
Renvoie le type primitif utilisé pour les indices dans cet objet géométrique.
float QSGGeometry::lineWidth() const
Obtient la largeur actuelle de la ligne ou du point à utiliser pour cette géométrie. Cette propriété s'applique uniquement à la largeur de ligne lorsque drawingMode est DrawLines ou DrawLineStrip. Si elle est prise en charge, elle s'applique également à la taille de point lorsque drawingMode est DrawPoints.
La valeur par défaut est 1.0
Remarque : la prise en charge du dessin de points et de lignes peut être limitée au moment de l'exécution, en fonction de la plate-forme et de l'API graphique. Par exemple, certaines API ne prennent pas en charge les sprites ponctuels et il n'est donc pas possible de définir une taille différente de 1.
Remarque : la largeur de 1.0 est toujours prise en charge.
Voir également setLineWidth() et drawingMode().
void QSGGeometry::markIndexDataDirty()
Indique que les sommets de cette géométrie ont changé et qu'ils doivent être téléchargés à nouveau.
Cette fonction n'a d'effet que lorsque le modèle d'utilisation des sommets est StaticData et que le moteur de rendu qui effectue le rendu de cette géométrie télécharge la géométrie dans des objets tampons de sommets (VBO).
void QSGGeometry::markVertexDataDirty()
Indique que les sommets de cette géométrie ont changé et qu'ils doivent être téléchargés à nouveau.
Cette fonction n'a d'effet que lorsque le modèle d'utilisation des sommets est StaticData et que le moteur de rendu qui effectue le rendu de cette géométrie télécharge la géométrie dans des objets tampons de sommets (VBO).
void QSGGeometry::setDrawingMode(unsigned int mode)
Définit le site mode à utiliser pour dessiner cette géométrie.
La valeur par défaut est QSGGeometry::DrawTriangleStrip.
Voir aussi drawingMode() et DrawingMode.
[since 6.10] void QSGGeometry::setIndexCount(int count)
Définit le nombre d'indices à traiter à chaque fois que l'objet géométrique est rendu.
L'adresse count n'est pas validée et il incombe à l'utilisateur de s'assurer que seules des valeurs comprises entre zéro et le nombre d'indices alloués sont spécifiées.
Les données de sommet et d'index ne sont pas invalidées après cet appel, mais l'appelant doit marquer le nœud géométrique comme sale, en appelant node->markDirty(QSGNode::DirtyGeometry), pour s'assurer que le moteur de rendu a une chance de mettre à jour les tampons internes.
Cette fonction a été introduite dans Qt 6.10.
Voir aussi indexCount().
void QSGGeometry::setIndexDataPattern(QSGGeometry::DataPattern p)
Définit le modèle d'utilisation des index à p.
La valeur par défaut est AlwaysUploadPattern. Si la valeur est différente de la valeur par défaut, l'utilisateur doit appeler markIndexDataDirty() après avoir modifié les données d'index, en plus d'appeler QSGNode::markDirty() avec QSGNode::DirtyGeometry.
Voir également indexDataPattern().
void QSGGeometry::setLineWidth(float width)
Définit la largeur de ligne ou de point à utiliser pour cette géométrie à width. Cette propriété s'applique uniquement à la largeur de ligne lorsque drawingMode est DrawLines ou DrawLineStrip. Lorsqu'elle est prise en charge, elle s'applique également à la taille de point lorsque drawingMode est DrawPoints.
Remarque : la prise en charge du dessin de points et de lignes peut être limitée au moment de l'exécution, en fonction de la plate-forme et de l'API graphique. Par exemple, certaines API ne prennent pas en charge les sprites ponctuels et il n'est donc pas possible de définir une taille différente de 1.
Remarque : la largeur de 1.0 est toujours prise en charge.
Voir également lineWidth() et drawingMode().
[since 6.10] void QSGGeometry::setVertexCount(int count)
Définit le nombre de vertices à rendre.
L'adresse count n'est pas validée et il incombe à l'utilisateur de s'assurer que seules des valeurs comprises entre zéro et le nombre de vertices alloués sont spécifiées.
Les données des sommets ne sont pas invalidées après cet appel, mais l'appelant doit marquer le nœud géométrique comme sale, en appelant node->markDirty(QSGNode::DirtyGeometry), pour s'assurer que le moteur de rendu a une chance de mettre à jour les tampons internes.
Cette fonction a été introduite dans Qt 6.10.
Voir aussi vertexCount().
void QSGGeometry::setVertexDataPattern(QSGGeometry::DataPattern p)
Définit le modèle d'utilisation des sommets à p.
La valeur par défaut est AlwaysUploadPattern. Si la valeur est différente de la valeur par défaut, l'utilisateur doit appeler markVertexDataDirty() après avoir modifié les données des sommets, en plus d'appeler QSGNode::markDirty() avec QSGNode::DirtyGeometry.
Voir également vertexDataPattern().
int QSGGeometry::sizeOfIndex() const
Renvoie la taille en octets du type d'index.
Cette valeur est soit 2 lorsque le type d'index est UnsignedShortType, soit 4 lorsque le type d'index est UnsignedIntType.
int QSGGeometry::sizeOfVertex() const
Renvoie la taille en octets d'un sommet.
Cette valeur provient des attributs.
[static] void QSGGeometry::updateColoredRectGeometry(QSGGeometry *g, const QRectF &rect)
Met à jour la géométrie g avec les coordonnées de rect.
La fonction suppose que l'objet géométrique contient une seule bande triangulaire de QSGGeometry::ColoredPoint2D sommets.
[static] void QSGGeometry::updateRectGeometry(QSGGeometry *g, const QRectF &rect)
Met à jour la géométrie g avec les coordonnées de rect.
La fonction suppose que l'objet géométrique contient une seule bande triangulaire de QSGGeometry::Point2D sommets.
[static] void QSGGeometry::updateTexturedRectGeometry(QSGGeometry *g, const QRectF &rect, const QRectF &textureRect)
Met à jour la géométrie g avec les coordonnées de rect et les coordonnées de texture de textureRect.
textureRect Les coordonnées doivent être normalisées.
g est supposé être un triangle à quatre sommets de type QSGGeometry::TexturedPoint2D.
int QSGGeometry::vertexCount() const
Renvoie le nombre de sommets pouvant être rendus ou, si des indices sont utilisés, le nombre de sommets accessibles via les indices.
Voir aussi setVertexCount().
void *QSGGeometry::vertexData()
Renvoie un pointeur sur les données brutes des vertex de cet objet géométrique.
Voir aussi vertexDataAsPoint2D() et vertexDataAsTexturedPoint2D().
const void *QSGGeometry::vertexData() const
Renvoie un pointeur sur les données brutes des vertex de cet objet géométrique.
Voir aussi vertexDataAsPoint2D() et vertexDataAsTexturedPoint2D().
QSGGeometry::ColoredPoint2D *QSGGeometry::vertexDataAsColoredPoint2D()
Fonction de commodité permettant d'accéder aux données des sommets sous la forme d'un tableau mutable de QSGGeometry::ColoredPoint2D.
const QSGGeometry::ColoredPoint2D *QSGGeometry::vertexDataAsColoredPoint2D() const
Fonction de commodité permettant d'accéder aux données des sommets sous la forme d'un tableau immuable de QSGGeometry::ColoredPoint2D.
QSGGeometry::Point2D *QSGGeometry::vertexDataAsPoint2D()
Fonction de commodité permettant d'accéder aux données des sommets sous la forme d'un tableau mutable de QSGGeometry::Point2D.
const QSGGeometry::Point2D *QSGGeometry::vertexDataAsPoint2D() const
Fonction de commodité permettant d'accéder aux données des sommets sous la forme d'un tableau immuable de QSGGeometry::Point2D.
QSGGeometry::TexturedPoint2D *QSGGeometry::vertexDataAsTexturedPoint2D()
Fonction de commodité permettant d'accéder aux données des sommets sous la forme d'un tableau mutable de QSGGeometry::TexturedPoint2D.
const QSGGeometry::TexturedPoint2D *QSGGeometry::vertexDataAsTexturedPoint2D() const
Fonction de commodité permettant d'accéder aux données des sommets sous la forme d'un tableau immuable de QSGGeometry::TexturedPoint2D.
QSGGeometry::DataPattern QSGGeometry::vertexDataPattern() const
Renvoie le modèle d'utilisation des sommets de cette géométrie. Le modèle par défaut est AlwaysUploadPattern.
Voir aussi setVertexDataPattern().
© 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.