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 = {}) |
属性说明
depthSortingEnabled : bool
保存实例表启用深度排序的值。当启用时,实例将从距离相机最远的实例开始排序和渲染到最近的实例,即由后至前。如果禁用(默认情况),则实例将按照在实例表中指定的顺序渲染。
注意: 实例只对彼此进行排序。实例不会与场景中的其他对象进行排序。
注意: 排序会增加帧准备时间,特别是在实例数量很多的情况下。
访问函数
bool | depthSortingEnabled() const |
void | setDepthSortingEnabled(bool enabled) |
通知信号
void | depthSortingEnabledChanged() |
hasTransparency : bool
将此属性设置为true,如果实例表包含在渲染模型时应使用的alpha值。此属性仅在模型不透明时才有意义:如果模型具有透明的材料或小于一的不透明度,则会使用表中的alpha值。
注意: 启用alpha混合可能会在实例重叠时造成渲染问题。有关详细信息,请参阅alpha混合和实例文档。
访问函数
bool | hasTransparency() const |
void | setHasTransparency(bool hasTransparency) |
通知信号
void | hasTransparencyChanged() |
instanceCountOverride : int
将该属性设置为限制实例数量,而不重新生成或重新上传实例表。这允许以非常低廉的成本对渲染的实例数量进行动画处理。
访问函数
int | instanceCountOverride() const |
void | setInstanceCountOverride(int instanceCountOverride) |
通知信号
void | instanceCountOverrideChanged() |
成员函数文档
[静态受保护]
QQuick3DInstancing::InstanceTableEntry QQuick3DInstancing::calculateTableEntry(const QVector3D &position, const QVector3D &scale, const QVector3D &eulerRotation, const QColor &color, const QVector4D &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.
[静态受保护]
QQuick3DInstancing::InstanceTableEntry QQuick3DInstancing::calculateTableEntryFromQuaternion(const QVector3D &position, const QVector3D &scale, const QQuaternion &rotation, const QColor &color, const QVector4D &customData = {})
将位置 比例 旋转 颜色 和 自定义数据 转换为标准顶点着色器预期的实例表格式。
这与calculateTableEntry()相同,只不过使用四元数指定旋转。
[纯虚保护]
QByteArray QQuick3DInstancing::getInstanceBuffer(int *instanceCount)
实现此函数以返回实例表格的内容。实例的数量应返回在 instanceCount 中。子类负责在必要时缓存结果。如果实例表格发生变化,子类应调用 markDirty().
[保护]
void QQuick3DInstancing::markDirty()
标记实例数据已更改,必须重新上传。
© 2024 Qt公司有限。此处包含的文档贡献是各自所有者的版权。此处提供的文档根据自由软件基金会在其发布的 GNU自由文档许可证版本1.3 的条款授权。Qt及其相关标志是芬兰和/或其他国家的Qt公司的商标。所有其他商标均为其各自所有者的财产。