我有一些麻烦渲染具有8位alpha通道的纹理 - 即,它被平化为1位,glBlendFunc()似乎没有做任何事情。OpenGL多位Alpha纹理
这里是直接模式的呼叫:
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA);
glBegin(GL_QUADS);
{
glTexCoord2f(0, 0);
glVertex2f(0, 0);
glTexCoord2f(1, 0);
glVertex2f(356, 0);
glTexCoord2f(1, 1);
glVertex2f(356, 356);
glTexCoord2f(0, 1);
glVertex2f(0, 356);
}
glEnd();
不用说,有各种各样的OpenGL状态已设定在幕后,并明确一个
有没有我不知道的状态会干扰混合阶段?
我有blendfunc吗?这似乎是正确的从我看过的互联网网页 - 我已经检查了GDEBugger的纹理,所以图像确实已经加载了一个8位阿尔法通道,以及尝试图像没有alpha通道和一个位alpha通道。
任何帮助将不胜感激!
编辑:
在回答的答案:我使用的土壤图像加载库,我要把通过其源看看,看看它是如何做的事情。现在,我只是将这个图像渲染到已经渲染的场景的顶部 - 它绝对不是深度问题 - 事实上深度缓冲区测试已关闭。
看起来正确,有什么不看的权利是你的纹理代码,发布您的通话glTexImage2D。 – 2011-01-13 15:22:23
正如我所说,它通过一个库 - 我可能会尝试找到并示例alpha图像加载器并尝试它 - 应该更快地重建静态和调试它通过 – Tomas 2011-01-13 15:41:39