|
|
学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好像根本没起作用,根本没一点透明。不知道是不是我在程序中还缺少什么声明,或者是我上边用到的语句本被就
不对。希望各位高手能帮忙指点指点,虽然是一个挺基本的问题,还是请各位能指点
迷津。 |
|