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

WZY*_*WZY 2 opengl opengl-es

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

  1. 靠近飞机和画面的东西是一样的吗?
  2. 如果它们不是同一个东西,为什么没有指定图像平面的z值?

我不擅长英语,希望你能理解我的问题..任何帮助将不胜感激!

joz*_*yqk 8

不,它们是不同的概念,OpenGL中不需要图像平面.

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

在此输入图像描述

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

齐次坐标的维基页面讨论了点到平面z = 1的映射,尽管认为这是图像平面的深度似乎没有任何用途.

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