OpenGL(ES) - 视锥体和正交之间有什么区别?

时间:2011-04-29 18:39:45

标签: android graphics opengl-es

当我使用相同参数的每一个时,我注意到的唯一区别是“相机”离物体有多近。这里有什么区别,哪个主要是2D游戏?

3 个答案:

答案 0 :(得分:32)

我不同意LeffelMania,虽然他的答案已经被接受,但我想再次解释一下截头体是什么以及正交和透视预测之间的区别是什么。

视锥体是没有顶部形状3D对象的金字塔(在由zNear和zFar平面之间的空间定义的链接中)。

view frustum

视锥体用于确定相机可以看到的内容。必须渲染内部或与相机的视锥体相交的所有内容,其余部分都可以忽略。

由于平截头体是一种难以进行交叉检查的形状,因此通常会构造矩阵变换,以便将视锥体转换为立方体。此矩阵变换也适用于所有场景对象,以便我们现在可以执行简单的“它与立方体相交”检查。这称为canonical view frustumsee more info here

现在关于透视与正投影。在图片中,您可以看到相机或投影中心(COP)。在透视投影中,COP靠近近平面。远飞机上所有位置的光线都指向COP。在这些光线与近平面(也称为视口)相交的情况下,像素根据与光线撞击的近平面最接近的颜色着色。透视投影导致(多个)消失点,远离相机的物体较小,世界上的平行线也不一定平行于图像上。

在正交投影中,COP无限远,因此光线几乎彼此平行。没有消失的点,更远的物体不会画得更小,世界上的平行线在画面上是平行的。

答案 1 :(得分:1)

一般来说,Frustum用于3D场景以适应透视视图投影。它考虑了每个物体与相机的距离以及视角,以确定物体在屏幕上的大小和位置。正交投影简单地获取每个对象并从对象绘制直线到屏幕上的像素,使其成为平坦场景。这是一个粗略的概括,在这个主题上有很多要说的,但对于2D游戏,你会想要使用正交投影。

答案 2 :(得分:0)

与您提到的内容相对应的投影有两种:
正投影和透视投影。
以下图表可帮助您快速了解两者之间的区别:
Orthographic Projection
Perspective Projection