对象可见性由渲染顺序决定,而不是由它们相对于视点的位置决定

Objects visibility determined by order of rendering but not by their position with respect to view point

我正在使用 OpenGL ES 绘制一个立方体,每边的颜色都不同。

每条边由两个三角形组成, 我通过首先使用 GLES20.glUniform4fv 设置颜色来绘制每一面,然后使用 GLES20.glDrawElements .

绘制三角形

问题是所有边(三角形)在屏幕上都是可见的,无论一侧是否在另一侧之后。

渲染是按照我绘制边的顺序进行的,这意味着最新的会与旧的重叠,但不是基于边的位置和视角的顶点。

如果必须事先设置某些内容,以便对象可见性由对象的位置和视点决定,请帮忙。

有多种方法可以解决您的问题,例如使用深度缓冲区或基于树的算法。 OpenGL ES 具有深度缓冲的内置实现。您可以使用 GLES20.glEnable( GLES20.GL_DEPTH_TEST ) 启用它。不要忘记在绘制之前清除或使 (GLES 3.x) 深度缓冲区无效。但是请注意,将其用于部分透明的表面时会遇到一些困难。对性能的影响取决于深度精度、深度缓冲区大小和场景复杂度。