因此,我试图找出在 OpenGL 中渲染 3D 模型的最佳方法,因为它的某些纹理具有 alpha 通道。
当我启用深度缓冲区并开始绘制 3D 模型中的所有三角形时,如果它绘制了一个位于模型中另一个三角形前面的三角形,它在到达它时根本不会渲染后三角形。问题是当前面的三角形具有 alpha 透明度时,应该可以看到后面的三角形,但后面的三角形仍然没有渲染。
禁用深度缓冲区消除了这个问题,但会产生一个明显的问题,即如果三角形不透明,那么如果在之后渲染,它仍然会在其后面渲染三角形。
例如,我正在尝试渲染一棵松树,它基本上是一些相互堆叠的具有透明底座的锥体。下图显示了启用深度缓冲区时出现的问题:
您可以看到仍然可以看到透明三角形的轮廓。
下图显示了禁用深度缓冲区时的样子。
在这里,您可以看到树后面的一些三角形是如何在树的其余部分前面渲染的。
任何想法如何解决这个问题,并正确渲染松树?
PS我正在使用着色器来渲染一切。