关于当前设计的问题

来源:互联网 发布:淘宝男装排行榜 编辑:程序博客网 时间:2024/04/27 21:31

这段时间,由于应聘一个兼职每月8K的工作,不得不分析了下代码如何设计。而不能满足于以前的只实现模块的功能。

其实,模块的功能上,倒是没什么。感觉从全局的考虑上进行设计,真是个头疼的事情,或许要参考下卡马克的开源游戏,最低版本就行。


从某种角度上,上个项目实际上是失败的,因为加载过慢,都在一个大循环里。尽管结构清晰,但是地形是个大数据。

第二点,没加上SHADER,这点以后再说。


移植到MFC上时,从一开始的例子上看,开一个线程专门用于OSG,这点是必需的。今天也证实了,如果用一个WM_TIMER定时器, 会卡的一笔。或许是方法不对。

另外,就是架构上,资源文件的加载在CLASSMANAGER类中,地球加载是在场景管理器SCENEMANAGER类中,再把地形指针 分发到各个场景类scene中,但是,有没有必要在每个scene中创建或加载仿真单元,这里可能我是没搞明白老师的架构。但是,从目前角度考虑,是不行的。具体为什么不行,现在还不知道。

不妨先试下,加载地形和仿真单元是在scenemanager中完成,然后根据相应的需要,分配到不同的scene中,而不是在scene中创建。诚然,考虑到2D和3D的地形,要在不同的SCENE中设置仿真单元switch的状态,但是,那是仿真单元的状态,可以在scene->setSwitch(int nsel)中,如此实现

{map a; a的所有东西,都设置成switch(nsele);}至于如何返回更新的状态,可以在UI的消息映射中得知。视点和经纬度如何随时返回的。这点再回头看看视频教程,不难。视频教程上虽然代码组织不好,但是功能实现上还不错,尤其是多线程这块。所以,目前资源组织上,就按老师的框架上进行,剩下的用视频教程上的,结合进行。去其糟粕,得其精华。


如果说不在每个场景类中加仿真单元,以及更新,而是在场景管理器中直接加上仿真单元,最后多线程加载。


还有,将classManager中,使用此类对象的指针。会如何。而不是用单例模式。


突然想起,那个大循环,是因为数据从网络传递过来,从而出现的。其实,或许能够从回掉函数的方式更新数据。加载新的东西的时候,也是可以用OSG自身的回掉函数进行,只是结构似乎不清晰了。但是,如果效率上去了,也是值得的。

这些都有待于去试下。

0 0
原创粉丝点击