我在渲染具有 8 位 alpha 通道的纹理时遇到了一些麻烦 - 即,它被展平为 1 位,而 glBlendFunc() 似乎没有做任何事情。
这是立即模式调用:
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 通道和一位的图像阿尔法通道。
任何帮助将不胜感激!
编辑:
回应答案:我正在使用 SOIL 图像加载库,我将查看它的源代码,看看它是如何工作的。现在,我只是在已经渲染的场景上渲染这个图像——它绝对没有遇到深度问题——实际上深度缓冲区测试已经关闭。