|
|
小弟用D3D写了一个类似<皇牌空战>的小游戏,3d的。
建模用的是3DMAX7.0,用pandaDirectX插件导成X文件,分别是
玩家控制的飞机---7000多个面片
NPC客机----------3100个面片
敌机-------------1100个面片*6
球天-------------550个面片
另有导弹,子弹,等模型,但面片数很少,先不计。
但不管如何,整个场景用到面片数不会超过20,000个。
整个程序是用WIN32程序实现的,在WinMain()中消息循环里,每循环一次调用一次Render()来渲染上述几个Mesh.
并且没用任何特效,没加阴影等。
开发用的机器是AMD 64 3800+双核,1GBDDR2内存,7600GT,联想品牌机
测试用的机器配置是P4 3.0GHz双核,512MBDDR2内存,6800标准版显卡,DELL的品牌机
游戏在第二台机器上运行的时候画面明显很卡,但在进程列表里发现其CPU占用率不到20%,而且没有任何的硬盘读写操作,内存占用不到100MB,感觉很奇怪。而在第一台机器上运行则很流畅。
想想应该不是CPU的问题,因为毕竟使用率不到20%。有同学说是因为D3D会把许多工作交给显卡去做,所以在显卡渲染的时候CPU就会等显卡,CPU的占用率自然就不高。为了验证他的说法,我把第一台机器的7600GT拿下换到第二台机器上去用,果然游戏是流畅了(汗一个先-_-!,6800标版居然拼不过7600GT)。
但又说回来,小弟的场景并不复杂,面片数不过两万个,又没有任何的特效,如果连6800标版(PCIe的口)也带不起来,就不用说那些大众化配置的机器了。
因此小弟想问一下,是不是D3D中mesh模型的 DrawSub()函数调用的时候有什么注意事项?或者说有什么优化措施?以前和同学聊天的时候也就讨论过关于X文件的问题,说是真正的游戏公司都不会用这种格式的文件,而是自己做一套格式出来,目的就是为了提高效率,但小弟目前唯一能用的就只有X文件了。所以在这里向各位达人求教了,希望大家能赐教,不胜感激!
QQ278153559, acefighter@hdu.edu.cn |
|