在Opengl中,近平面和Image平面是一样的吗?

时间:2014-11-25 03:52:30

标签: opengl opengl-es

我是Android开发人员,但却是OpenGL的初学者。我对视锥体感到困惑。 有两个问题:

  1. 靠近飞机和画面是否相同?
  2. 如果它们不相同,为什么没有指定图像平面的z值?
  3. 我不精通英语,希望你能理解我的问题。任何帮助都将不胜感激!

1 个答案:

答案 0 :(得分:7)

不,他们有不同的概念,OpenGL不需要图像平面。

由于使用投影矩阵来定义相机的投影,因此存在近平面和远平面。当您进入深度缓冲区和数值精度时,它们非常重要。显然,图像是渲染的结果。然而,图像平面仅存在于现实世界的相机中,其中光通过针孔或透镜投射到记录图像的物体上。在计算机图形学中,除非你正在做疯狂的非薄镜头效果,否则不需要对它进行建模。我想像这样:

enter image description here

再一次,部分圈出了“想象中的”#34;在OpenGL和光栅化方面没有任何意义。它们对于真实相机来说是必需的,但人工计算图像可能需要一些捷径。首先,投影矩阵用于将几何投影到图像空间中,保持深度值。图像空间与图像平面的概念非常分离。在观看照片时,我们不会想到相机中传感器或胶片的位置和大小。然后对几何体进行栅格化,产生片段(像素数据包)。深度缓冲区用于仅保留最前面的可见碎片。这只是基于深度比较。在某种意义上,像素不是显式图像平面上的表面,而是表示观察体积的切出部分。

homogeneous coordinates的维基页面讨论了点到平面z = 1的映射,尽管认为图像平面的深度似乎没有任何用途。

有很多关于相机模型的文献,但我不知道应该指出哪些。如果其他人这样做,请评论/编辑!也许从红皮书开始? http://www.glprogramming.com/red/chapter03.html