游戏开发论坛

 找回密码
 立即注册
搜索
查看: 4894|回复: 8

求教:为什么我贴图材质的背景不是透明的??

[复制链接]

8

主题

41

帖子

41

积分

注册会员

Rank: 2

积分
41
发表于 2006-2-16 17:21:00 | 显示全部楼层 |阅读模式
请问:为什么我贴图后背景的颜色总是与上一次绘制物体的颜色相同,却不是透明的,
在OPENGL中使材质镂空的关键因素有哪些呢?



为什么我在一个程序中已经成功绘制的平面树,移植到另外一个程序中确不好用了呢,困扰中……,




引用类似代码:就是《学OpenGL编3D游戏》书中的一段(有所改动),

baiscobj::baiscobj()
{
           ……………………
LoadT16("data/images/CACTUS0.BMP",g_cactus[11]);  
glEnable(GL_TEXTURE_2D);
          ……………………

}

void baiscobj:oadT16(char *filename, GLuint &texture)
{
……………………………………                        
}


void baiscobj::ShowTree(float x,float z,float h,float s,int cactus)
{
…………………………
  glEnable(GL_BLEND);
  glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
  glEnable(GL_ALPHA_TEST);
  glAlphaFunc(GL_GREATER, 0);
   glBindTexture(GL_TEXTURE_2D, g_cactus[cactus]);
   glBegin(GL_QUADS);
   glTexCoord2f(0.0f, 0.0f); glVertex3f(-1.0f, -1.0f,  1.0f);
   glTexCoord2f(1.0f, 0.0f); glVertex3f( 1.0f, -1.0f,  1.0f);
   glTexCoord2f(1.0f, 1.0f); glVertex3f( 1.0f,  1.0f,  1.0f);
   glTexCoord2f(0.0f, 1.0f);  glVertex3f(-1.0f,  1.0f,  1.0f);
  glEnd();
  glDisable(GL_ALPHA);
  glDisable(GL_BLEND);
…………………………
}

除了这些还有没有什么关键的因素会影响贴图的背景颜色呢?
sf_200621617218.jpg

8

主题

41

帖子

41

积分

注册会员

Rank: 2

积分
41
 楼主| 发表于 2006-2-16 17:25:00 | 显示全部楼层

总是与文字的颜色相同………………………………

总是与文字的颜色相同………………………………
sf_2006216172434.jpg

8

主题

41

帖子

41

积分

注册会员

Rank: 2

积分
41
 楼主| 发表于 2006-2-16 17:32:00 | 显示全部楼层

材质图片

材质图片
sf_2006216173156.bmp

8

主题

41

帖子

41

积分

注册会员

Rank: 2

积分
41
 楼主| 发表于 2006-2-17 09:29:00 | 显示全部楼层

Re:求教:为什么我贴图材质的背景不是透明的??

glEnable(GL_BLEND);
  glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);



  glEnable(GL_ALPHA_TEST);



  glAlphaFunc(GL_GREATER, 0);
   glBindTexture(GL_TEXTURE_2D, g_cactus[cactus]);
   glBegin(GL_QUADS);
……………………………………


我的程序里面有glEnable(GL_ALPHA_TEST);这句代码啊,
我觉得不是这个的原因,因为他会把背景改成其他颜色。

[em7] [em7]

8

主题

41

帖子

41

积分

注册会员

Rank: 2

积分
41
 楼主| 发表于 2006-2-17 10:36:00 | 显示全部楼层

Re:求教:为什么我贴图材质的背景不是透明的??

各位大哥啊,快救救我吧,我都快急死了,这个问题都困扰我很久了,我以前用这个方法做成功过,但现在就是做不起来了,不知道哪里出了状况。

先谢谢谢谢谢谢了!!!!!

197

主题

1041

帖子

1104

积分

金牌会员

Rank: 6Rank: 6

积分
1104
QQ
发表于 2006-2-17 11:04:00 | 显示全部楼层

Re:求教:为什么我贴图材质的背景不是透明的??

先register format  for gl,
因为你用的是高黑~必须用算法来实现高8位是alpha~一般如果你用SDK的话这些功能都是现成的~

197

主题

1041

帖子

1104

积分

金牌会员

Rank: 6Rank: 6

积分
1104
QQ
发表于 2006-2-17 11:06:00 | 显示全部楼层

Re:求教:为什么我贴图材质的背景不是透明的??

或则更简单一点~你用ps软件来做好一个有高位alpha默认的bmp位图格式就可以了~

8

主题

41

帖子

41

积分

注册会员

Rank: 2

积分
41
 楼主| 发表于 2006-2-17 12:29:00 | 显示全部楼层

Re:求教:为什么我贴图材质的背景不是透明的??

但我用的是同一个材质图片,同一段类似上面的代码,在另外一个程序中就好用,由于另外一个程序比较繁杂,我不知道这个程序中是哪里出了问题。

我感觉,现在问题的关键是他已经把背景去掉了,已经能识别ALPHA通道中的内容了,但不知道为什么却被渲染了另外一种颜色 [em7] [em7]

8

主题

41

帖子

41

积分

注册会员

Rank: 2

积分
41
 楼主| 发表于 2006-2-17 14:34:00 | 显示全部楼层

Re:求教:为什么我贴图材质的背景不是透明的??

郁闷,郁闷!!!!!!!!!!!!!!!
狂晕,狂晕,狂晕,狂晕,狂晕,狂晕,狂晕,狂晕,狂晕中!!!!!!!!
多了一行代码差点折磨死我!!
在N多代码中寻觅,终于被找到了。
glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_DECAL);                        // Keep the font color from coloring the textures
希望大家别犯我这样的弱智错误!!!!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-1-23 11:48

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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