从一个角度看,我的灌木是这样的:
从另一个角度来看,它们看起来像这样:
我的理论是,当从第一个角度看灌木时,灌木后面的所有 block 都已经画好了,所以当绘制灌木时,它只是将它们绘制在上面。
然而,从另一个角度来看,它基本上是先尝试绘制灌木,然后当它去绘制灌木后面的 block 时,它检查深度缓冲区并发现有东西已经挡住了 block 的 View ,所以它不会渲染它,导致海军蓝色方 block (我的透明颜色)。
我真的不知道如何解决这个问题。禁用深度测试会导致各种其他错误。有没有某种方法可以将顶点或多边形标记为具有透明度,以便它知道它仍然需要渲染后面的内容?
<小时/>Found this 。这是唯一的解决方案吗?分离我的透明和不透明 block ,然后在几乎每一帧的 CPU 上手动对它们进行排序,因为玩家可以四处移动?必须有一种方法将其委托(delegate)给 GPU...
最佳答案
该链接(以及 CPU 上的排序)用于 alpha 混合。如果您只需要 Alpha 测试(而不是混合),那么您不需要对任何内容进行排序。只需启用 alpha 测试,并保持启用深度测试,一切都会正常渲染。
请参见此处:http://www.opengl.org/wiki/Transparency_Sorting 您需要需要 alpha 测试的“Alpha 测试”,而不是需要排序的“标准半透明”。
关于opengl - GL_DEPTH_TEST 和透明纹理的渲染故障,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9353210/