这是我在绘制 3D 对象后打开正射投影的方式:
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(0,Screen_Width,Screen_Height,0,0,1);
这就是我在绘制 3D 对象后打开混合并以正交方式绘制纹理的方式:
glEnable(GL_TEXTURE_2D);
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA);
glColor4f(1,1,1,1);
glBindTexture(GL_TEXTURE_2D,Texture1);
glBegin(GL_QUADS);
//draw 1st quad
glEnd();
glBindTexture(GL_TEXTURE_2D,Texture2);
glBegin(GL_QUADS);
//draw 2nd quad
glEnd();
glDisable(GL_BLEND);
glDisable(GL_TEXTURE_2D);
Quad1 比 Quad2 大一点,涵盖了 Quad2 的某些部分。两种纹理都具有 RGBA 形式的 Alpha 通道。
问题是,Quad1 和 Quad2 正确地用 alpha 覆盖 3D 对象,但是 Quad1 的 alpha 在 Quad2 上时不起作用。它仅像 RGB 一样在 Quad2 之上绘制。
我该如何解决这个问题?