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公司的商标。所有其他商标均为其各自所有者的财产。