1.性能瓶颈原因
- 图元过于复杂
(1)图元内的三角形面片过多。对于CAD平台大场景,单帧三角面片数量达到5000万。
(2)图元的各种计算过多。
- 过多的图元。例如土建场景:将近20万的构件,绘制次数将近80万次左右。
2.游戏软件与设计软件渲染差异
- 直观感受差异
- 实际情况
- 数据对比
3.性能优化策略
- 图元合并
- LOD显示
- VBO
- 实例绘制。对于几何数据相同的图元,可以将其绑定后进入渲染管线,从而减少绘制数量。实例绘制的限制:对于OpenGL版本要求高、场景组织条件和管理要求高
- 遮挡剔除
适用场景:多栋建筑,多个楼层,多个房间,多个墙体组成,房间内部也有许多建筑元素。
视锥剔除:
整体观察 全部物体都要渲染; 效果较弱
局部观察 视锥内的物体需要渲染;有一定效果
遮挡剔除:
整体观察 靠近观察者的楼体可见、墙体可见、房间可见;有一定效果
局部观察 墙体和房间可见,多数图元被遮挡,而不用渲染;效果较好
两种剔除算法不冲突,遮挡剔除可以作为视锥剔除的补充。
- 分批绘制。大模型优先显示策略,分批绘制、优先显示像素贡献大的图元。
在开启批量渲染的情况下,进行批量更新,有可能在分批渲染的过程中更改场景树,会导致渲染队列中出现异常。
分批渲染开启时,如果主场景较大的话,会有闪烁的情况。
- 屏幕缓存
实现原理
使用场景:大规模场景中存在,临时修改的图元。
在屏幕缓存开启时需要初始化工作区并根据场景包围盒大小动态进行设置,保证主场景和临时绘制在相同的视景体内且不被裁剪掉。
分批渲染开启时如果主场景规模较大,会有闪烁的情况。
分批渲染和屏幕渲染是相对独立的使用,不必须同时使用。
如果分批渲染和屏幕缓存同时开启时,临时节点会在最后一个批次呈现在屏幕上。
- 预处理式的遮挡剔除
- 基于相机的预处理可视化查表
4.总结
要想提高性能,把每帧的绘制数量降下来。