提高DirectDraw下显示速度 

2007-08-14 09:30 发布

引擎学习交流 /[教程&源码]
3504 1 0
 其实这一点是前几天在新浪网游戏制作论坛上看到云风的贴子才想起来要写的。HT告诉我要我做游戏引擎的时候,说:“你最好把速度加快些。”而关于显示速度的问题,早在我离开智冠公司之前我就已经注意到了,只是一直没有注意去研究而已。现在想起来,实际上受了云风很大的启发。

  在DirectDraw的条件下,一般的情况是至少开一个BackSurface,在系统默认的条件下,这个BackSurface是优先开在显示内存里面的。这样当显示的时候,程序要把系统内存里面的大量数据组织起来,传送到显示内存里面的BackSurface去。然后显示。由于把数据从其他的地方放到显示内存里面的时候,数据并不总是有序的,所以,虽然BackSurface的大小是一个屏幕,但是我们实际上传送的数据却超过了一个屏幕。在我的拚图器里面就是如此。由于地图是多层的,所以每显示一次,根据地图的层次,至少要传送2-3屏的数据。这里其实没有问题。问题在于:BackSurface开在什么地方的问题。

  众所周知,从内存到显示内存的数据传送速度比从内存到内存的速度慢,也比从显示内存到显示内存的速度慢。我们如果把BackSurface开在系统内存里面,这样要显示的时候,我们只要把BackSurface的数据送到PrimarySurface里面,也就是说,我们只要从内存传送一屏的的数据到显示内存里面就可以了,而上面所说的组织数据的问题,则是在速度较快的内存到内存之间的操作。而假如我们把BackSurface开在显示内存里面,则每次显示的时候,组织数据是通过速度较慢的显示内存到内存之间的操作,则2-3屏的数据足以使整体速度下降很多。

  这样,如果要提高游戏的显示速度,应该尽可能的把BakcSurface开在系统内存里面。

TA的作品 TA的主页
B Color Smilies

全部评论1

  • lyf1428
    lyf1428 2008-8-21 12:52:00

    回复:提高DirectDraw下显示速度

    谢谢指导,收下了。:Q

你可能喜欢

提高DirectDraw下显示速度 
联系
我们
快速回复 返回顶部 返回列表