我的项目透明度有问题。正如你所看到的,透明度对其他对象起作用很好 - 你可以看到树叶背后的犀牛,但问题在于树本身。当有两个分支,一个比另一个更近时,另一个分支不可见。与后备箱相同。透明度不适用于对象本身。
这是我在创建纹理时使用的代码:
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glGenTextures(1, &m_texture);
glBindTexture(GL_TEXTURE_2D, m_texture);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
答案 0 :(得分:3)
虽然您生成的片段的颜色是透明的,但它们仍会写入深度缓冲区,因此树的某些三角形会遮挡其他三角形,尽管不会影响颜色缓冲区。
要正确渲染透明对象,您必须
有一个技巧可以避免上述复杂性。如果你只有两个alpha值(零和一),那么你可以启用alpha test(glAlphaFunc)来完全丢弃透明片段。