游戏开发论坛

 找回密码
 立即注册
搜索
查看: 4747|回复: 3

怎样在OpenGL实现纹理贴图的Alpha通道mask功能??

[复制链接]

1

主题

1

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2004-5-25 15:30:00 | 显示全部楼层 |阅读模式
学OpenGL也有一段时间了,可是总也搞不定纹理贴图的Alpha通道屏蔽功能
就是游戏中用来做树叶的那种效果,利于贴图的Alpha通道让没有树叶的地方透明。
我在程序对融合做了如下设定:
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
并读取了带Alpha通道的bmp图,对贴图作了如下设定:
glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
    glTexImage2D(GL_TEXTURE_2D, 0, 3, ImageWidth3,
    ImageHeight3, 0, GL_RGBA, GL_UNSIGNED_BYTE,
    &Texture3[0][0][0]);
    glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP);
    glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP);
    glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
    glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_COLOR, GL_BLEND);

显示的结果是能正确的绘制纹理贴图,但bmp中的Alpha好像根本没起作用,根本没一点透明。不知道是不是我在程序中还缺少什么声明,或者是我上边用到的语句本被就
不对。希望各位高手能帮忙指点指点,虽然是一个挺基本的问题,还是请各位能指点
迷津。

4

主题

65

帖子

65

积分

注册会员

Rank: 2

积分
65
QQ
发表于 2004-5-29 08:46:00 | 显示全部楼层

Re:怎样在OpenGL实现纹理贴图的Alpha通道mask功能??

glTexImage2D(GL_TEXTURE_2D, 0, 3, ImageWidth3,
    ImageHeight3, 0, GL_RGBA, GL_UNSIGNED_BYTE,
    &Texture3[0][0][0]);
第三个参数好象要为4吧

5

主题

9

帖子

9

积分

新手上路

Rank: 1

积分
9
发表于 2005-5-22 18:07:00 | 显示全部楼层

Re:怎样在OpenGL实现纹理贴图的Alpha通道mask功能??

这个地方得再深一层的了解才能做好,要明白具体的公式

139

主题

2005

帖子

2057

积分

金牌会员

Rank: 6Rank: 6

积分
2057
QQ
发表于 2005-5-22 21:56:00 | 显示全部楼层

Re:怎样在OpenGL实现纹理贴图的Alpha通道mask功能??

2楼正解
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-12-25 16:47

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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