Spec-Zone.ru › Qt 6.1

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

Spec-Zone.ru

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