急死我了!请教DirectX8下实现动画(不带背景黑框)的方法

zhaoyunan zhaoyunan 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
定义全局变量
DDCOLORKEY ddck;//结构
LPDIRECTDRAWSURFACE7 lpDirectDrawSurface;//主页面
LPDIRECTDRAWSURFACE7 lpDirectDrawSurfaceBuffer;//缓冲页面
LPDIRECTDRAWSURFACE7 lpDirectDrawBackSurface;//后备页面
RECT r;//结构
r.top=0;
r.left=0;
r.right =32;
r.bottom =32;

定义关键色设置函数
HRESULT SetColorKey(LPDIRECTDRAWSURFACE7 pdds, COLORREF rgb)
{
HRESULT hr;
ddck.dwColorSpaceHighValue=rgb;
ddck.dwColorSpaceHighValue =rgb;
hr=pdds->SetColorKey(DDCKEY_SRCBLT,&ddck);
return hr;
}
----------------------------------------------------------
程序中:
1)使用函数设置后备页面关键色为黑色
SetColorKey(lpDirectDrawBackSurface,RGB(0,0,0));

2)将后备页面的指定矩形框图像传送至缓冲页面
lpDirectDrawSurfaceBuffer->BltFast(0,0,lpDirectDrawBackSurface,&r,DDBLTFAST_SRCCOLORKEY);

3)主页面翻转
lpDirectDrawSurface->Flip(NULL, DDFLIP_WAIT);

结果:
程序动画实现,但动画人物带有黑色背景框,我试了很多方法,始终无法消除.

我用的是DirectX8 SDK,显示模式为800x600,16位高彩色,全屏独占模式;
设置,显示一切正常.

使用的图像为BMP,24位真彩色.

请教:
1)是否是16位色模式不能显示24位色图像?如果是,要怎样转换?
2)我的SetColorKey(LPDIRECTDRAWSURFACE7 pdds, COLORREF rgb)
函数中的代码是否有问题
ddck.dwColorSpaceHighValue=rgb;
ddck.dwColorSpaceHighValue =rgb;
能否这样写,转换后是否正确?

请高手教我800x600,16位高彩色,全屏独占模式下使用的图像为BMP,24位真彩色
实现动画(不带背景黑框)的方法
...全文

相关推荐

评论 3
收藏 已收藏
分享
返回顶部
zhaoyunan
游戏开发 8,324 成员 23,685 内容