之前项目一直使用Three.js,最近新的项目开始用Babylon进行开发,用了一段时间发现,和Three.js还是差距挺大的,所以打算花点时间看看BabylonJs的源码,熟悉下这个库.
首先,meshs 储存在scene中
scene中有个渲染管理器(scene.ts)
- 调用 scene.render()
会执行到
this._processSubCameras(this.activeCamera, false);
然后会进入到这个方法
然后看到Meshs相关的操作
这个方法对有效的mesh 都执行了
最后如果这个网格没异常,就会触发渲染管理器的钩子
之后管理器会默认把网格放到渲染组0
然后触发渲染组的钩子
渲染组会把网格推到对应的渲染队列
这个对应什么时候会更新呢?回到Scene _renderForCamera方法
上面逻辑执行完后,会触发渲染管理器render
这个渲染方法会对每个渲染组执行对应的render
如果没有对应的自定义渲染方式,就会看到对应的渲染队列的方法
点进去看下这个渲染方法有2种
2种方法最后都是调用SubMesh.render
然后会调用Mesh.render
这个方法主要就是通过封装的Webgl api,把网格渲染出来