Spec-Zone.ru › Qt

Класс QQuick3DInstancing

Базовый класс для определения таблиц экземпляров. Подробнее...

Заголовок: #include <QQuick3DInstancing>
С тех пор: Qt 6.2
Инициализируется: Экземпляризация
Наследует: QQuick3DObject
  • Список всех членов, включая наследуемые члены

Свойства

  • depthSortingEnabled : bool
  • hasTransparency : bool
  • instanceCountOverride : int

Открытые функции

bool depthSortingEnabled() const
bool hasTransparency() const
int instanceCountOverride() const

Открытые слоты

void setDepthSortingEnabled(bool enabled)
void setHasTransparency(bool hasTransparency)
void setInstanceCountOverride(int instanceCountOverride)

Сигналы

void depthSortingEnabledChanged()
void hasTransparencyChanged()
void instanceCountOverrideChanged()

Защищенные функции

virtual QByteArray getInstanceBuffer(int *instanceCount) = 0
void markDirty()

Статические защищенные члены

QQuick3DInstancing::InstanceTableEntry calculateTableEntry(const QVector3D &position, const QVector3D &scale, const QVector3D &eulerRotation, const QColor &color, const QVector4D &customData = {})
QQuick3DInstancing::InstanceTableEntry calculateTableEntryFromQuaternion(const QVector3D &position, const QVector3D &scale, const QQuaternion &rotation, const QColor &color, const QVector4D &customData = {})

Подробное описание

Класс QQuick3DInstancing может быть унаследован для указания пользовательской таблицы экземпляров для модели в сцене Qt Quick 3D.

Этот класс является абстрактным: для его использования создайте подкласс и реализуйте getInstanceBuffer().

Документация по свойствам

depthSortingEnabled : bool

Содержит значение depth sorting, включенного для таблицы экземпляров. При включенном значении, экземпляры сортируются и отрисовываются от самого удаленного экземпляра от камеры к ближайшему, т.е. сзади-наперёд. Если выключено, что является значением по умолчанию, экземпляры отрисовываются в порядке их указания в таблице экземпляров.

Примечание: Экземпляры сортируются только между собой. Экземпляры не сортируются по отношению к другим объектам в сцене.

Примечание: Сортировка увеличивает время подготовки кадра, особенно при большом количестве экземпляров.

Функции доступа:

bool depthSortingEnabled() const
void setDepthSortingEnabled(bool enabled)

Сигнал уведомления:

void depthSortingEnabledChanged()

hasTransparency : bool

Установите это свойство в значение true, если таблица экземпляров содержит значения альфа, которые должны использоваться при отрисовке модели. Это свойство имеет значение только если модель непрозрачная: Если у модели есть прозрачный материал, или значение прозрачности меньше единицы, значение альфа из таблицы будет использоваться независимо.

Примечание: Включение альфа-смешивания может вызвать проблемы с отрисовкой, когда экземпляры перекрываются. См. документацию по альфа-смешиванию и экземпляризации для получения подробностей.

Функции доступа:

bool hasTransparency() const
void setHasTransparency(bool hasTransparency)

Сигнал уведомления:

void hasTransparencyChanged()

instanceCountOverride : int

Установите это свойство, чтобы ограничить количество экземпляров, не перегенерируя или не перезагружая таблицу экземпляров. Это позволяет очень недорогую анимацию количества отрисовываемых экземпляров.

Функции доступа:

int instanceCountOverride() const
void setInstanceCountOverride(int instanceCountOverride)

Сигнал уведомления:

void instanceCountOverrideChanged()

Документация по функциям-членам

[static protected] QQuick3DInstancing::InstanceTableEntry QQuick3DInstancing::calculateTableEntry(const QVector3D &position, const QVector3D &scale, const QVector3D &eulerRotation, const QColor &color, const QVector4D &customData = {})

Преобразует position scale eulerRotation color и customData в формат таблицы экземпляров, ожидаемый стандартными шейдерами вершин. Типичный шаблон:

QByteArray MyInstanceTable::getInstanceBuffer(int *instanceCount)
{
    QByteArray instanceData;

    ...

    auto entry = calculateTableEntry({xPos, yPos, zPos}, {xScale, yScale, zScale}, {xRot, yRot, zRot}, color, {});
    instanceData.append(reinterpret_cast<const char *>(&entry), sizeof(entry));

См. также calculateTableEntryFromQuaternion.

[static protected] QQuick3DInstancing::InstanceTableEntry QQuick3DInstancing::calculateTableEntryFromQuaternion(const QVector3D &position, const QVector3D &scale, const QQuaternion &rotation, const QColor &color, const QVector4D &customData = {})

Преобразует position scale rotation color и customData в формат таблицы экземпляров, ожидаемый стандартными шейдерами вершин.

Это то же самое, что и calculateTableEntry(), но с использованием кватерниона для указания вращения.

[pure virtual protected] QByteArray QQuick3DInstancing::getInstanceBuffer(int *instanceCount)

Реализуйте эту функцию для возврата содержимого таблицы экземпляров. Количество экземпляров должно быть возвращено в instanceCount. Подкласс отвечает за кэширование результата при необходимости. Если таблица экземпляров изменяется, подкласс должен вызвать markDirty().

[protected] void QQuick3DInstancing::markDirty()

Пометить, что данные экземпляров изменились и должны быть загружены заново.

См. также getInstanceBuffer и instanceCountOverride.

© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.2/qquick3dinstancing.html

Spec-Zone.ru

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