游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2586|回复: 9

令我头痛的colorkey

[复制链接]

10

主题

149

帖子

149

积分

注册会员

Rank: 2

积分
149
QQ
发表于 2006-4-3 21:26:00 | 显示全部楼层 |阅读模式
初学ddraw(已经学了一星期了),我作了如下尝试:
    把显示模式设为800*600*16,然后我想用透明色Blt一个位图。位图载入离屏页面,然后设后台页面colorkey为RGB(255,0,255),也就是粉红色,然后Blt到后台页面,再flip,但是粉红色还是显示出来了。我又设显示模式为800*600*8,colorkey=0xff;也就是黑色,再flip,但是还是不行。请问大家:到底应该如何正确的设置颜色呢?

20

主题

465

帖子

472

积分

中级会员

Rank: 3Rank: 3

积分
472
QQ
发表于 2006-4-3 23:27:00 | 显示全部楼层

Re:令我头痛的colorkey

小笨蛋,你的ColorKey设置是没错了,但是你要在Blt或者是BltFast这个函数调用的时候,dwFlag参数里面加上"DDBLT_KEYSRC"或是“DDBLTFAST_SRCCOLORKEY”标记,要不然ColorKey是不会生效的。

60

主题

1319

帖子

1319

积分

金牌会员

Rank: 6Rank: 6

积分
1319
发表于 2006-4-4 08:51:00 | 显示全部楼层

Re:令我头痛的colorkey

把colorkey改成0xf81f (11111000 00011111)

10

主题

149

帖子

149

积分

注册会员

Rank: 2

积分
149
QQ
 楼主| 发表于 2006-4-5 10:14:00 | 显示全部楼层

Re:令我头痛的colorkey

晕哦,我虽然是笨,但我绝不放弃飞翔!
“飞的魔法”,你说的设置dwFlags我是设置了的。后来我加入了
#define  _RGB16BIT565(r,g,b) ((b%32)+((g%64)<<6)+((r%32)<<11))这个宏,然后再
设colorkey=_RGB16BIT565(255,0,255)    图片成功的显示出来了!!!

10

主题

149

帖子

149

积分

注册会员

Rank: 2

积分
149
QQ
 楼主| 发表于 2006-4-5 10:31:00 | 显示全部楼层

Re:令我头痛的colorkey

可是……我又遇到了新的问题:
我用一张16位深的位图,成功的实现了透明Blt,可是用一张24位深的位图时,精灵的轮廓周围却有一些关键色没有去掉。请问大家:是不是一个要用16位深的位图呢?
    还有一问:
我设置了离屏页面的colorkey:
lpDDSOffScreen->SetColorKey(DDCKEY_SRCBLT,&ddck);
然后用BltFast:
lpDDSBack->BltFast(0,0,lpDDSOffScreen,NULL,DDBLTFAST_SRCCOLORKEY);
图片成功的显示了。
可是设置后台页面的关键色之后:
lpDDSBack->SetColorKey(DDCKEY_DESTBLT,&ddck);
lpDDSBack->BltFast(0,0,lpDDSOffScreen,NULL,DDBLTFAST_DESTCOLORKEY);
整张图片都没了,我检查过了,其它地方没错。这是怎么回事呢???????
难道只能设离屏页面的关键色吗?

60

主题

1319

帖子

1319

积分

金牌会员

Rank: 6Rank: 6

积分
1319
发表于 2006-4-5 10:48:00 | 显示全部楼层

Re:令我头痛的colorkey

关键色改用纯黑

10

主题

149

帖子

149

积分

注册会员

Rank: 2

积分
149
QQ
 楼主| 发表于 2006-4-5 11:23:00 | 显示全部楼层

Re:令我头痛的colorkey

请问大哥,一定要用黑色吗?谢谢

17

主题

165

帖子

167

积分

注册会员

Rank: 2

积分
167
发表于 2006-4-5 12:26:00 | 显示全部楼层

Re:令我头痛的colorkey

#define  _RGB16BIT565(r,g,b) ((b%32)+((g%64)<<6)+((r%32)<<11))
你这是16色的
改24色是
#define _RGB24BIT(r,g,b) ( b + ( g << 8 ) + ( r << 16 ) )
如果简单的RGB(255,0,255)
可以直接写成0xFF00FF

60

主题

1319

帖子

1319

积分

金牌会员

Rank: 6Rank: 6

积分
1319
发表于 2006-4-6 09:27:00 | 显示全部楼层

Re:令我头痛的colorkey

不是一定要用黑色,不过16位,24位,32位色的黑色都就0x0,不就不用转换了。不透明的地方不用0x0就是了,你用255 0 255 是用圣二里的图片吗?

10

主题

149

帖子

149

积分

注册会员

Rank: 2

积分
149
QQ
 楼主| 发表于 2006-4-7 10:31:00 | 显示全部楼层

Re:令我头痛的colorkey

不是啊,我下不到圣二的图片
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2026-1-24 02:44

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表