Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/345.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在opengl中从前向后渲染?_Java_Opengl_Alphablending_Blending - Fatal编程技术网

Java 如何在opengl中从前向后渲染?

Java 如何在opengl中从前向后渲染?,java,opengl,alphablending,blending,Java,Opengl,Alphablending,Blending,我试图在opengl中渲染一个透明对象,但有时纹理彼此可见,有时则不可见。据我所知,我必须从后面到前面渲染它们,手动渲染时效果很好,但只能从特定的角度进行渲染。有什么方法可以计算它们的渲染顺序吗?如果有透明对象,如果不打算对对象进行排序,则需要使用或其他方法来正确渲染它们。将对象放入列表/数组中,并按相对于视点的距离对其进行排序。我听说我可以使用显示列表来完成此操作……但我如何对其排序?假设对象具有笛卡尔坐标,(X,Y,Z),然后,您可以使用sqrt(x^2+y^2+z^2)计算距离,其中x、y

我试图在opengl中渲染一个透明对象,但有时纹理彼此可见,有时则不可见。据我所知,我必须从后面到前面渲染它们,手动渲染时效果很好,但只能从特定的角度进行渲染。有什么方法可以计算它们的渲染顺序吗?

如果有透明对象,如果不打算对对象进行排序,则需要使用或其他方法来正确渲染它们。

将对象放入列表/数组中,并按相对于视点的距离对其进行排序。我听说我可以使用显示列表来完成此操作……但我如何对其排序?假设对象具有笛卡尔坐标,(X,Y,Z),然后,您可以使用sqrt(x^2+y^2+z^2)计算距离,其中x、y和z是对象与透视图的距离。然后,按降序排列。我可以手动计算距离,但我知道还有另一种方法可以使用z缓冲区或深度进行计算。有没有opengl方法可以做到这一点?opengl将绘制几何体。您需要使用适当的深度缓冲区、片段着色器等进行设置。您必须进行相应的工作才能做到这一点。它不会像设置一些标志和渲染那样简单。