xxb 发表于 2007-8-14 09:30:00

提高DirectDraw下显示速度

<font face="Tahoma" size="2"> 其实这一点是前几天在新浪网游戏制作论坛上看到云风的贴子才想起来要写的。HT告诉我要我做游戏引擎的时候,说:“你最好把速度加快些。”而关于显示速度的问题,早在我离开智冠公司之前我就已经注意到了,只是一直没有注意去研究而已。现在想起来,实际上受了云风很大的启发。</font>
        <p><font face="Tahoma" size="2">  在DirectDraw的条件下,一般的情况是至少开一个BackSurface,在系统默认的条件下,这个BackSurface是优先开在显示内存里面的。这样当显示的时候,程序要把系统内存里面的大量数据组织起来,传送到显示内存里面的BackSurface去。然后显示。由于把数据从其他的地方放到显示内存里面的时候,数据并不总是有序的,所以,虽然BackSurface的大小是一个屏幕,但是我们实际上传送的数据却超过了一个屏幕。在我的拚图器里面就是如此。由于地图是多层的,所以每显示一次,根据地图的层次,至少要传送2-3屏的数据。这里其实没有问题。问题在于:BackSurface开在什么地方的问题。</font></p><p><font face="Tahoma" size="2">  众所周知,从内存到显示内存的数据传送速度比从内存到内存的速度慢,也比从显示内存到显示内存的速度慢。我们如果把BackSurface开在系统内存里面,这样要显示的时候,我们只要把BackSurface的数据送到PrimarySurface里面,也就是说,我们只要从内存传送一屏的的数据到显示内存里面就可以了,而上面所说的组织数据的问题,则是在速度较快的内存到内存之间的操作。而假如我们把BackSurface开在显示内存里面,则每次显示的时候,组织数据是通过速度较慢的显示内存到内存之间的操作,则2-3屏的数据足以使整体速度下降很多。</font></p><p><font face="Tahoma" size="2">  这样,如果要提高游戏的显示速度,应该尽可能的把BakcSurface开在系统内存里面。</font><font face="Tahoma" color="#c0c0c0" size="2"><br/></font></p>

lyf1428 发表于 2008-8-21 12:52:00

回复:提高DirectDraw下显示速度

谢谢指导,收下了。:Q
页: [1]
查看完整版本: 提高DirectDraw下显示速度