Класс QQuick3DTextureData
Базовый класс для определения пользовательских данных текстуры. Подробнее...
| Заголовок: | #include <QQuick3DTextureData> |
| С момента: | Qt 6.0 |
| Инициализируется: | TextureData |
| Наследуется от: | QQuick3DObject |
Типы публичного доступа
| перечисление | Format { None, RGBA8, RGBA16F, RGBA32F, RGBE8, …, ASTC_12x12 } |
Функции публичного доступа
| QQuick3DTextureData::Format | format() const |
| bool | hasTransparency() const |
| 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 |
Подробное описание
Класс QQuick3DTextureData может быть использован для указания пользовательских данных текстуры для Texture в сцене Qt Quick 3D.
Хотя это не строго обязательно, типичное использование заключается в наследовании от этого класса. Затем подкласс экспонируется в QML путём его регистрации в системе типов. Свойство textureData объекта Texture может затем быть установлено для ссылки на экземпляр зарегистрированного типа.
Пример реализации:
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);
}
}; Этот класс может быть затем зарегистрирован как тип QML и использован с Texture.
В Qt 5 регистрация типов происходила с помощью qmlRegisterType:
qmlRegisterType<MyCustomTextureData>("Example", 1, 0, "MyCustomTextureData"); В Qt 6 стандартный подход — автоматическая регистрация с помощью системы сборки. Вместо вызова qmlRegisterType, файл .pro теперь может содержать:
CONFIG += qmltypes QML_IMPORT_NAME = Example QML_IMPORT_MAJOR_VERSION = 1
С CMake автоматическая регистрация является стандартным поведением, поэтому для настройки модуля QML не нужны никакие дополнительные параметры:
qt_add_qml_module(application
URI Example
VERSION 1.0
) Реализация класса должна добавить QML_NAMED_ELEMENT:
class CustomTextureData : public QQuick3DTextureData
{
Q_OBJECT
QML_NAMED_ELEMENT(MyCustomTextureData)
...
}; Код QML может затем использовать пользовательский тип:
import Example 1.0
Model {
source: "#Cube"
materials: [
DefaultMaterial {
diffuseMap: diffuseMapCustomTexture
}
]
Texture {
id: diffuseMapCustomTexture
textureData: MyCustomTextureData { }
}
} Документация типов членов
Перечисление QQuick3DTextureData::Format
Возвращает формат цвета данных текстуры, заданных в свойстве textureData.
| Постоянная | Значение | Описание |
|---|---|---|
QQuick3DTextureData::None |
0 |
Формат цвета не определён |
QQuick3DTextureData::RGBA8 |
1 |
Формат цвета рассматривается как 8-битовое целое число в каналах R, G, B и альфа. |
QQuick3DTextureData::RGBA16F |
2 |
Формат цвета рассматривается как 16-битовое число с плавающей запятой в каналах R, G, B и альфа. |
QQuick3DTextureData::RGBA32F |
3 |
Формат цвета рассматривается как 32-битовое число с плавающей запятой в каналах R, G, B и альфа. |
QQuick3DTextureData::RGBE8 |
4 |
Формат цвета рассматривается как 8-битовая мантисса в каналах R, G и B и 8-битный общий экспонента. |
QQuick3DTextureData::R8 |
5 |
Формат цвета рассматривается как 8-битовое целое число в канале R. |
QQuick3DTextureData::R16 |
6 |
Формат цвета рассматривается как 16-битовое целое число в канале R. |
QQuick3DTextureData::R16F |
7 |
Формат цвета рассматривается как 16-битовое число с плавающей запятой в канале R. |
QQuick3DTextureData::R32F |
8 |
Формат цвета рассматривается как 32-битовое число с плавающей запятой в канале R. |
QQuick3DTextureData::BC1 |
9 |
Формат цвета рассматривается как сжатый формат BC1 с каналами R, G, B и альфа. |
QQuick3DTextureData::BC2 |
10 |
Формат цвета рассматривается как сжатый формат BC2 с каналами R, G, B и альфа. |
QQuick3DTextureData::BC3 |
11 |
Формат цвета рассматривается как сжатый формат BC3 с каналами R, G, B и альфа. |
QQuick3DTextureData::BC4 |
12 |
Формат цвета рассматривается как сжатый формат BC4 с одним цветовым каналом. |
QQuick3DTextureData::BC5 |
13 |
Формат цвета рассматривается как сжатый формат BC5 с двумя цветовыми каналами. |
QQuick3DTextureData::BC6H |
14 |
Формат цвета рассматривается как сжатый формат BC6H с тремя цветовыми каналами высокой динамической гаммы. |
QQuick3DTextureData::BC7 |
15 |
Формат цвета рассматривается как сжатый формат BC7 с каналами R, G, B и альфа. |
QQuick3DTextureData::DXT1_RGBA |
16 |
Формат цвета рассматривается как сжатый формат DXT1 с каналами R, G, B и альфа. |
QQuick3DTextureData::DXT1_RGB |
17 |
Формат цвета рассматривается как сжатый формат DXT1 с каналами R, G и B. |
QQuick3DTextureData::DXT3_RGBA |
18 |
Формат цвета рассматривается как сжатый формат DXT3 с каналами R, G, B и альфа. |
QQuick3DTextureData::DXT5_RGBA |
19 |
Формат цвета рассматривается как сжатый формат DXT5 с каналами R, G, B и альфа. |
QQuick3DTextureData::ETC2_RGB8 |
20 |
Формат цвета рассматривается как сжатый формат ETC2 для данных RGB888. |
QQuick3DTextureData::ETC2_RGB8A1 |
21 |
Формат цвета рассматривается как сжатый формат ETC2 для данных RGBA, где альфа — 1 бит. |
QQuick3DTextureData::ETC2_RGBA8 |
22 |
Формат цвета рассматривается как сжатый формат ETC2 с данными RGBA8888. |
QQuick3DTextureData::ASTC_4x4 |
23 |
Формат цвета рассматривается как сжатый формат ASTC с блоком размером 4x4. |
QQuick3DTextureData::ASTC_5x4 |
24 |
Формат цвета рассматривается как сжатый формат ASTC с блоком размером 5x4. |
QQuick3DTextureData::ASTC_5x5 |
25 |
Формат цвета рассматривается как сжатый формат ASTC с блоком размером 5x5. |
QQuick3DTextureData::ASTC_6x5 |
26 |
Формат цвета рассматривается как сжатый формат ASTC с блоком размером 6x5. |
QQuick3DTextureData::ASTC_6x6 |
27 |
Формат цвета рассматривается как сжатый формат ASTC с блоком размером 6x6. |
QQuick3DTextureData::ASTC_8x5 |
28 |
Формат цвета рассматривается как сжатый формат ASTC с блоком размером 8x5. |
QQuick3DTextureData::ASTC_8x6 |
29 |
Формат цвета рассматривается как сжатый формат ASTC с блоком размером 8x6. |
QQuick3DTextureData::ASTC_8x8 |
30 |
Формат цвета рассматривается как сжатый формат ASTC с блоком размером 8x8. |
QQuick3DTextureData::ASTC_10x5 |
31 |
Формат цвета рассматривается как сжатый формат ASTC с блоком размером 10x5. |
QQuick3DTextureData::ASTC_10x6 |
32 |
Формат цвета рассматривается как сжатый формат ASTC с блоком размером 10x6. |
QQuick3DTextureData::ASTC_10x8 |
33 |
Формат цвета рассматривается как сжатый формат ASTC с блоком размером 10x8. |
QQuick3DTextureData::ASTC_10x10 |
34 |
Формат цвета рассматривается как сжатый формат ASTC с блоком размером 10x10. |
QQuick3DTextureData::ASTC_12x10 |
35 |
Формат цвета рассматривается как сжатый формат ASTC с блоком размером 12x10. |
QQuick3DTextureData::ASTC_12x12 |
36 |
Формат цвета рассматривается как сжатый формат ASTC с блоком размером 12x12. |
Примечание: За исключением RGBA8, не каждый формат поддерживается во время выполнения, так как это зависит от используемого бэкенда и используемого оборудования.
Примечание: RGBE интерпретируется как RGBA8, но интерпретируется, как описано, при использовании в качестве текстуры lightProbe или skybox.
Примечание: Использование значения None предполагает значение по умолчанию RGBA8
Документация функций-членов
QQuick3DTextureData::Format QQuick3DTextureData::format() const
Возвращает формат данных текстуры.
См. также setFormat().
bool QQuick3DTextureData::hasTransparency() const
Возвращает true, если данные текстуры имеют прозрачность.
Значение по умолчанию — false.
См. также setHasTransparency().
void QQuick3DTextureData::setFormat(QQuick3DTextureData::Format format)
Устанавливает format данных текстуры.
Формат по умолчанию — /c RGBA8.
См. также format().
void QQuick3DTextureData::setHasTransparency(bool hasTransparency)
Устанавливает hasTransparency в true, если данные текстуры содержат активный альфа-канал с непрозрачными значениями.
Это используется в качестве оптимизации движком, чтобы форматы, которые поддерживают альфа-канал, не проверяли каждое значение на непрозрачность.
См. также hasTransparency().
void QQuick3DTextureData::setSize(const QSize &size)
Устанавливает размер данных текстуры в пикселях.
См. также size().
void QQuick3DTextureData::setTextureData(const QByteArray &data)
Устанавливает данные текстуры. Содержимое data должно соответствовать свойствам size и format, так как бэкенд попытается загрузить и использовать данные как текстуру заданного размера и формата. Отклонения могут привести к некорректному отображению текстуры или к аварийному завершению работы.
См. также textureData().
QSize QQuick3DTextureData::size() const
Возвращает размер данных текстуры в пикселях.
См. также setSize().
const QByteArray QQuick3DTextureData::textureData() const
Возвращает текущие данные текстуры, определённые этим элементом.
См. также setTextureData().
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.2/qquick3dtexturedata.html