En esta página

QQuick3DTextureData Class

Clase base para definir datos de textura personalizados. Más...

Header: #include <QQuick3DTextureData>
Since: Qt 6.0
In QML: TextureData
Inherits: QQuick3DObject

Tipos Públicos

enum Format { None, RGBA8, RGBA16F, RGBA32F, RGBE8, …, ASTC_12x12 }

Funciones públicas

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

Descripción Detallada

La clase QQuick3DTextureData puede utilizarse para especificar datos de textura personalizados para un Texture en una escena 3D Qt Quick.

Aunque no es estrictamente necesario, el uso típico es heredar de esta clase. A continuación, la subclase se expone a QML registrándola en el sistema de tipos. La propiedad textureData de un Texture puede entonces establecerse para hacer referencia a una instancia del tipo registrado.

Ejemplo de implementación:

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);
    }
};

Esta clase puede registrarse como un tipo QML y utilizarse con Texture.

En Qt 5 el registro de tipos se realizaba con qmlRegisterType:

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

En Qt 6 el enfoque por defecto es usar el registro automático con la ayuda del sistema de construcción. En lugar de llamar a qmlRegisterType, el archivo .pro ahora puede contener:

CONFIG += qmltypes
QML_IMPORT_NAME = Example
QML_IMPORT_MAJOR_VERSION = 1

Con CMake, el registro automático es el comportamiento por defecto, por lo que no se necesita ninguna configuración especial más allá de la configuración básica del módulo QML:

qt_add_qml_module(application
    URI Example
    VERSION 1.0
)

La implementación de la clase debe añadir QML_NAMED_ELEMENT:

class CustomTextureData : public QQuick3DTextureData
{
    Q_OBJECT
    QML_NAMED_ELEMENT(MyCustomTextureData)
    ...
};

El código QML puede entonces utilizar el tipo personalizado:

import Example 1.0

Model {
    source: "#Cube"
    materials: [
        DefaultMaterial {
            diffuseMap: diffuseMapCustomTexture
        }
    ]
    Texture {
        id: diffuseMapCustomTexture
        textureData: MyCustomTextureData { }
    }
}

Documentación del tipo de miembro

enum QQuick3DTextureData::Format

Devuelve el formato de color de los datos de textura asignados en la propiedad textureData.

ConstanteValorDescripción
QQuick3DTextureData::None0El formato de color no está definido
QQuick3DTextureData::RGBA81El formato de color se considera un entero de 8 bits en los canales R, G, B y alfa.
QQuick3DTextureData::RGBA16F2El formato de color se considera un flotante de 16 bits en los canales R, G, B y alfa.
QQuick3DTextureData::RGBA32F3El formato de color se considera un flotante de 32 bits en los canales R, G, B y alfa.
QQuick3DTextureData::RGBE84El formato de color se considera como mantisa de 8 bits en los canales R, G y B y exponente compartido de 8 bits.
QQuick3DTextureData::R85El formato de color se considera un entero de 8 bits en el canal R.
QQuick3DTextureData::R166El formato de color se considera un entero de 16 bits en el canal R.
QQuick3DTextureData::R16F7El formato de color se considera flotante de 16 bits en el canal R.
QQuick3DTextureData::R32F8El formato de color se considera flotante de 32 bits en el canal R.
QQuick3DTextureData::BC19El formato de color se considera un formato comprimido BC1 con los canales R, G, B y alfa.
QQuick3DTextureData::BC210El formato de color se considera formato comprimido BC2 con los canales R, G, B y alfa.
QQuick3DTextureData::BC311El formato de color se considera formato comprimido BC3 con canales R, G, B y alfa.
QQuick3DTextureData::BC412El formato de color se considera formato comprimido BC4 con un canal de color.
QQuick3DTextureData::BC513El formato de color se considera formato comprimido BC5 con dos canales de color.
QQuick3DTextureData::BC6H14El formato de color se considera formato comprimido BC6H con tres canales de color de alto rango dinámico.
QQuick3DTextureData::BC715El formato de color se considera formato comprimido BC7 con canales R, G, B y alfa.
QQuick3DTextureData::DXT1_RGBA16El formato de color se considera formato comprimido DXT1 con canales R, G, B y alfa.
QQuick3DTextureData::DXT1_RGB17El formato de color se considera formato comprimido DXT1 con canales R, G y B.
QQuick3DTextureData::DXT3_RGBA18El formato de color se considera formato comprimido DXT3 con canales R, G, B y alfa.
QQuick3DTextureData::DXT5_RGBA19El formato de color se considera formato comprimido DXT5 con canales R, G, B y alfa.
QQuick3DTextureData::ETC2_RGB820El formato de color se considera formato comprimido ETC2 para datos RGB888.
QQuick3DTextureData::ETC2_RGB8A121El formato de color se considera formato comprimido ETC2 para datos RGBA con alfa de 1 bit.
QQuick3DTextureData::ETC2_RGBA822El formato de color se considera formato comprimido ETC2 con datos RGBA8888.
QQuick3DTextureData::ASTC_4x423El formato de color se considera formato comprimido ASTC con huella de bloque 4x4.
QQuick3DTextureData::ASTC_5x424El formato de color se considera un formato comprimido ASTC con una huella de bloque de 5x4.
QQuick3DTextureData::ASTC_5x525El formato de color se considera un formato comprimido ASTC con una huella de bloque de 5x5.
QQuick3DTextureData::ASTC_6x526El formato de color se considera un formato comprimido ASTC con una huella de bloque de 6x5.
QQuick3DTextureData::ASTC_6x627El formato de color se considera un formato comprimido ASTC con una huella de bloque de 6x6.
QQuick3DTextureData::ASTC_8x528El formato de color se considera un formato comprimido ASTC con una huella de bloque de 8x5.
QQuick3DTextureData::ASTC_8x629El formato de color se considera un formato comprimido ASTC con una huella de 8x6 bloques.
QQuick3DTextureData::ASTC_8x830El formato de color se considera un formato comprimido ASTC con una huella de bloque de 8x8.
QQuick3DTextureData::ASTC_10x531El formato de color se considera un formato comprimido ASTC con una huella de 10x5 bloques.
QQuick3DTextureData::ASTC_10x632El formato de color se considera un formato comprimido ASTC con una huella de 10x6 bloques.
QQuick3DTextureData::ASTC_10x833El formato de color se considera un formato comprimido ASTC con una huella de 10x8 bloques.
QQuick3DTextureData::ASTC_10x1034El formato de color se considera un formato comprimido ASTC con una huella de 10x10 bloques.
QQuick3DTextureData::ASTC_12x1035El formato de color se considera un formato comprimido ASTC con una huella de bloque de 12x10.
QQuick3DTextureData::ASTC_12x1236El formato de color se considera formato comprimido ASTC con una huella de bloque de 12x12.

Nota: A excepción de RGBA8, no todos los formatos son compatibles en tiempo de ejecución, ya que esto depende del backend que se esté utilizando, así como del hardware que se esté utilizando.

Nota: RGBE se representa internamente como RGBA8 pero se interpreta como se describe cuando se utiliza como una textura lightProbe o skybox.

Nota: Si se utiliza el valor None se asumirá el valor por defecto de RGBA8

Documentación de la Función Miembro

int QQuick3DTextureData::depth() const

Devuelve la profundidad de los datos de textura en píxeles.

Véase también setDepth().

QQuick3DTextureData::Format QQuick3DTextureData::format() const

Devuelve el formato de los datos de textura.

Véase también setFormat().

bool QQuick3DTextureData::hasTransparency() const

Devuelve true si los datos de textura tienen transparencia.

El valor por defecto es false.

Véase también setHasTransparency().

void QQuick3DTextureData::setDepth(int depth)

Establece la depth de los datos de la textura en píxeles. Establecer la profundidad por encima de 0 significa que la textura se maneja como una textura 3D.

Véase también depth().

void QQuick3DTextureData::setFormat(QQuick3DTextureData::Format format)

Establece el format de los datos de textura.

El formato por defecto es /c RGBA8

Véase también format().

void QQuick3DTextureData::setHasTransparency(bool hasTransparency)

Establece hasTransparency a true si los datos de textura tienen un canal alfa activo con valores no opacos.

Esto se utiliza como una optimización por el motor de modo que para los formatos que soportan un canal alfa no es necesario tener cada valor comprobado para los valores no opacos.

Véase también hasTransparency().

void QQuick3DTextureData::setSize(const QSize &size)

Establece el size de los datos de textura en píxeles.

Véase también size().

void QQuick3DTextureData::setTextureData(const QByteArray &data)

Establece los datos de la textura. El contenido de data debe respetar las propiedades size y format ya que el backend intentará cargar y usar los datos como si fueran una textura de tamaño y formato, y si hay alguna desviación el resultado será entre un renderizado incorrecto de la textura, o potencialmente un crash.

Véase también textureData().

QSize QQuick3DTextureData::size() const

Devuelve el tamaño de los datos de textura en píxeles.

Véase también setSize().

const QByteArray QQuick3DTextureData::textureData() const

Devuelve los datos de textura actuales definidos por este elemento.

Véase también 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.