posts - 2, comments - 1, trackbacks - 0, articles - 4
  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

高级DirectDraw和位图图形(1)

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即可,此时需要保证主表面或者后备缓冲表面已经解锁。不能人家还在写数据你就要求它画出来。。总得把衣服穿好才能出来见人。。。

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理