初学Directx,遇到个小问题请大家帮忙了~~~概述:
       我现在建立了2个幕后缓冲 
       pO1:加载背景图
       pO2:一个很小的人物图片我的目的是:用键盘控制小人物的行走(现在假设s键 控制)我遇到的问题是:
   1。每次我按下S键后,屏幕闪烁(出线最开始创建的window窗口)
   2。原来的人物图象没有清除,就是如果按下S两次,将有两个小人物谢谢大家帮忙!

解决方案 »

  1.   

    怀疑你没有理解ddraw的工作机制:1 主缓冲和后台缓冲是翻转切换的关系
    你始终在后台缓冲绘制,然后swapbuffer到前台的2 在每帧后台缓冲写内容前,清空后台缓冲,然后绘制背景,再绘制人物
      人物的位置是你的内部一个变量记录,s键盘控制这个变量的数值变化
      绘制的时候,按照这个变量记录的位置,把小人绘制在相应的位置
      绘制结束后,调用swapbuffer切换到主屏幕上显示去3 闪烁可能的原因是:没有重载窗口的OnEraseBackground函数
      

  2.   

    解释:的确不是很理解DirectDraw
        1。我现在是每次按下 S 键的时候 将小图片(人物)Bitfast到后缓冲区,然后翻页
        2。我也考虑到可能是后缓冲区遗留了以前的信息,每次在Bitfast之前,我已经调用了Restore
        3。我现在闪烁是每次按下S键后弹出原来的主窗口
    谢谢帮忙
      

  3.   

    每次按下S后, 先BltFast背景图片到后缓冲区(自动覆盖原来的画面了)
    然后再bltfast小图片到后缓冲区            (更新了画面了)
    再swapbuffer一次
      

  4.   

    dxsdk当中有一个DirectSurfaceWrite的工程例子,演示了类似的功能
    只不过是多个小图片,程序自动移动它