QQuick3DTextureData Class
Basisklasse zur Definition benutzerdefinierter 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 |
Ausführliche Beschreibung
Die Klasse `QQuick3DTextureData` kann verwendet werden, um benutzerdefinierte Texturdaten für ein ` Texture ` in einer ` Qt Quick 3D `-Szene festzulegen.
Obwohl dies nicht zwingend erforderlich ist, wird in der Regel von dieser Klasse abgeleitet. Die Unterklasse wird dann durch Registrierung im Typsystem für QML verfügbar gemacht. Die Eigenschaft „ textureData “ eines „ Texture “ kann anschließend so gesetzt werden, dass sie auf eine Instanz des registrierten Typs verweist.
Beispiel für eine 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 mithilfe des Build-Systems. Anstatt ` qmlRegisterType` aufzurufen, kann die Datei ` .pro ` nun Folgendes enthalten:
CONFIG += qmltypes
QML_IMPORT_NAME = Example
QML_IMPORT_MAJOR_VERSION = 1Bei CMake ist die automatische Registrierung das Standardverhalten, sodass über die grundlegende Einrichtung des QML-Moduls hinaus keine besonderen Einstellungen 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 { }
}
}Dokumentation zu Mitgliedstypen
enum QQuick3DTextureData::Format
Gibt das Farbformat der Texturdaten zurück, die der Eigenschaft „ textureData “ zugewiesen wurden.
| Konstante | Wert | Beschreibung |
|---|---|---|
QQuick3DTextureData::None | 0 | Das Farbformat ist nicht definiert |
QQuick3DTextureData::RGBA8 | 1 | Das Farbformat wird als 8-Bit-Ganzzahl in den R-, G-, B- und Alpha-Kanälen betrachtet. |
QQuick3DTextureData::RGBA16F | 2 | Das Farbformat wird in den R-, G-, B- und Alpha-Kanälen als 16-Bit-Float-Wert behandelt. |
QQuick3DTextureData::RGBA32F | 3 | Das Farbformat wird in den R-, G-, B- und Alpha-Kanälen als 32-Bit-Float-Wert 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 im R-Kanal als 8-Bit-Ganzzahl betrachtet. |
QQuick3DTextureData::R16 | 6 | Das Farbformat wird im R-Kanal als 16-Bit-Ganzzahl betrachtet. |
QQuick3DTextureData::R16F | 7 | Das Farbformat wird im R-Kanal als 16-Bit-Float-Wert behandelt. |
QQuick3DTextureData::R32F | 8 | Das Farbformat wird als 32-Bit-Float-Wert im R-Kanal betrachtet. |
QQuick3DTextureData::BC1 | 9 | Das Farbformat wird als BC1-komprimiertes Format mit R-, G-, B- und Alpha-Kanälen betrachtet. |
QQuick3DTextureData::BC2 | 10 | Das Farbformat wird als BC2-komprimiertes Format mit R-, G-, B- und Alphakanälen betrachtet. |
QQuick3DTextureData::BC3 | 11 | Das Farbformat wird als BC3-komprimiertes Format mit R-, G-, B- und Alpha-Kanälen betrachtet. |
QQuick3DTextureData::BC4 | 12 | Das Farbformat wird als BC4-komprimiertes Format mit einem Farbkanal betrachtet. |
QQuick3DTextureData::BC5 | 13 | Das Farbformat wird als BC5-komprimiertes Format mit zwei Farbkanälen betrachtet. |
QQuick3DTextureData::BC6H | 14 | Das Farbformat wird als komprimiertes BC6H-Format mit drei Farbkanälen mit hohem Dynamikumfang angesehen. |
QQuick3DTextureData::BC7 | 15 | Das Farbformat wird als komprimiertes BC7-Format mit R-, G-, B- und Alpha-Kanälen betrachtet. |
QQuick3DTextureData::DXT1_RGBA | 16 | Das Farbformat wird als komprimiertes DXT1-Format mit R-, G-, B- und Alpha-Kanälen betrachtet. |
QQuick3DTextureData::DXT1_RGB | 17 | Das Farbformat wird als komprimiertes DXT1-Format mit R-, G- und B-Kanälen betrachtet. |
QQuick3DTextureData::DXT3_RGBA | 18 | Das Farbformat wird als komprimiertes DXT3-Format mit R-, G-, B- und Alpha-Kanälen betrachtet. |
QQuick3DTextureData::DXT5_RGBA | 19 | Das Farbformat wird als komprimiertes DXT5-Format mit R-, G-, B- und Alpha-Kanälen betrachtet. |
QQuick3DTextureData::ETC2_RGB8 | 20 | Das Farbformat wird als komprimiertes ETC2-Format für RGB888-Daten betrachtet. |
QQuick3DTextureData::ETC2_RGB8A1 | 21 | Das Farbformat wird als komprimiertes ETC2-Format für RGBA-Daten betrachtet, bei denen der Alpha-Kanal 1 Bit breit ist. |
QQuick3DTextureData::ETC2_RGBA8 | 22 | Das Farbformat wird als komprimiertes ETC2-Format mit RGBA8888-Daten betrachtet. |
QQuick3DTextureData::ASTC_4x4 | 23 | Das Farbformat wird als komprimiertes ASTC-Format mit einer 4x4-Blockgröße betrachtet. |
QQuick3DTextureData::ASTC_5x4 | 24 | Das Farbformat wird als komprimiertes ASTC-Format mit einer Blockgröße von 5×4 betrachtet. |
QQuick3DTextureData::ASTC_5x5 | 25 | Das Farbformat wird als ASTC-komprimiertes Format mit einer Blockgröße von 5×5 betrachtet. |
QQuick3DTextureData::ASTC_6x5 | 26 | Das Farbformat wird als ASTC-komprimiertes Format mit einer Blockgröße von 6x5 betrachtet. |
QQuick3DTextureData::ASTC_6x6 | 27 | Das Farbformat wird als komprimiertes ASTC-Format mit einer Blockgröße von 6x6 betrachtet. |
QQuick3DTextureData::ASTC_8x5 | 28 | Das Farbformat wird als komprimiertes ASTC-Format mit einer Blockgröße von 8×5 betrachtet. |
QQuick3DTextureData::ASTC_8x6 | 29 | Das Farbformat wird als komprimiertes ASTC-Format mit einer Blockgröße von 8×6 betrachtet. |
QQuick3DTextureData::ASTC_8x8 | 30 | Das Farbformat wird als komprimiertes ASTC-Format mit einer Blockgröße von 8×8 betrachtet. |
QQuick3DTextureData::ASTC_10x5 | 31 | Das Farbformat wird als komprimiertes ASTC-Format mit einer Blockgröße von 10×5 betrachtet. |
QQuick3DTextureData::ASTC_10x6 | 32 | Das Farbformat wird als komprimiertes ASTC-Format mit einer Blockgröße von 10×6 betrachtet. |
QQuick3DTextureData::ASTC_10x8 | 33 | Das Farbformat wird als komprimiertes ASTC-Format mit einer Blockgröße von 10×8 betrachtet. |
QQuick3DTextureData::ASTC_10x10 | 34 | Das Farbformat wird als komprimiertes ASTC-Format mit einer Blockgröße von 10×10 betrachtet. |
QQuick3DTextureData::ASTC_12x10 | 35 | Das Farbformat wird als komprimiertes ASTC-Format mit einer Blockgröße von 12×10 betrachtet. |
QQuick3DTextureData::ASTC_12x12 | 36 | Das Farbformat wird als komprimiertes ASTC-Format mit einer Blockgröße von 12×12 betrachtet. Hinweis: Mit Ausnahme von „ Hinweis: „ Hinweis: Bei Verwendung des Werts „ |
Dokumentation der Member-Funktionen
int QQuick3DTextureData::depth() const
Gibt die Farbtiefe 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 Transparenz aufweisen.
Der Standardwert ist „ false “.
Siehe auch setHasTransparency().
void QQuick3DTextureData::setDepth(int depth)
Legt die „ depth “ der Texturdaten in Pixeln fest. Wird ein Wert größer als 0 festgelegt, wird die Textur als 3D-Textur behandelt.
Siehe auch ` depth()`
void QQuick3DTextureData::setFormat(QQuick3DTextureData::Format format)
Legt das Format „ 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-undurchsichtigen Werten enthalten.
Dies wird von der Engine als Optimierung genutzt, damit bei Formaten, die einen Alphakanal unterstützen, nicht jeder Wert auf nicht-opake Werte überprü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 den Eigenschaften ` size ` und ` format ` entsprechen, da das Backend versucht, die Daten so hochzuladen und zu verwenden, als handele es sich um eine Textur mit der angegebenen Größe und dem angegebenen Format. Bei Abweichungen kann dies zu einer fehlerhaften Darstellung der Textur oder möglicherweise zu einem Absturz führen.
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()“.
© 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.