Sur cette page

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.

ConstanteValeurDescription de l'attribut
QSGGeometry::UnknownAttribute0Ne s'en préoccupe pas
QSGGeometry::PositionAttribute1Position
QSGGeometry::ColorAttribute2Couleur
QSGGeometry::TexCoordAttribute3Coordonnées de la texture
QSGGeometry::TexCoord1Attribute4Coordonnée de texture 1
QSGGeometry::TexCoord2Attribute5Coordonné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.

ConstanteValeurDescription
QSGGeometry::AlwaysUploadPattern0Les 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::DynamicPattern2Les 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::StaticPattern3Les 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::StreamPattern1Les 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.

ConstanteValeur
QSGGeometry::DrawPoints0x0000
QSGGeometry::DrawLines0x0001
QSGGeometry::DrawLineStrip0x0003
QSGGeometry::DrawTriangles0x0004
QSGGeometry::DrawTriangleStrip0x0005

enum QSGGeometry::Type

Spécifie le type de composant dans les données du sommet.

ConstanteValeurDescription
QSGGeometry::ByteType0x1400
QSGGeometry::UnsignedByteType0x1401
QSGGeometry::ShortType0x1402
QSGGeometry::UnsignedShortType0x1403
QSGGeometry::IntType0x1404
QSGGeometry::UnsignedIntType0x1405
QSGGeometry::FloatType0x1406
QSGGeometry::Bytes2Type0x1407Ajouté dans Qt 5.14.
QSGGeometry::Bytes3Type0x1408Ajouté dans Qt 5.14.
QSGGeometry::Bytes4Type0x1409Ajouté dans Qt 5.14.
QSGGeometry::DoubleType0x140AAjouté 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.