Posted on 2008-05-26 17:57
cacar 阅读(305)
评论(0) 编辑 收藏 引用 所属分类:
DirectX
一、关于高彩
其实就是在SetDisplayMode中把BPP改成想要的16,24,32...然后读写显存的时候只需要根据Lock返回的ddsd.lpSurface得到显存指针,根据你的像素格式(16,24抑或32)来设置像素点,根据x,y找到对应像素,写就是了。
二、关于双缓冲
创建双缓冲的步骤:
1.将DDSD_BACKBUFFERCOUNT加到dwFlags标志字段,向DirectDraw表明DDSURFACEDESC2结构的dwBackBufferCount有效,其中包含后备缓冲的数目(比如1);
2.将控制标识DDSCAPS_COMPLEX和DDSCAPS_FLIP加入DDSURFACEDESC2结构的特性描述字段ddsCaps.dwCaps上
3.像通常一样创建主表面,然后从该主表面指针调用IDIRECTDRAWSURFACE7::GetAttachedSurface(),即可得到后备表面的指针,然后就像使用任何表面一样,随便改~
示例:
ddsd.dwFlags = DDSD_CAPS | DDSD_BACKBUFFERCOUNT;
ddsd.dwBackBufferCount = 1;
ddsd.ddsCaps.dwCaps = DDSCAPS_PRIMARYSURFACE | DDSCAPS_COMPLEX | DDSCAPS_FLIP;
三、关于页面切换
后备缓冲绘制好了,需要切换的时候,从主表面指针调用Flip即可,此时需要保证主表面或者后备缓冲表面已经解锁。不能人家还在写数据你就要求它画出来。。总得把衣服穿好才能出来见人。。。