Sur cette page

QQuick3DTextureData Class

Classe de base permettant de définir des données de texture personnalisées. En savoir plus…

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 permet de spécifier des données de texture personnalisées pour un objet de type « Texture » dans une scène 3D de l’ Qt Quick.

Bien que cela ne soit pas strictement nécessaire, l’usage courant consiste à 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 d’implémentation :

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 des types s’effectuait via ` qmlRegisterType` :

qmlRegisterType<MyCustomTextureData>("Example", 1, 0, "MyCustomTextureData");

Dans Qt 6, l’approche par défaut consiste à utiliser l’enregistrement automatique à l’aide du système de construction. Au lieu d’appeler ` qmlRegisterType`, le fichier ` .pro ` peut désormais contenir :

CONFIG += qmltypes
QML_IMPORT_NAME = Example
QML_IMPORT_MAJOR_VERSION = 1

Avec CMake, l’enregistrement automatique est le comportement par défaut ; aucun paramétrage particulier n’est donc 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 membres

enum QQuick3DTextureData::Format

Renvoie le format de couleur des données de texture attribuées à 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 de 8 bits dans les canaux R, G, B et alpha.
QQuick3DTextureData::RGBA16F2Le format de couleur est considéré comme un nombre à virgule flottante de 16 bits dans les canaux R, G, B et alpha.
QQuick3DTextureData::RGBA32F3Le format de couleur est considéré comme un nombre à virgule flottante 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, G et B, avec un exposant partagé de 8 bits.
QQuick3DTextureData::R85Le format de 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 nombre à virgule flottante de 16 bits dans le canal R.
QQuick3DTextureData::R32F8Le format de couleur est considéré comme un nombre à virgule flottante 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 un format compressé BC2 avec les canaux R, G, B et alpha.
QQuick3DTextureData::BC311Le format de couleur est considéré comme un format compressé BC3 avec les canaux R, G, B et alpha.
QQuick3DTextureData::BC412Le format de couleur est considéré comme un format compressé BC4 avec un canal de couleur.
QQuick3DTextureData::BC513Le format de couleur est considéré comme un format compressé BC5 avec deux canaux de couleur.
QQuick3DTextureData::BC6H14Le format de couleur est considéré comme un format compressé BC6H avec trois canaux de couleur à plage dynamique élevée.
QQuick3DTextureData::BC715Le format de couleur est considéré comme un format compressé BC7 avec des canaux R, G, B et alpha.
QQuick3DTextureData::DXT1_RGBA16Le format de 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 des canaux R, G, B et alpha.
QQuick3DTextureData::DXT5_RGBA19Le format couleur est considéré comme un format compressé DXT5 avec des 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ù le canal alpha est de 1 bit.
QQuick3DTextureData::ETC2_RGBA822Le format de couleur est considéré comme un format compressé ETC2 avec des données RGBA8888.
QQuick3DTextureData::ASTC_4x423Le format couleur est considéré comme un format compressé ASTC avec une empreinte de bloc 4x4.
QQuick3DTextureData::ASTC_5x424Le format de couleur est considéré comme un format compressé ASTC avec une taille de bloc de 5x4.
QQuick3DTextureData::ASTC_5x525Le format de couleur est considéré comme un format compressé ASTC avec une taille de bloc de 5x5.
QQuick3DTextureData::ASTC_6x526Le format de couleur est considéré comme un format compressé ASTC avec une taille de bloc de 6x5.
QQuick3DTextureData::ASTC_6x627Le format de 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 blocs de 8x6.
QQuick3DTextureData::ASTC_8x830Le format couleur est considéré comme un format compressé ASTC avec une empreinte de blocs de 8x8.
QQuick3DTextureData::ASTC_10x531Le format couleur est considéré comme un format compressé ASTC avec une empreinte de blocs de 10x5.
QQuick3DTextureData::ASTC_10x632Le format couleur est considéré comme un format compressé ASTC avec une empreinte de blocs de 10×6.
QQuick3DTextureData::ASTC_10x833Le format couleur est considéré comme un format compressé ASTC avec une empreinte de blocs de 10×8.
QQuick3DTextureData::ASTC_10x1034Le format couleur est considéré comme un format compressé ASTC avec une empreinte de blocs de 10x10.
QQuick3DTextureData::ASTC_12x1035Le format couleur est considéré comme un format compressé ASTC avec une empreinte de blocs de 12x10.
QQuick3DTextureData::ASTC_12x1236Le format couleur est considéré comme un format compressé ASTC avec une empreinte de blocs de 12×12.

Remarque : à l'exception de RGBA8, tous les formats ne sont pas pris en charge lors de l'exécution, car cela dépend du backend utilisé ainsi que du matériel utilisé.

Remarque : le format « RGBE » est représenté en interne sous la forme d’une texture « RGBA8 », mais il est interprété comme décrit lorsqu’il est utilisé en tant que texture « lightProbe » ou « skybox ».

Remarque : l’utilisation de la valeur None entraînera l’application de 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 comportent de la transparence.

La valeur par défaut est false.

Voir aussi ` setHasTransparency()`.

void QQuick3DTextureData::setDepth(int depth)

Définit l'depth des données de texture en pixels. Si la valeur de 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'format e des données de texture.

Le format par défaut est /c RGBA8

Voir aussi format().

void QQuick3DTextureData::setHasTransparency(bool hasTransparency)

Définissez la propriété « hasTransparency » sur « true » si les données de texture comportent un canal alpha actif contenant des valeurs non opaques.

Cette option est utilisée par le moteur à des fins d’optimisation, afin que, pour les formats prenant en charge un canal alpha, il ne soit pas nécessaire de vérifier si chaque valeur est non opaque.

Voir également hasTransparency().

void QQuick3DTextureData::setSize(const QSize &size)

Définit l'size des données de texture en pixels.

Voir aussi size().

void QQuick3DTextureData::setTextureData(const QByteArray &data)

Définit les données de texture. Le contenu de ` data ` doit respecter les propriétés ` size ` et ` format `, car le moteur tentera de charger et d'utiliser ces données comme s'il s'agissait d'une texture de taille et de format correspondants ; tout écart entraînera soit un rendu incorrect de la texture, soit, éventuellement, un plantage.

Voir également 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.