Nebula是款不错的免费、开源3D引擎,与OGRE相比,nebula提供了更多渲染引擎以外的支持,比如gui,脚本,音乐等,可以说nebula是在开源引擎中素质比较高的引擎,有很多商业项目都是基于nebula构建的。
下载Nebula已经有段时间了,由于公司一直都使用BigWorld引擎,所以一直没有时间去研究Nebula。对BigWorld也算非常熟悉了,发现了它很多设计不好的地方,比如一个最大的不好的地方就是整个引擎充斥着很多static对象用作实现singleton、没有一个全局的singleton统一调度其他对象,这样就导致无法控制构造、析构的顺序,进而无法控制代码的流程(尤其是在程序退出的时候)。
今天阅读了nebula代码,看看它在这方面如何处理,发现nebula在这方面做的还是不错的,nebula全局有一个nKernelServer对象,由这个对象负责创建其他对象,其他对象在一开始需要以包的形式注册给nKernelServer对象,告诉它可以创建什么对象,然后nKernelServer的New方法可以查询这些对象并负责创建需要的对象,这样所有的对象都接受nKernelServer的管理。
我以后要多多研究这个nebula,并把心得写下来,今天就到这里。
如果有兴趣的朋友可以到这个地址获得更多信息:http://www.nebuladevice.org/