【发布时间】:2011-05-01 00:57:50
【问题描述】:
我正在从旧游戏中渲染一些旧几何图形。他们的客户有一些算法可以让他们查看附近的区域,但我没有这种能力,所以我正在研究剔除不必要的多边形。目前,我正在渲染整个区域中的每个多边形,无论我是否可以看到它,无论它是否在可视范围内。显然这是完全低效的。
我应该考虑使用哪种类型的剔除?
我知道我可以剔除不在截锥体中的多边形,这将有助于减轻一些负载,但我可以说,选择不渲染距相机一定距离的多边形吗?这个叫什么?我也在某些区域使用雾。同样的问题。我能想出一个方法来剔除雾后面的所有东西,我看不到的区域。
【问题讨论】:
-
那是威力和魔法七吗? :)
-
我现在只看了截图。让我告诉你:过去 5 年的 GPU 在渲染场景时无论有无剔除都不会出现问题。但是,我看到您的帧速率相当低。我猜你正在使用立即模式 (glBegin(...); for(v in vertices) glVertex(v) ; glEnd();),对吧?那么每个顶点就意味着一个函数调用,很有可能会切换上下文;这会导致 CPU 的主要负载拖累您的性能。如果还没有这样做,我强烈建议使用顶点数组,或者更好的顶点缓冲区对象。