合并网格
如之前在线框可视化解释中提到的,减少三角形和顶点的数量永远都是提高性能的方法,但是很多时候,一个单独网格比多个网格刻画集合图形的性能要好得多(一个有1000个顶点的网格可能比10个有100个顶点的网格的更新和渲染都快)。这是因为不仅这些网格可能会分别单独调用GPU来绘制,也因为UE4会为每个网格单独保存和更新变换信息,而且可能检查这些独立网格间的碰撞。所以,如果没有功能性的原因来设置单独网格的话,你应该考虑在把它们引入UE4之前在DCC工具中选择合并它们。
关于合并网格反对的说法是:一个单独的网格可能不能被部分剔除,所以如果它的任何一部分是可见的,整个网格都会渲染。由于这个原因,可能把你的整个关卡都合并成一个单独网格可能不是一个好主意,但是让每一个三角形都成为一个单独网格同样也不是最理想的,所以在两种极端中取得平衡至关重要。
由大量网格组成的单一对象
使用由很多独立网格组成的对象(比如说一辆车的每个独立部分由成百成千的单独网格组成)对于引擎来说可能任务非常繁重,如果引擎在仿真时把每个网格当做独立对象,而且为每个网格单独运行引擎系统(例如:在你的对象中为几千个网格进行单独的挽歌物理仿真)。
像这样对许多网格组件进行父处理并且把它们作为一个对象处理比较好,但是我们有一些建议提供给你,来避免在这些事情上浪费不必要的CPU和GPU的周期。
首先,如果你的对象中有许多网格并且经常不可见,试着不要在移动场景中建立这些网格直到它们可见。即使网格没被渲染,每当一个父级网格组件的变换改变时,每个子网格组件的变换都会被更新,而且在网格需要可见前不要调用Components.Add()方法,这样可以节省许多处理器周期。
同样道理也适用于在游戏系统中注册不可