OpenGL中,透明度和深度之间的冲突如何解决?
我现在作一个场景,里面树木的贴图使用mask和blend,以实现部分透明。但我如果去掉深度检测,就会把后面的面显示到前面来。可是加上深度检测,贴图就只对部分对象是透明的,对某些面却是完全遮挡的,请问如何解决?
代码如下,其中纹理是RGBA格式。如果有好几个这种方块就会发生遮挡,就是说应当透明的部分遮住了后面的物体。
glEnable(GL_BLEND);
glEnable(GL_DEPTH_TEST);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glBindTexture(GL_TEXTURE_2D, textureID);
glBegin(GL_QUADS);
glTexCoord2f(0.0f, 0.0f); glVertex3f(-0.5f, -1.1f, 0.0f);
glTexCoord2f(1.0f, 0.0f); glVertex3f( 0.5f, -1.1f, 0.0f);
glTexCoord2f(1.0f, 1.0f); glVertex3f( 0.5f, 1.1f, 0.0f);
glTexCoord2f(0.0f, 1.0f); glVertex3f(-0.5f, 1.1f, 0.0f);
glEnd();