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.
| Constante | Valor | Descripción |
|---|---|---|
QQuick3DTextureData::None | 0 | El formato de color no está definido |
QQuick3DTextureData::RGBA8 | 1 | El formato de color se considera un entero de 8 bits en los canales R, G, B y alfa. |
QQuick3DTextureData::RGBA16F | 2 | El formato de color se considera un flotante de 16 bits en los canales R, G, B y alfa. |
QQuick3DTextureData::RGBA32F | 3 | El formato de color se considera un flotante de 32 bits en los canales R, G, B y alfa. |
QQuick3DTextureData::RGBE8 | 4 | El formato de color se considera como mantisa de 8 bits en los canales R, G y B y exponente compartido de 8 bits. |
QQuick3DTextureData::R8 | 5 | El formato de color se considera un entero de 8 bits en el canal R. |
QQuick3DTextureData::R16 | 6 | El formato de color se considera un entero de 16 bits en el canal R. |
QQuick3DTextureData::R16F | 7 | El formato de color se considera flotante de 16 bits en el canal R. |
QQuick3DTextureData::R32F | 8 | El formato de color se considera flotante de 32 bits en el canal R. |
QQuick3DTextureData::BC1 | 9 | El formato de color se considera un formato comprimido BC1 con los canales R, G, B y alfa. |
QQuick3DTextureData::BC2 | 10 | El formato de color se considera formato comprimido BC2 con los canales R, G, B y alfa. |
QQuick3DTextureData::BC3 | 11 | El formato de color se considera formato comprimido BC3 con canales R, G, B y alfa. |
QQuick3DTextureData::BC4 | 12 | El formato de color se considera formato comprimido BC4 con un canal de color. |
QQuick3DTextureData::BC5 | 13 | El formato de color se considera formato comprimido BC5 con dos canales de color. |
QQuick3DTextureData::BC6H | 14 | El formato de color se considera formato comprimido BC6H con tres canales de color de alto rango dinámico. |
QQuick3DTextureData::BC7 | 15 | El formato de color se considera formato comprimido BC7 con canales R, G, B y alfa. |
QQuick3DTextureData::DXT1_RGBA | 16 | El formato de color se considera formato comprimido DXT1 con canales R, G, B y alfa. |
QQuick3DTextureData::DXT1_RGB | 17 | El formato de color se considera formato comprimido DXT1 con canales R, G y B. |
QQuick3DTextureData::DXT3_RGBA | 18 | El formato de color se considera formato comprimido DXT3 con canales R, G, B y alfa. |
QQuick3DTextureData::DXT5_RGBA | 19 | El formato de color se considera formato comprimido DXT5 con canales R, G, B y alfa. |
QQuick3DTextureData::ETC2_RGB8 | 20 | El formato de color se considera formato comprimido ETC2 para datos RGB888. |
QQuick3DTextureData::ETC2_RGB8A1 | 21 | El formato de color se considera formato comprimido ETC2 para datos RGBA con alfa de 1 bit. |
QQuick3DTextureData::ETC2_RGBA8 | 22 | El formato de color se considera formato comprimido ETC2 con datos RGBA8888. |
QQuick3DTextureData::ASTC_4x4 | 23 | El formato de color se considera formato comprimido ASTC con huella de bloque 4x4. |
QQuick3DTextureData::ASTC_5x4 | 24 | El formato de color se considera un formato comprimido ASTC con una huella de bloque de 5x4. |
QQuick3DTextureData::ASTC_5x5 | 25 | El formato de color se considera un formato comprimido ASTC con una huella de bloque de 5x5. |
QQuick3DTextureData::ASTC_6x5 | 26 | El formato de color se considera un formato comprimido ASTC con una huella de bloque de 6x5. |
QQuick3DTextureData::ASTC_6x6 | 27 | El formato de color se considera un formato comprimido ASTC con una huella de bloque de 6x6. |
QQuick3DTextureData::ASTC_8x5 | 28 | El formato de color se considera un formato comprimido ASTC con una huella de bloque de 8x5. |
QQuick3DTextureData::ASTC_8x6 | 29 | El formato de color se considera un formato comprimido ASTC con una huella de 8x6 bloques. |
QQuick3DTextureData::ASTC_8x8 | 30 | El formato de color se considera un formato comprimido ASTC con una huella de bloque de 8x8. |
QQuick3DTextureData::ASTC_10x5 | 31 | El formato de color se considera un formato comprimido ASTC con una huella de 10x5 bloques. |
QQuick3DTextureData::ASTC_10x6 | 32 | El formato de color se considera un formato comprimido ASTC con una huella de 10x6 bloques. |
QQuick3DTextureData::ASTC_10x8 | 33 | El formato de color se considera un formato comprimido ASTC con una huella de 10x8 bloques. |
QQuick3DTextureData::ASTC_10x10 | 34 | El formato de color se considera un formato comprimido ASTC con una huella de 10x10 bloques. |
QQuick3DTextureData::ASTC_12x10 | 35 | El formato de color se considera un formato comprimido ASTC con una huella de bloque de 12x10. |
QQuick3DTextureData::ASTC_12x12 | 36 | El 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.