Класс QQuick3DInstancing
Базовый класс для определения таблиц экземпляров. Подробнее...
| Заголовок: | #include <QQuick3DInstancing> |
| С момента: | Qt 6.1 |
| Инициализируется: | Экземпляризация |
| Наследует: | QQuick3DObject |
Этот класс находится в стадии разработки и может быть изменен.
Свойства
- hasTransparency : bool
- instanceCountOverride : int
Открытые функции
| bool | hasTransparency() const |
| int | instanceCountOverride() const |
Открытые слоты
| void | setHasTransparency(bool hasTransparency) |
| void | setInstanceCountOverride(int instanceCountOverride) |
Сигналы
| void | hasTransparencyChanged() |
| void | instanceCountOverrideChanged() |
Защищенные функции
(preliminary) virtual QByteArray |
getInstanceBuffer(int *instanceCount) = 0 |
Статические защищенные члены
(preliminary) QQuick3DInstancing::InstanceTableEntry |
calculateTableEntry(const QVector3D &position, const QVector3D &scale, const QVector3D &eulerRotation, const QColor &color, const QVector4D &customData = {}) |
(preliminary) QQuick3DInstancing::InstanceTableEntry |
calculateTableEntryFromQuaternion(const QVector3D &position, const QVector3D &scale, const QQuaternion &rotation, const QColor &color, const QVector4D &customData = {}) |
Подробное описание
Класс QQuick3DInstancing может быть унаследован для указания настраиваемой таблицы экземпляров для модели в сцене Qt Quick 3D.
Этот класс является абстрактным: для его использования создайте подкласс и реализуйте getInstanceBuffer().
Документация по свойствам
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. Подкласс отвечает за кэширование результата при необходимости.
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.1/qquick3dinstancing.html