用DirectDraw在后台缓存画好一幅图Blt到前台屏幕时,前面贴的一幅图还在,就是两次贴的图都会在屏幕上显示出来,应该覆盖掉的吧,怎么回事啊??

解决方案 »

  1.   

    请问reyulx,你所说的显示器是一种高速设备,它只是忠实的
    将我们放到显存里的东西显示出来一个象素,单纯的占据一个点。
    是不是说显存中的每个值就对应一个像素点?那么我怎样来修改显存里的值呢?
    修改后要显示到显示器上的话怎么实现?
      

  2.   

    画之前先清除掉,参考SDK Sample里面一个例子(WindowedMode)的清除代码:
    //-----------------------------------------------------------------------------
    // Name: 
    // Desc: 
    //-----------------------------------------------------------------------------
    HRESULT CDisplay::Clear( DWORD dwColor )
    {
        if( NULL == m_pddsBackBuffer )
            return E_POINTER;    // Erase the background
        DDBLTFX ddbltfx;
        ZeroMemory( &ddbltfx, sizeof(ddbltfx) );
        ddbltfx.dwSize      = sizeof(ddbltfx);
        ddbltfx.dwFillColor = dwColor;    return m_pddsBackBuffer->Blt( NULL, NULL, NULL, DDBLT_COLORFILL, &ddbltfx );
    }
      

  3.   

    to liuyanlin26(liuyanlin26) :
        DirectDraw就可以直接访问显存,至于显卡如何将它的信息传递给显示器,那是硬件问题了