【发布时间】:2013-04-06 16:19:54
【问题描述】:
我正在尝试使用 openGL 制作游戏或 3D 应用程序。游戏/程序将包含许多对象并绘制到屏幕上(大约 7000 个)。当我渲染它们时,我需要计算相机和物体之间的距离并对它们进行排序,以便正确渲染场景中的物体。知道了这一点,对它们进行排序的最佳方法是什么?我真的希望排序能够非常快地完成,但我听说它们需要“权衡”,那么我应该使用什么算法来获得最佳性能?
任何帮助将不胜感激。
编辑:很多人都在谈论 z-buffer/depth 缓冲区。这在某些情况下不起作用,就像一些人谈到的那样。这就是我问这个问题的原因。
【问题讨论】:
-
你知道你不需要对对象进行排序,你可以使用深度缓冲,对吧?
-
深度缓冲在某些情况下不起作用,例如使用透明纹理时。在这种情况下,我相信您必须对图元进行排序才能获得正确的渲染。
-
并且你想先绘制前面的对象以快速填充深度缓冲区(当没有透明度时)
-
我认为渲染场景和进行 z 排序是 openGL 的工作,你为什么要这样做?
-
BSP树可以用来在线性时间内按深度顺序遍历对象。