备用画面
1.DirectDraw的优点就在于它能够利用硬件加速。除非你用DirectDraw数据结构和物体存放位图,否则你是不能做到这点的。DirectDraw是使用图形变换的关键。你已经看到了如何利用建立主画面和后备缓冲创建一个页交换动画链,但是,你仍然需要学习如何在系统缓冲或者VRAM中创建一个m*n备用画面。用这些画面,你才能够用位图填充它们,而后利用图形变换将它们从画面图形变换到屏幕。
2.创建备用画面同创建主缓冲一样
(1)你必须将DDSURFACEDESC2.dwFlags设置为(DDSD_CAPS|DDSD-WIDTH|DDSDHEIGH)
(2)你必须在DDSURFACEDESC2.dwWidth和DDSURFACEDESC2.dwHeight中设置所需要画面的尺寸
(3)必须将DDSURFACEDESC2.ddsCaps.dwCaps设置为DDSCAPS_OFFSCREENPLAIN | memory_flags,下面memory_flags是你想创建画面的位置。如果我将它设置为DDSCAPS_VIDEOMEMORY,则画面创建在VRAM中(如果有空间的话)。如果将它设置为DDSCAPS_SYSTEMMEMORY,将建立在系统内存中。这使图形变换几乎没用,因为数据需要通过系统总线传输。
3.转换备用画面
a.一旦知道了装载位图,创建画面,使用图形变换,就可以将它们组合到一起,做一些真正的动画了。
b.目标是:装载一些含有物体动画画面的位图,创建一些小的画面放置每个动画框架,将位图装入每个画面。一旦所有的画面装载了位图数据,你就要把画面图形变换到屏幕上,让物体动起来。
c.如何用图形变换器从画面而不是后备缓冲刷向主缓冲,但是没有什么不同
d.有一些小的画面,每一个有一个不同的动画画面。另外,你还看到一个后备缓冲画面和一个主画面。计划是:将所有位图装入小的画面,用图形变换器将小画面图形变换到后备缓冲上进行页交换看效果。定期将图形变换不同的图象,移动图形变换目的地,是物体移动。
4.设置图形变换器
(1)设置要图形变换的源矩形。这是包含有趣图象的小的画面。通常坐标是从(0,0)到(-1,-1)也就是说整个画面。
2.设置目标矩形,通常是后备缓冲。这部分有点技巧,因为你想在一定位置(x,y)拷贝源图象,所以矩形应该设为(x,y)到(x+宽度-1,y +高度-1)
3.用适当的参数调用Blt()