对于Frustum Culling感到困惑

Nic*_*ner 5 java opengl graphics jogl frustum

我是OpenGL的新手.我和JOGL一起使用它.

我正在读关于截头剔除:

http://www.lighthouse3d.com/opengl/viewfrustum/

http://www.crownandcutlass.com/features/technicaldetails/frustum.html

我不确定它应该做什么.OpenGL不会自动剔除屏幕外对象吗?(这种剔除速度明显慢于不首先发送对象吗?)

从我正在阅读的内容来看,它看起来并不像是避免绘制被遮挡在另一个之后但在视锥体内的对象.这是否意味着唯一的好处是避免将屏幕外对象发送到OpenGL?

Kar*_*nek 5

是的,你基本上是对的。视锥体剔除会切除相机金字塔外部的对象。OpenGL 在渲染场景时当然也会这样做,但是以每个顶点为基础的。视锥体剔除适用于每个对象,因此其性能提升潜力要高得多。
瓶颈之一是 CPU 和 GPU 之间的数据传输。例如,如果您需要传输室外场景中所有对象/顶点的 1/4,则视锥体剔除可以带来不错的性能提升。


Tor*_*ack 1

当您在代码中进行视锥体检查时,您可以使用包围正在绘制的对象的简单几何图形来完成此操作。这比卡片尝试剔除每个三角形要快得多。