Spec-Zone.ru › Qt

Класс 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API