如何防止透支?

Afr*_*ief 2 algorithm graphics rendering

在Google中搜索这是一个困难的问题,因为它在财务方面还有其他含义。

当然,我的意思是“绘图”,例如计算机图形..不是金钱。

我有兴趣防止3D绘图和2D绘图过度绘制。
(我应该把它们变成两个不同的问题吗?)

我意识到这可能是一个非常广泛的问题,因为我没有指定要使用的技术。如果范围太广,也许可以阅读一些有关我可以阅读的资源的提示。

编辑:
我的透支意思是:

  • 当您绘制太多对象时,渲染单帧会非常慢
  • 当您绘制超出所需面积的区域时,渲染单个框架会非常慢

nkr*_*rkv 5

这是一个非常复杂的话题。

首先要考虑的是平截头截锥体。它将滤除不在相机视野内的对象,因此您可以在渲染阶段传递它们。

第二件事是对相机中的对象进行Z排序。最好从前到后进行渲染,以使附近的对象将“接近值”写入深度缓冲区,并且不会绘制远处的对象的像素,因为它们不会通过深度测试。这将节省GPU的填充率和像素着色器工作。但是请注意,如果场景中有半透明的对象,则应以从后到前的顺序首先绘制它们,以使可以进行alpha混合。

如果您使用某种空间分区(例如OctreeQuadtree),则这两件事都是可以实现的。哪个更好取决于您的游戏。Quadtree适用于大型开放空间,Octree适用于具有多个级别的室内空间。

而且,不要忘记可以在DirectX和OpenGL中用单行启用的简单背面剔除,以防止绘制背面带有摄像头的面部。


MaR*_*MaR 5

问题真的太广泛了:o)查看这些“指针”,并进行更具体的询问。

典型的透支抑制剂为:

  • Z缓冲区
  • 基于遮挡的技术(各种缓冲技术,硬件遮挡等)
  • 模板测试

在更高的逻辑级别上:

  • 选择(通常通过视锥)
  • 场景组织技巧(通常是树木或瓷砖)
  • 前后粗略绘制(这显然是辅助技术:o)

编辑:添加了模板测试,确实具有有趣的透支预防用途,尤其是在2d / 3d的组合中。