我正在尝试制作OpenGLES 2.0多维数据集应用程序。 我们的想法是将一个纹理(具有α75%)应用于立方体的所有6个面。 这意味着即使我旋转立方体,我也能够在任何给定的帧上看到所有6个面。现在我启用了深度测试(我的应用程序需要这个!!)和混合。深度函数是LEQUAL,混合函数是SRC_ALPHA,ONE_MINUS_SRC_ALPHA。
现在,问题是在某些立方体面上不会显示底层面。我无法理解这一点,因为逻辑与其他立方体面很好地协作。仅供记录,我已禁用CULL_FACE。
提前致谢。
此致
益智游戏
答案 0 :(得分:2)
按照定义的顺序绘制面。现在,当旋转立方体时,它们的绘制顺序不会改变。有些面孔首先靠近相机。然后在那之后绘制一些面部,但Z-test表示已经有一个像素靠近相机,因此不需要进行绘图。
问题在于,OpenGL | ES 2.0在渲染时不会对面进行排序。正确处理透明度和深度仍然是3D编程中的一个真正挑战,但是对于这样的简单情况,您可以将面部从前面排序。回到前面称为“画家算法”,排序称为“深度排序”或“z排序”。
简单,绝对不是最佳且效率肯定低效的方式可能会像这样:
有更好的方法来处理这个问题,还有各种高级优化。但我没有找到任何教程来涵盖这样的简单案例。也许我只是找不到合适的关键词。