QQuick3DTextureData Class
Classe de base permettant de définir des données de texture personnalisées. Plus d'informations...
| Header: | #include <QQuick3DTextureData> |
| Since: | Qt 6.0 |
| In QML: | TextureData |
| Inherits: | QQuick3DObject |
Types publics
| enum | Format { None, RGBA8, RGBA16F, RGBA32F, RGBE8, …, ASTC_12x12 } |
Fonctions publiques
| int | depth() const |
| QQuick3DTextureData::Format | format() const |
| bool | hasTransparency() const |
| void | setDepth(int depth) |
| void | setFormat(QQuick3DTextureData::Format format) |
| void | setHasTransparency(bool hasTransparency) |
| void | setSize(const QSize &size) |
| void | setTextureData(const QByteArray &data) |
| QSize | size() const |
| const QByteArray | textureData() const |
Description détaillée
La classe QQuick3DTextureData peut être utilisée pour spécifier des données de texture personnalisées pour un site Texture dans une scène 3D Qt Quick.
Bien que cela ne soit pas strictement nécessaire, l'utilisation typique est d'hériter de cette classe. La sous-classe est ensuite exposée à QML en l'enregistrant dans le système de types. La propriété textureData d'un Texture peut alors être définie pour faire référence à une instance du type enregistré.
Exemple de mise en œuvre :
class CustomTextureData : public QQuick3DTextureData { Q_OBJECT ... properties ... public: CustomTextureData() { regenerateTextureData(); } void setProperty(...) { // Change relevant internal data. // ... // Update the texture data regenerateTextureData(); // Finally, trigger an update. This is relevant in case nothing else // is changed in the scene; this way we make sure a new frame will // be rendered update(); } private: void regenerateTextureData() { QByteArray textureData; textureData = generateTextureData(); setTextureData(textureData); setSize(QSize(256, 256)); setFormat(QQuick3DTextureData::Format::RGBA8) setHasTransparency(true); } };
Cette classe peut ensuite être enregistrée en tant que type QML et utilisée avec Texture.
Dans Qt 5, l'enregistrement d'un type se fait avec qmlRegisterType:
qmlRegisterType<MyCustomTextureData>("Example", 1, 0, "MyCustomTextureData");
Dans Qt Help 6, l'approche par défaut consiste à utiliser l'enregistrement automatique avec l'aide du système de construction. Au lieu d'appeler qmlRegisterType, le fichier .pro peut maintenant contenir :
CONFIG += qmltypes QML_IMPORT_NAME = Example QML_IMPORT_MAJOR_VERSION = 1
Avec CMake, l'enregistrement automatique est le comportement par défaut, de sorte qu'aucun paramètre spécial n'est nécessaire au-delà de la configuration de base du module QML :
qt_add_qml_module(application
URI Example
VERSION 1.0
)L'implémentation de la classe doit ajouter QML_NAMED_ELEMENT:
class CustomTextureData : public QQuick3DTextureData { Q_OBJECT QML_NAMED_ELEMENT(MyCustomTextureData) ... };
Le code QML peut alors utiliser le type personnalisé :
import Example 1.0 Model { source: "#Cube" materials: [ DefaultMaterial { diffuseMap: diffuseMapCustomTexture } ] Texture { id: diffuseMapCustomTexture textureData: MyCustomTextureData { } } }
Documentation sur les types de membres
enum QQuick3DTextureData::Format
Renvoie le format de couleur des données de texture attribuées dans la propriété textureData.
| Constante | Valeur | Description |
|---|---|---|
QQuick3DTextureData::None | 0 | Le format de couleur n'est pas défini |
QQuick3DTextureData::RGBA8 | 1 | Le format de couleur est considéré comme un entier 8 bits dans les canaux R, G, B et alpha. |
QQuick3DTextureData::RGBA16F | 2 | Le format de couleur est considéré comme un flottant de 16 bits dans les canaux R, G, B et alpha. |
QQuick3DTextureData::RGBA32F | 3 | Le format de couleur est considéré comme un flottant de 32 bits dans les canaux R, G, B et alpha. |
QQuick3DTextureData::RGBE8 | 4 | Le format de couleur est considéré comme une mantisse de 8 bits dans les canaux R, V et B et un exposant partagé de 8 bits. |
QQuick3DTextureData::R8 | 5 | Le format de la couleur est considéré comme un entier de 8 bits dans le canal R. |
QQuick3DTextureData::R16 | 6 | Le format de couleur est considéré comme un entier de 16 bits dans le canal R. |
QQuick3DTextureData::R16F | 7 | Le format de couleur est considéré comme un flottant de 16 bits dans le canal R. |
QQuick3DTextureData::R32F | 8 | Le format de couleur est considéré comme un flottant de 32 bits dans le canal R. |
QQuick3DTextureData::BC1 | 9 | Le format de couleur est considéré comme un format compressé BC1 avec les canaux R, G, B et alpha. |
QQuick3DTextureData::BC2 | 10 | Le format de couleur est considéré comme le format compressé BC2 avec les canaux R, G, B et alpha. |
QQuick3DTextureData::BC3 | 11 | Le format de couleur est considéré comme le format compressé BC3 avec les canaux R, V, B et alpha. |
QQuick3DTextureData::BC4 | 12 | Le format couleur est considéré comme le format compressé BC4 avec un seul canal couleur. |
QQuick3DTextureData::BC5 | 13 | Le format de couleur est considéré comme le format compressé BC5 avec deux canaux de couleur. |
QQuick3DTextureData::BC6H | 14 | Le format de couleur est considéré comme le format compressé BC6H avec trois canaux de couleur à gamme dynamique élevée. |
QQuick3DTextureData::BC7 | 15 | Le format de couleur est considéré comme le format compressé BC7 avec les canaux R, G, B et alpha. |
QQuick3DTextureData::DXT1_RGBA | 16 | Le format couleur est considéré comme un format compressé DXT1 avec des canaux R, G, B et alpha. |
QQuick3DTextureData::DXT1_RGB | 17 | Le format couleur est considéré comme un format compressé DXT1 avec des canaux R, G et B. |
QQuick3DTextureData::DXT3_RGBA | 18 | Le format de couleur est considéré comme un format compressé DXT3 avec les canaux R, G, B et alpha. |
QQuick3DTextureData::DXT5_RGBA | 19 | Le format de couleur est considéré comme le format compressé DXT5 avec les canaux R, G, B et alpha. |
QQuick3DTextureData::ETC2_RGB8 | 20 | Le format de couleur est considéré comme un format compressé ETC2 pour les données RGB888. |
QQuick3DTextureData::ETC2_RGB8A1 | 21 | Le format de couleur est considéré comme un format compressé ETC2 pour les données RGBA où l'alpha est de 1 bit. |
QQuick3DTextureData::ETC2_RGBA8 | 22 | Le format de couleur est considéré comme le format compressé ETC2 pour les données RGBA8888. |
QQuick3DTextureData::ASTC_4x4 | 23 | Le format couleur est considéré comme un format compressé ASTC avec une empreinte de bloc de 4x4. |
QQuick3DTextureData::ASTC_5x4 | 24 | Le format couleur est considéré comme un format compressé ASTC avec une empreinte de bloc de 5x4. |
QQuick3DTextureData::ASTC_5x5 | 25 | Le format couleur est considéré comme un format compressé ASTC avec une empreinte de bloc de 5x5. |
QQuick3DTextureData::ASTC_6x5 | 26 | Le format couleur est considéré comme un format compressé ASTC avec une empreinte de bloc de 6x5. |
QQuick3DTextureData::ASTC_6x6 | 27 | Le format couleur est considéré comme un format compressé ASTC avec une empreinte de bloc 6x6. |
QQuick3DTextureData::ASTC_8x5 | 28 | Le format couleur est considéré comme un format compressé ASTC avec une empreinte de bloc 8x5. |
QQuick3DTextureData::ASTC_8x6 | 29 | Le format couleur est considéré comme un format compressé ASTC avec une empreinte de bloc 8x6. |
QQuick3DTextureData::ASTC_8x8 | 30 | Le format couleur est considéré comme un format compressé ASTC avec une empreinte de bloc 8x8. |
QQuick3DTextureData::ASTC_10x5 | 31 | Le format couleur est considéré comme un format compressé ASTC avec une empreinte de bloc 10x5. |
QQuick3DTextureData::ASTC_10x6 | 32 | Le format couleur est considéré comme un format compressé ASTC avec une empreinte de bloc 10x6. |
QQuick3DTextureData::ASTC_10x8 | 33 | Le format couleur est considéré comme un format compressé ASTC avec une empreinte de bloc 10x8. |
QQuick3DTextureData::ASTC_10x10 | 34 | Le format couleur est considéré comme un format compressé ASTC avec une empreinte de bloc de 10x10. |
QQuick3DTextureData::ASTC_12x10 | 35 | Le format couleur est considéré comme un format compressé ASTC avec une empreinte de bloc de 12x10. |
QQuick3DTextureData::ASTC_12x12 | 36 | Le format couleur est considéré comme un format compressé ASTC avec une empreinte de bloc de 12x12. |
Remarque : à l'exception de RGBA8, tous les formats ne sont pas pris en charge au moment de l'exécution, car cela dépend du backend utilisé et du matériel utilisé.
Note : RGBE est représenté en interne comme RGBA8 mais est interprété comme décrit lorsqu'il est utilisé en tant que lightProbe ou texture skybox.
Remarque : l'utilisation de la valeur None suppose la valeur par défaut de RGBA8
Documentation des fonctions membres
int QQuick3DTextureData::depth() const
Renvoie la profondeur des données de texture en pixels.
Voir aussi setDepth().
QQuick3DTextureData::Format QQuick3DTextureData::format() const
Renvoie le format des données de texture.
Voir aussi setFormat().
bool QQuick3DTextureData::hasTransparency() const
Renvoie true si les données de texture sont transparentes.
La valeur par défaut est false.
Voir aussi setHasTransparency().
void QQuick3DTextureData::setDepth(int depth)
Définit l'adresse depth des données de texture en pixels. Si la profondeur est supérieure à 0, la texture est traitée comme une texture 3D.
Voir également depth().
void QQuick3DTextureData::setFormat(QQuick3DTextureData::Format format)
Définit l'adresse format des données de texture.
Le format par défaut est /c RGBA8
Voir aussi format().
void QQuick3DTextureData::setHasTransparency(bool hasTransparency)
Définit hasTransparency à true si les données de texture ont un canal alpha actif avec des valeurs non-opaques.
Ceci est utilisé comme une optimisation par le moteur afin que les formats qui supportent un canal alpha n'aient pas besoin d'avoir chaque valeur vérifiée pour les valeurs non-opaques.
Voir aussi hasTransparency().
void QQuick3DTextureData::setSize(const QSize &size)
Définit l'adresse size des données de texture en pixels.
Voir aussi size().
void QQuick3DTextureData::setTextureData(const QByteArray &data)
Définit les données de la texture. Le contenu de data doit respecter les propriétés size et format car le backend essaiera de télécharger et d'utiliser les données comme s'il s'agissait d'une texture de taille et de format, et s'il y a un écart, le résultat sera quelque part entre un rendu incorrect de la texture, ou potentiellement un plantage.
Voir aussi textureData().
QSize QQuick3DTextureData::size() const
Renvoie la taille des données de texture en pixels.
Voir aussi setSize().
const QByteArray QQuick3DTextureData::textureData() const
Renvoie les données de texture actuelles définies par cet élément.
Voir aussi setTextureData().
© 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.