用OGL做了个小游戏,非常简单的一个,SDK程序而已,可别看它小,跑起来暴占资源.CPU有时50%!可是我看EA公司的大游戏,如极品飞车六,里面我看如果是实时演算的话,至少十个线程吧.光影,声音等一应俱全. 但极品六跑起来所占的资源尤其是CPU资源非常少, 请问它这可能是怎么做到的. 游戏都得与程序交互,不实时演算还有什么方法?

解决方案 »

  1.   

    游戏程序的优化很有学问,牵扯到很多汇编知识,我以前玩的一个网络游戏,占内存不多,但是占用全部cpu,运行起来切换到其他程序就慢的要死,显然程序没有优化,这方面的东西我不懂,顶一下而已。
      

  2.   

    我们做的东西都是小打小闹的,人家游戏公司用DirectX,输入输出的效率高了不知多少,更有采用专门的游戏引擎为核心,和我们的东西不可同日而语。
      

  3.   

    游戏用D3D,OGL这些接口函数把演算的大部分工作丢给了GPU,咱们的东西却实打实地让CPU一个“人”在忙乎,你说它会不会累?呵呵
      

  4.   

    照雪上加冰的说法,还是有点不妥啊,Doom这种划时代的游戏,它主要也是OGL做的.就算他优化得再好,也不可能比我这个小东西跑得快吧?
    现在我如果画个大一点的球,加上反走样,30的帧频马上降到个位数.
      

  5.   

    我来说一下:
    第一:关于doom,doon中使用的ogl是被coder修改过的,也就是它里面至少会与我们用的ogl不同,去看看他代码的windows.h都是不同的。(ps:奇怪你们大家怎么说ogl?我总是说opengl的)
    第二:你说加上了反走样就降到个位数了,我不清楚你机器的配置,但是在我机器上也是这样,但是我用win32写代码,不太用mfc的。其实ogl中的反走样算法是用的cpu的资源来模拟的,就是说,它基本上不要求你有个好的显卡,你只要有个够劲的cpu就ok了,还有,就是你看占用cpu是在windows的进程窗口下,还是光看总的效率的,这也是个问题。
    第三,想要cpu资源占用少,减少对ogl中几何运算的依赖(矩阵运算等等),试试用shader。(就像dx,nv中有shader一样,ogl中也有shader,只是用的人少而已,大家都在用dx的shader)
    最后,我的表述可能有点问题,大家勿怪,如有错误,小生先行谢罪。
      

  6.   

    我得说你要转化你的观念,很多时候,优化的意义等于有效的管理,包括内存,文件的组织,计算序列的管理,这些需要的正是丰厚的经验。
    具体的内容就要看是什么游戏了,rts就是看你的模型的粗细,内存的组织,而极品飞车,就是lod技术的应用,内存的管理等等。
    我估计你还没有自己做过点东西,做过了,你就知道了。
    (如果有错,请大家指正。)