最近上班没事,折腾下DirectDraw,实现简单的动画,其实就是贴图。思想其实挺简单,就是在几个Surface中倒来倒去的。当然,在全屏模式和窗口模式下是有所区别的。
DirectDraw程序,必须先创建一个LPDIRECTDRAW7,这可以通过DirectDrawCreateEx来创建。
LPDIRECTDRAW7 m_pDD;
LPDIRECTDRAWSURFACE7 m_pFrontSurface;
LPDIRECTDRAWSURFACE7 m_pBgSurface;
LPDIRECTDRAWSURFACE7 m_pCarSurface;
HRESULT hRet = 0;
hRet = DirectDrawCreateEx(NULL, (VOID**)&m_pDD, IID_IDirectDraw7, NULL);
if (hRet != DD_OK)
{
ASSERT(FALSE);
return hRet;
}
注意对函数调用返回值的判断。DD_OK为成功。然后设置控制级别。可通过IDIRECTDRAW接口的SetCooperativeLevel来设置。
hRet = m_pDD->SetCooperativeLevel(NULL, DDSCL_NORMAL); //窗口模式
若是全屏独占模式,为m_pDD->SetCooperativeLevel(NULL, DDSCL_EXCLUSIVE | DDSCL_FULLSCREEN);并且全屏模式还要设置显示模式。m_pDD->SetDisplayMode(640,480,32,0,0);
然后创