Qt 3D Géométrie de rendu
Qt 3D Le rendu offre un moyen générique de stocker les données de géométrie et de spécifier comment celles-ci doivent être lues par le moteur de rendu.
Tampon
La classe Qt3DCore::QBuffer stocke les données brutes. Elle agit simplement comme un tableau en mémoire. Dans la plupart des cas, un Qt3DCore::QBuffer sera utilisé indirectement, en étant référencé par un ou plusieurs Qt3DRender::QAttributes. Cependant, il arrive parfois qu’un ` QBuffer ` soit utilisé directement comme propriété « value » d’un `QParameter` lorsqu’on traite des objets de tampon uniformes (UBO) ou des objets de tampon de stockage de shader (SSBO).
Buffer {
id: vertexBuffer
type: Buffer.VertexBuffer
data: buildVertexBufferData()
}Attribut
Qt3DCore::QAttribute spécifie comment les données contenues dans le tampon référencé doivent être extraites et transmises à une entrée d’un shader de sommets. Il fait référence à un Qt3DCore::QBuffer et peut spécifier la disposition des attributs en définissant la taille des sommets, le type de données, le pas entre deux sommets et un décalage de départ. Le type de l’attribut définit également s’il doit être utilisé comme tampon de sommets ou comme tampon d’index. Cela vous offre une flexibilité totale quant à la manière dont vous structurez vos données dans les tampons. Il est possible d’utiliser des tampons distincts pour chaque attribut de sommet, un tampon entrelacé contenant les données de tous les attributs, ou une combinaison de tampons distincts et entrelacés.
Attribute {
attributeType: Attribute.VertexAttribute
vertexBaseType: Attribute.Float
vertexSize: 3
byteOffset: 0
byteStride: 9 * 4
count: 4
name: defaultPositionAttributeName()
buffer: vertexBuffer
}Géométrie
Un objet Qt3DCore::QGeometry regroupe divers attributs pour former une géométrie. En général, une géométrie correcte fournit un attribut pour les positions des sommets, un attribut pour les normales des sommets et un attribut pour les coordonnées de texture. Si vous souhaitez que votre géométrie fonctionne également avec des matériaux à carte de normales, elle devra également fournir un ensemble cohérent de vecteurs tangents aux sommets.
Geometry {
Attribute {
attributeType: Attribute.VertexAttribute
vertexBaseType: Attribute.Float
vertexSize: 3
byteOffset: 0
byteStride: 9 * 4
count: 4
name: defaultPositionAttributeName()
buffer: vertexBuffer
}
Attribute {
attributeType: Attribute.VertexAttribute
vertexBaseType: Attribute.Float
vertexSize: 3
byteOffset: 3 * 4
byteStride: 9 * 4
count: 4
name: defaultNormalAttributeName()
buffer: vertexBuffer
}GeometryView
Un objet Qt3DCore::QGeometryView prend en paramètre un objet Qt3DCore::QGeometry. Il fournit des propriétés permettant de contrôler l’appel de dessin, telles que le nombre d’instances à dessiner, l’instance de départ, le type d’ Qt3DCore::QGeometryView::PrimitiveType s à utiliser, etc.
Elle définit de manière exhaustive les détails d’un maillage, de sorte que des opérations telles que le calcul du volume englobant et la sélection puissent être effectuées sur un maillage sans qu’il soit nécessaire de le rendre.
GeometryView {
instanceCount: 1
indexOffset: 0
firstInstance: 0
primitiveType: GeometryRenderer.Triangles
geometry: Geometry { ... }
}GeometryRenderer
Qt3DRender::QGeometryRenderer est un QComponent qui, lorsqu’il est agrégé par un QEntity, permet de dessiner le Qt3DCore::QGeometryView auquel il fait référence. Un Qt3DRender::QGeometryRenderer est traduit en un appel de dessin vers l’API graphique sous-jacente.
GeometryRenderer {
view: GeometryView { ... }
}Remarque : avant Qt 6, Qt3DRender::QGeometryRenderer incluait des détails qui sont désormais censés être fournis par l’instance de vue. Ces propriétés sont toujours présentes dans Qt 6, mais seront dépréciées puis supprimées dans Qt 7.
© 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.