引言 :
学习webgl已经接近2年时间了,对常见的开源3D引擎也比较熟悉了,但是目前为止three.js、babyLon、clayGL、cesium对webgl2新特性的支持也不是特别多。从今天开始,准备着手构建自己的3D引擎,一是希望能有自我提升,二是希望能做一个更快速、更炫酷、更容易扩展的引擎,并且希望能对webgl2的新特性有更多的支持。(目前引擎设计主要参考three.js和clayGL、少部分可能会参考babylon、如果后续做地球部分应该会参考cesium,由于对playCanvas使用不多,后续在引擎设计的时候也会着重去看playCanvas的源码并将好的思想融入进来。总而言之,在设计引擎的过程中自己多思考,然后多看这些开源引擎的思路,取其精华)
- 首先介绍下几个开源引擎:
Three.js
https://github.com/mrdoob/three.js
最火的web3D引擎,功能最丰富而且最便于使用,笔者对其的研究比较深入,上层的一些设计可能会对其参考较多
ClayGL
https://github.com/pissang/claygl
ClayGL是一个用于构建可扩展Web3D应用程序的WebGL图形库,目前主要应用到echarts中,笔者对其比较熟悉,后续对它的一些分析可能会比较多
Babylon.js
https://github.com/BabylonJS/Babylon.js
一个完整的JavaScript框架,用于构建HTML5,WebGL,WebVR和Web Audio的3D游戏和体验,该引擎主要使用typescript,性能强大,对webgl2支持较多
Cesium.js