我一直在尝试将一些纹理渲染为 3D 世界前的 HUD 的一部分。我已经设置了一些方法,以便可以轻松地在 2D 和 3D 之间切换(setPerspective() 和 setOrtho())。大多数纹理都可以正常工作并显示出我想要的效果,但是我在处理包含透明度的纹理时遇到了一些困难。纹理的透明部分不会变成透明的,而是与背景颜色相同。
我在某处读到我必须先渲染背景,但是当我这样做时,由于某种原因,HUD 似乎根本没有出现。
public static void render() {
glClear(GL_COLOR_BUFFER_BIT | GL_BIT_BUFFER_BIT);
glLoadIdentity();
glClearColor(0.75f, 1, 1, 0);
setOrtho();
//2D Here
setPerspective();
//3D Here
}
是的,我的代码中确实有这个;
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA)