opengl是否渲染不在视图中的对象?

时间:2010-09-16 15:29:10

标签: opengl

例如,如果我绘制一个立方体并转动我的角色以便远离立方体它是否使用CPU / gpu处理来绘制它,即使它不在屏幕上?我作为一个程序员是否需要足够聪明,如果一个对象不在屏幕上或很远的地方,就不能进行opengl绘制调用?

4 个答案:

答案 0 :(得分:3)

它不会这样渲染它们,但它确实使用了我认为是你所要求的资源。是的,你这样做。

你可能在经过视锥体剔除之后:

答案 1 :(得分:2)

是。发送到OpenGL的所有顶点数据都将消耗资源,无论相应的几何体是否在视图中。如上所述,视锥体剔除是一种优化,它识别不在视图体积中的对象并忽略/剔除其顶点数据。因此,如果顶点数据从未提交给GPU,那么它将永远不会被GPU处理。

答案 2 :(得分:1)

您可以启用'scissor test'剪裁剪刀矩形。

也就是说,这并不会阻止你的所有其他绘图代码运行 - 所以除非你的场景非常简单,否则你通常想要研究更复杂的方法。

OctreesBSP trees是一个很好的起点。

答案 3 :(得分:1)

是的,GL确实丢弃了不在视野范围内的像素,但仍然消耗资源,因为它是每像素的。跳过不可见原语的绘制调用是一种更好的方法。