Класс QQuick3DTextureData
Базовый класс для определения пользовательских данных текстуры. Подробнее...
| Заголовок: | #include <QQuick3DTextureData> |
| С момента: | Qt 6.0 |
| Инициализируется: | TextureData |
| Наследуется от: | QQuick3DObject |
Типы публичного доступа
| перечисление | Формат { None, RGBA8, RGBA16F, RGBA32F, RGBE8, …, ASTC_12x12 } |
Публичные функции
| QQuick3DTextureData::Формат | формат() const |
| bool | имеетПрозрачность() const |
| void | установитьФормат(QQuick3DTextureData::Формат формат) |
| void | установитьИмеетПрозрачность(bool имеетПрозрачность) |
| void | установитьРазмер(const QSize &размер) |
| void | установитьДанныеТекстуры(const QByteArray &данные) |
| QSize | размер() const |
| const QByteArray | данныеТекстуры() const |
Подробное описание
Класс QQuick3DTextureData может использоваться для задания пользовательских данных текстуры для Текстуры в сцене Qt Quick 3D.
Хотя это не строго обязательно, типичное использование заключается в наследовании от этого класса. Затем подкласс экспонируется в QML путём регистрации его в системе типов. Свойство textureData Текстуры может затем быть установлено для ссылки на экземпляр зарегистрированного типа.
Пример реализации:
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 и использован с Текстурой.
В 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 эквивалент:
set_target_properties(application PROPERTIES
QT_QML_MODULE_VERSION 1.0
QT_QML_MODULE_URI Example
)
qt6_qml_type_registration(application) Реализация класса должна добавить 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::Формат
Возвращает цветовой формат данных текстуры, заданных в свойстве 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)
Устанавливает формат данных текстуры.
Формат по умолчанию — /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.1/qquick3dtexturedata.html