例如,如果我们有正投影:
left = -aspect, right = aspect, top = 1.0, bottom = -1.0, far = 1.0, near = -1.0
并且将在-2.0绘制三角形,它将被近剪裁平面切割。它真的会节省一些宝贵的渲染时间吗?
剔除确定是否需要绘制内容并丢弃(如果在我们的视图之外)(由顶点着色器/主程序中的程序员编写)。剪辑==便宜的自动剔除?
也只是在廉价剔除的主题 - 将
if(dist(cam.pos, sprite.pos) < MAX_RENDER_DIST)
draw_sprite(sprite);
对于简单的2D游戏来说已经足够了吗?
答案 0 :(得分:2)
对于x,y和z,默认的OpenGL裁剪空间为-1到+1。
精灵距离的条件测试将起作用。有点不需要,因为远剪裁平面几乎会做同样的事情。通常它足够好。有些情况下需要进行测试。剪切平面内角处的物体可能会在相机转动时到达远剪裁平面之外。原因是从相机到角落的距离比从相机到远剪裁平面的垂直距离长。如果您有2D游戏并且不允许更改摄像机视角,则这不是问题。
如果你有一个简单的2D游戏,你可能不需要担心图形优化。如果您在剪裁平面之外绘制精灵,则可以节省时间。但你节省多少时间取决于。如果大量的精灵在外面,你可以节省相当多的时间。但是,你应该考虑使用什么算法,而不是绘制无论如何都不会显示的东西。如果只有一小部分精灵在外面,那么节省的时间可以忽略不计。
答案 1 :(得分:2)