我正在尝试使用openGL制作游戏或3D应用程序.游戏/程序中将包含许多对象并被绘制到屏幕上(大约7000个).当我渲染它们时,我需要计算相机和物体之间的距离并对它们进行排序,以便正确渲染场景中的物体.了解这一点,对它们进行排序的最佳方法是什么?我真的希望排序能够快速完成,但我听说他们有"权衡",那么我应该使用什么算法来获得最佳性能呢?
任何帮助将不胜感激.
编辑:很多人都在谈论z缓冲区/深度缓冲区.这在一些人谈论的某些情况下不起作用.这就是我问这个问题的原因.
按距离排序并不能完全解决透明度问题.考虑两个透明表面相交的情况,每个表面都有一个更靠近你的部分.在游戏中可能很少见,但如果你不想让你的渲染器偶尔出现闪烁的外观,还有待考虑的事情.
更好的解决方案是与订单无关的透明度.使用支持原子操作的最新图形硬件,您可以使用A缓冲区以很少的内存开销和单次传递来执行此操作,因此它非常高效.例如,参见本文.
排序场景的问题仍然是有效的,即使它不是透明的 - 从前到后对不透明对象进行排序仍然很有用,以允许深度测试来丢弃看不见的片段.为此,Vaughn提供了BSP树的优秀解决方案 - 只要3D游戏已经存在,这些就已经用于此目的.
| 归档时间: |
|
| 查看次数: |
1734 次 |
| 最近记录: |