Sur cette page

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.

ConstanteValeurDescription
QQuick3DTextureData::None0Le format de couleur n'est pas défini
QQuick3DTextureData::RGBA81Le format de couleur est considéré comme un entier 8 bits dans les canaux R, G, B et alpha.
QQuick3DTextureData::RGBA16F2Le format de couleur est considéré comme un flottant de 16 bits dans les canaux R, G, B et alpha.
QQuick3DTextureData::RGBA32F3Le format de couleur est considéré comme un flottant de 32 bits dans les canaux R, G, B et alpha.
QQuick3DTextureData::RGBE84Le 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::R85Le format de la couleur est considéré comme un entier de 8 bits dans le canal R.
QQuick3DTextureData::R166Le format de couleur est considéré comme un entier de 16 bits dans le canal R.
QQuick3DTextureData::R16F7Le format de couleur est considéré comme un flottant de 16 bits dans le canal R.
QQuick3DTextureData::R32F8Le format de couleur est considéré comme un flottant de 32 bits dans le canal R.
QQuick3DTextureData::BC19Le format de couleur est considéré comme un format compressé BC1 avec les canaux R, G, B et alpha.
QQuick3DTextureData::BC210Le format de couleur est considéré comme le format compressé BC2 avec les canaux R, G, B et alpha.
QQuick3DTextureData::BC311Le format de couleur est considéré comme le format compressé BC3 avec les canaux R, V, B et alpha.
QQuick3DTextureData::BC412Le format couleur est considéré comme le format compressé BC4 avec un seul canal couleur.
QQuick3DTextureData::BC513Le format de couleur est considéré comme le format compressé BC5 avec deux canaux de couleur.
QQuick3DTextureData::BC6H14Le format de couleur est considéré comme le format compressé BC6H avec trois canaux de couleur à gamme dynamique élevée.
QQuick3DTextureData::BC715Le format de couleur est considéré comme le format compressé BC7 avec les canaux R, G, B et alpha.
QQuick3DTextureData::DXT1_RGBA16Le format couleur est considéré comme un format compressé DXT1 avec des canaux R, G, B et alpha.
QQuick3DTextureData::DXT1_RGB17Le format couleur est considéré comme un format compressé DXT1 avec des canaux R, G et B.
QQuick3DTextureData::DXT3_RGBA18Le format de couleur est considéré comme un format compressé DXT3 avec les canaux R, G, B et alpha.
QQuick3DTextureData::DXT5_RGBA19Le format de couleur est considéré comme le format compressé DXT5 avec les canaux R, G, B et alpha.
QQuick3DTextureData::ETC2_RGB820Le format de couleur est considéré comme un format compressé ETC2 pour les données RGB888.
QQuick3DTextureData::ETC2_RGB8A121Le 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_RGBA822Le format de couleur est considéré comme le format compressé ETC2 pour les données RGBA8888.
QQuick3DTextureData::ASTC_4x423Le format couleur est considéré comme un format compressé ASTC avec une empreinte de bloc de 4x4.
QQuick3DTextureData::ASTC_5x424Le format couleur est considéré comme un format compressé ASTC avec une empreinte de bloc de 5x4.
QQuick3DTextureData::ASTC_5x525Le format couleur est considéré comme un format compressé ASTC avec une empreinte de bloc de 5x5.
QQuick3DTextureData::ASTC_6x526Le format couleur est considéré comme un format compressé ASTC avec une empreinte de bloc de 6x5.
QQuick3DTextureData::ASTC_6x627Le format couleur est considéré comme un format compressé ASTC avec une empreinte de bloc 6x6.
QQuick3DTextureData::ASTC_8x528Le format couleur est considéré comme un format compressé ASTC avec une empreinte de bloc 8x5.
QQuick3DTextureData::ASTC_8x629Le format couleur est considéré comme un format compressé ASTC avec une empreinte de bloc 8x6.
QQuick3DTextureData::ASTC_8x830Le format couleur est considéré comme un format compressé ASTC avec une empreinte de bloc 8x8.
QQuick3DTextureData::ASTC_10x531Le format couleur est considéré comme un format compressé ASTC avec une empreinte de bloc 10x5.
QQuick3DTextureData::ASTC_10x632Le format couleur est considéré comme un format compressé ASTC avec une empreinte de bloc 10x6.
QQuick3DTextureData::ASTC_10x833Le format couleur est considéré comme un format compressé ASTC avec une empreinte de bloc 10x8.
QQuick3DTextureData::ASTC_10x1034Le format couleur est considéré comme un format compressé ASTC avec une empreinte de bloc de 10x10.
QQuick3DTextureData::ASTC_12x1035Le format couleur est considéré comme un format compressé ASTC avec une empreinte de bloc de 12x10.
QQuick3DTextureData::ASTC_12x1236Le 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.