游戏开发论坛

 找回密码
 立即注册
搜索
查看: 6184|回复: 10

请教:怎样去掉BMP图的背景色..

[复制链接]

39

主题

120

帖子

120

积分

注册会员

Rank: 2

积分
120
发表于 2005-8-21 21:00:00 | 显示全部楼层 |阅读模式
怎样去掉BMP图的背景色..

18

主题

279

帖子

279

积分

中级会员

Rank: 3Rank: 3

积分
279
QQ
发表于 2005-8-21 21:36:00 | 显示全部楼层

Re:请教:怎样去掉BMP图的背景色..

使用ColorKey吧 [em13]

39

主题

120

帖子

120

积分

注册会员

Rank: 2

积分
120
 楼主| 发表于 2005-8-22 07:53:00 | 显示全部楼层

Re:请教:怎样去掉BMP图的背景色..

OPENGL有COLORKEY的吗..?

18

主题

279

帖子

279

积分

中级会员

Rank: 3Rank: 3

积分
279
QQ
发表于 2005-8-22 16:02:00 | 显示全部楼层

Re:请教:怎样去掉BMP图的背景色..

Sorry
以前看到一篇文章介绍如何使用glAlphaFunc(*)做16位图象的背景透明,
忘了怎么做的了,似乎可以用在这里,寻找中……

39

主题

120

帖子

120

积分

注册会员

Rank: 2

积分
120
 楼主| 发表于 2005-8-22 17:18:00 | 显示全部楼层

Re:请教:怎样去掉BMP图的背景色..

谢谢阿!!麻烦你了

50

主题

244

帖子

319

积分

中级会员

Rank: 3Rank: 3

积分
319
QQ
发表于 2005-8-23 12:14:00 | 显示全部楼层

Re:请教:怎样去掉BMP图的背景色..

你把你的邮箱地址告诉我吧,我发个范例给你.

18

主题

279

帖子

279

积分

中级会员

Rank: 3Rank: 3

积分
279
QQ
发表于 2005-8-23 17:11:00 | 显示全部楼层

Re: 请教:怎样去掉BMP图的背景色..

六楼的方法需要比较多的资源 [em1]
想了一个用glBlendFunc(*)的方法,我这里没编译器,不能测试,麻烦你自己试试 [em5]

/*
  一些假设:
    1、24位的位图(16位无ALPHA的位图同理);
    2、位图的原点(0,0)位于左下角;
    3、OpenGL使用RGBA模式。
*/

/*
  思路:
    创建这个图象的ALPHA数组,透明的位置设1.0,不透明的位置设0.0,在绘制图象之前,先将此ALPHA图绘上,再利用此时的源ALPHA绘制目标图象。
*/

//用到的数据:
BYTE colorKey[3]=...;
BYTE *image=...;
UINT width=...;
UINT height=...;

//创建ALPHA数组:
UINT size=width*height;
BYTE *alpha=new BYTE[size];
BYTE *pixel[3]=image;
for(int i=0; i<size; i++)
{
    if(pixel[0]==colorKey[0] &&
       pixel[1]==colorKey[1] &&
       pixel[2]==colorKey[2])
    {
        alpha=0xFF; //透明
    }
    else
    {
        alpha=0; //不透明
    }
}

//绘制过程:(x,y为图象的绘制位置)
glDisable(GL_BLEND);
glRasterPos(x,y);
glDrawPixels(width, height, GL_ALPHA, GL_UNSIGNED_BYTE, alpha);
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glRasterPos(x,y);
glDrawPixels(width, height, GL_RGB, GL_UNSIGNED_BYTE, image);
glDisable(GL_BLEND);

/*
  备注:
    请将以上各段代码分别放入恰当的过程中,我这里未做划分;
    代码可能存在不少拼写错误,请谅解 [em13]
*/

39

主题

120

帖子

120

积分

注册会员

Rank: 2

积分
120
 楼主| 发表于 2005-8-24 10:40:00 | 显示全部楼层

Re:请教:怎样去掉BMP图的背景色..

好的我试试

39

主题

120

帖子

120

积分

注册会员

Rank: 2

积分
120
 楼主| 发表于 2005-8-24 11:05:00 | 显示全部楼层

Re:请教:怎样去掉BMP图的背景色..

BYTE *pixel[3]=image;
这是什么意思..??

39

主题

120

帖子

120

积分

注册会员

Rank: 2

积分
120
 楼主| 发表于 2005-8-24 12:06:00 | 显示全部楼层

Re:请教:怎样去掉BMP图的背景色..

BYTE colorKey[3]=...;
BYTE *image=...;
UINT width=...;
UINT height=...;
这些省略号我不懂......
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-12-27 13:38

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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