QQuick3DTextureData Class
Basisklasse zur Definition eigener Texturdaten. Mehr...
Header: | #include <QQuick3DTextureData> |
Since: | Qt 6.0 |
In QML: | TextureData |
Inherits: | QQuick3DObject |
Öffentliche Typen
enum | Format { None, RGBA8, RGBA16F, RGBA32F, RGBE8, …, ASTC_12x12 } |
Öffentliche Funktionen
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 |
Detaillierte Beschreibung
Die Klasse QQuick3DTextureData kann verwendet werden, um benutzerdefinierte Texturdaten für eine Texture in einer Qt Quick 3D -Szene anzugeben.
Obwohl dies nicht unbedingt erforderlich ist, ist die typische Verwendung, von dieser Klasse zu erben. Die Unterklasse wird dann in QML sichtbar gemacht, indem sie im Typsystem registriert wird. Die Eigenschaft textureData einer Texture kann dann so eingestellt werden, dass sie auf eine Instanz des registrierten Typs verweist.
Beispiel-Implementierung:
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); } };
Diese Klasse kann dann als QML-Typ registriert und mit Texture verwendet werden.
In Qt 5 erfolgte die Typregistrierung mit qmlRegisterType:
qmlRegisterType<MyCustomTextureData>("Example", 1, 0, "MyCustomTextureData");
In Qt 6 ist der Standardansatz die automatische Registrierung mit Hilfe des Build-Systems. Anstatt qmlRegisterType aufzurufen, kann die Datei .pro
nun enthalten:
CONFIG += qmltypes QML_IMPORT_NAME = Example QML_IMPORT_MAJOR_VERSION = 1
Mit CMake ist die automatische Registrierung das Standardverhalten, so dass keine besonderen Einstellungen über das grundlegende QML-Modul-Setup hinaus erforderlich sind:
qt_add_qml_module(application
URI Example
VERSION 1.0
)
Die Klassenimplementierung sollte QML_NAMED_ELEMENT hinzufügen:
class CustomTextureData : public QQuick3DTextureData { Q_OBJECT QML_NAMED_ELEMENT(MyCustomTextureData) ... };
Der QML-Code kann dann den benutzerdefinierten Typ verwenden:
import Example 1.0 Model { source: "#Cube" materials: [ DefaultMaterial { diffuseMap: diffuseMapCustomTexture } ] Texture { id: diffuseMapCustomTexture textureData: MyCustomTextureData { } } }
Member Type Dokumentation
enum QQuick3DTextureData::Format
Gibt das Farbformat der in der Eigenschaft textureData zugewiesenen Texturdaten zurück.
Konstante | Wert | Beschreibung |
---|---|---|
QQuick3DTextureData::None | 0 | Das Farbformat ist nicht definiert |
QQuick3DTextureData::RGBA8 | 1 | Das Farbformat wird als 8-Bit-Integer in den R-, G-, B- und Alpha-Kanälen betrachtet. |
QQuick3DTextureData::RGBA16F | 2 | Das Farbformat wird als 16-Bit-Float in den R-, G-, B- und Alphakanälen betrachtet. |
QQuick3DTextureData::RGBA32F | 3 | Das Farbformat wird als 32-Bit-Float in den R-, G-, B- und Alphakanälen betrachtet. |
QQuick3DTextureData::RGBE8 | 4 | Das Farbformat wird als 8-Bit-Mantisse in den R-, G- und B-Kanälen und als gemeinsamer 8-Bit-Exponent betrachtet. |
QQuick3DTextureData::R8 | 5 | Das Farbformat wird als 8-Bit-Ganzzahl im R-Kanal betrachtet. |
QQuick3DTextureData::R16 | 6 | Das Farbformat wird als 16-Bit-Ganzzahl im R-Kanal betrachtet. |
QQuick3DTextureData::R16F | 7 | Das Farbformat wird als 16-Bit-Float im R-Kanal betrachtet. |
QQuick3DTextureData::R32F | 8 | Das Farbformat wird als 32-Bit-Float im R-Kanal betrachtet. |
QQuick3DTextureData::BC1 | 9 | Das Farbformat wird als komprimiertes BC1-Format mit R-, G-, B- und Alpha-Kanälen betrachtet. |
QQuick3DTextureData::BC2 | 10 | Das Farbformat gilt als komprimiertes BC2-Format mit R-, G-, B- und Alphakanälen. |
QQuick3DTextureData::BC3 | 11 | Das Farbformat gilt als komprimiertes BC3-Format mit R-, G-, B- und Alphakanälen. |
QQuick3DTextureData::BC4 | 12 | Das Farbformat wird als BC4-komprimiertes Format mit einem Farbkanal betrachtet. |
QQuick3DTextureData::BC5 | 13 | Das Farbformat gilt als BC5 komprimiertes Format mit zwei Farbkanälen. |
QQuick3DTextureData::BC6H | 14 | Das Farbformat gilt als BC6H-komprimiertes Format mit drei Farbkanälen mit hohem Dynamikbereich. |
QQuick3DTextureData::BC7 | 15 | Das Farbformat gilt als BC7-komprimiertes Format mit R-, G-, B- und Alpha-Kanälen. |
QQuick3DTextureData::DXT1_RGBA | 16 | Das Farbformat gilt als DXT1-komprimiertes Format mit R-, G-, B- und Alphakanälen. |
QQuick3DTextureData::DXT1_RGB | 17 | Das Farbformat gilt als DXT1-komprimiertes Format mit R-, G- und B-Kanälen. |
QQuick3DTextureData::DXT3_RGBA | 18 | Das Farbformat gilt als DXT3-komprimiertes Format mit R-, G-, B- und Alphakanälen. |
QQuick3DTextureData::DXT5_RGBA | 19 | Das Farbformat gilt als DXT5-komprimiertes Format mit R-, G-, B- und Alphakanälen. |
QQuick3DTextureData::ETC2_RGB8 | 20 | Das Farbformat gilt als komprimiertes ETC2-Format für RGB888-Daten. |
QQuick3DTextureData::ETC2_RGB8A1 | 21 | Das Farbformat wird als ETC2 komprimiertes Format für RGBA-Daten betrachtet, bei denen Alpha 1 Bit ist. |
QQuick3DTextureData::ETC2_RGBA8 | 22 | Das Farbformat gilt als ETC2 komprimiertes Format für RGBA8888 Daten. |
QQuick3DTextureData::ASTC_4x4 | 23 | Das Farbformat gilt als ASTC-komprimiertes Format mit 4x4-Block-Footprint. |
QQuick3DTextureData::ASTC_5x4 | 24 | Das Farbformat wird als ASTC-komprimiertes Format mit 5x4-Block-Footprint betrachtet. |
QQuick3DTextureData::ASTC_5x5 | 25 | Das Farbformat wird als ASTC-komprimiertes Format mit 5x5-Block-Footprint betrachtet. |
QQuick3DTextureData::ASTC_6x5 | 26 | Das Farbformat wird als ASTC-komprimiertes Format mit 6x5-Block-Footprint betrachtet. |
QQuick3DTextureData::ASTC_6x6 | 27 | Das Farbformat wird als ASTC-komprimiertes Format mit 6x6-Block-Footprint betrachtet. |
QQuick3DTextureData::ASTC_8x5 | 28 | Das Farbformat wird als ASTC-komprimiertes Format mit 8x5-Block-Footprint betrachtet. |
QQuick3DTextureData::ASTC_8x6 | 29 | Das Farbformat wird als ASTC-komprimiertes Format mit 8x6-Block-Footprint betrachtet. |
QQuick3DTextureData::ASTC_8x8 | 30 | Das Farbformat wird als ASTC-komprimiertes Format mit 8x8-Block-Footprint betrachtet. |
QQuick3DTextureData::ASTC_10x5 | 31 | Das Farbformat wird als ASTC-komprimiertes Format mit 10x5-Block-Footprint betrachtet. |
QQuick3DTextureData::ASTC_10x6 | 32 | Das Farbformat wird als ASTC-komprimiertes Format mit 10x6-Block-Footprint betrachtet. |
QQuick3DTextureData::ASTC_10x8 | 33 | Das Farbformat wird als ASTC-komprimiertes Format mit 10x8-Block-Footprint betrachtet. |
QQuick3DTextureData::ASTC_10x10 | 34 | Das Farbformat wird als ASTC-komprimiertes Format mit 10x10-Block-Footprint betrachtet. |
QQuick3DTextureData::ASTC_12x10 | 35 | Das Farbformat gilt als ASTC-komprimiertes Format mit 12x10 Block Footprint. |
QQuick3DTextureData::ASTC_12x12 | 36 | Das Farbformat wird als ASTC-komprimiertes Format mit 12x12-Block-Footprint betrachtet. |
Hinweis: Mit Ausnahme von RGBA8
wird nicht jedes Format zur Laufzeit unterstützt, da dies davon abhängt, welches Backend verwendet wird und welche Hardware zum Einsatz kommt.
Hinweis: RGBE
wird intern als RGBA8
dargestellt, wird aber wie beschrieben interpretiert, wenn es als lightProbe oder Skybox-Textur verwendet wird.
Hinweis: Bei Verwendung des Wertes None
wird der Standardwert von RGBA8
Dokumentation der Mitgliedsfunktionen
int QQuick3DTextureData::depth() const
Gibt die Tiefe der Texturdaten in Pixeln zurück.
Siehe auch setDepth().
QQuick3DTextureData::Format QQuick3DTextureData::format() const
Gibt das Format der Texturdaten zurück.
Siehe auch setFormat().
bool QQuick3DTextureData::hasTransparency() const
Gibt true
zurück, wenn die Texturdaten transparent sind.
Der Standardwert ist false
.
Siehe auch setHasTransparency().
void QQuick3DTextureData::setDepth(int depth)
Legt die depth der Texturdaten in Pixeln fest. Wird die Tiefe über 0 gesetzt, wird die Textur als 3D-Textur behandelt.
Siehe auch depth().
void QQuick3DTextureData::setFormat(QQuick3DTextureData::Format format)
Legt die format der Texturdaten fest.
Das Standardformat ist /c RGBA8
Siehe auch format().
void QQuick3DTextureData::setHasTransparency(bool hasTransparency)
Setzen Sie hasTransparency auf true, wenn die Texturdaten einen aktiven Alphakanal mit nicht-opaken Werten haben.
Dies wird von der Engine als Optimierung verwendet, damit bei Formaten, die einen Alphakanal unterstützen, nicht jeder Wert auf nicht-opake Werte geprüft werden muss.
Siehe auch hasTransparency().
void QQuick3DTextureData::setSize(const QSize &size)
Legt die size der Texturdaten in Pixeln fest.
Siehe auch size().
void QQuick3DTextureData::setTextureData(const QByteArray &data)
Legt die Texturdaten fest. Der Inhalt von data muss die Eigenschaften size und format respektieren, da das Backend versuchen wird, die Daten hochzuladen und zu verwenden, als ob es sich um eine Textur der Größe und des Formats handeln würde, und wenn es irgendeine Abweichung gibt, wird das Ergebnis irgendwo zwischen fehlerhafter Darstellung der Textur oder möglicherweise einem Absturz liegen.
Siehe auch textureData().
QSize QQuick3DTextureData::size() const
Gibt die Größe der Texturdaten in Pixeln zurück.
Siehe auch setSize().
const QByteArray QQuick3DTextureData::textureData() const
Gibt die aktuellen Texturdaten zurück, die durch dieses Element definiert sind.
Siehe auch setTextureData().
© 2025 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.