希望各位 注重下性能(特别是CPU)优化部分.
举个栗子:
目前的渲染系统基本框架是有许多比较严重CPU性能问题的.
Scene::render()
{
for (const auto& camera : getCameras())
{
//矩阵运算(略)
//camera相关操作(略)
visit() //全节点递归visit 构建渲染指令
render() //渲染
}
}
上面的部分暴露出两个严重问题
问题1:
假设现在两个camera A B,1000个子节点,其中999个被A所见,1个被B所见.
visit却需要执行2000次,这是严重不合理的.
问题2:
Github issue #16100 这不是优化,是个bug
visit传入父MV矩阵的目的是为了最终计算出当前节点的相关矩阵,然后用于setUniformsForBuiltins.
那么为何不选择分开ModelMatrix 和ViewMatrix?
在实际调用draw之前才计算递归父ModelMatrix(直到_transformDirty为false)
然后让用户自行决定M V是放到GPU计算还是CPU计算.
现在的游戏体量越发大了,也许小游戏 看不出什么,但梦想总是要有的
Show一张在研图(基于Cocos的3D无缝大世界编辑器[3600万平方米] )