Opengl 将摄影机深度投影到三维平面上

Opengl 将摄影机深度投影到三维平面上,opengl,directx,glsl,shader,cg,Opengl,Directx,Glsl,Shader,Cg,可以将相机深度投影到平面上吗? 让我解释一下,如果我简单地在平面上传输深度缓冲区,它将始终显示从摄影机角度的深度。但是如何从平面的角度显示深度。 我想在着色器上应用效果。对我来说,这可能是一个矩阵问题,但我不明白。深度缓冲区是相对于表示的,可以使用(例如)着色器将其投影到任何平面。但是 深度缓冲区不是对象的完整几何表示,而只是camara POV的“可见”表面。 如果投影深度缓冲区,可能不会投影部分对象(请参见图) 在图片中,红眼(camara)正看着一个物体(黑色)。深度缓冲区表示camara

可以将相机深度投影到平面上吗?
让我解释一下,如果我简单地在平面上传输深度缓冲区,它将始终显示从摄影机角度的深度。但是如何从平面的角度显示深度。

我想在着色器上应用效果。对我来说,这可能是一个矩阵问题,但我不明白。深度缓冲区是相对于表示的,可以使用(例如)着色器将其投影到任何平面。但是

深度缓冲区不是对象的完整几何表示,而只是camara POV的“可见”表面。 如果投影深度缓冲区,可能不会投影部分对象(请参见图)

在图片中,红眼(camara)正看着一个物体(黑色)。深度缓冲区表示camara和红色曲面之间的距离。 对于平面(蓝线),您可能希望获得整个对象投影(蓝色曲面),但是在平面上投影红色曲面,您将只获得整个蓝色曲面的一小部分

如果你想要整个蓝色表面

  • 把卡马拉的视角改在飞机后面
  • 渲染场景
  • 获取深度缓冲区并将其保存到纹理/图像/缓冲区(P)中
  • 重新设置您的camara POV
  • 使用着色器图像(P)渲染场景

  • 感谢您的回答,当然深度缓冲区不是对象的几何表示。在我的例子中,我有相机的视角,但我不知道如何获得飞机的POV。你明白这个问题吗?我不知道如何获得正确的深度。假设你的平面是一个四元体(a,B,C,D),1)使用a-B和a-C的叉积,你得到平面的法线。这可以用作卡马拉方向。2) 您可以使用四边形的中心点作为camara位置:(A+C)/2。3) 根据需要将camara设置为ortogonal和其他参数。这可能就是所谓的“困难”。camara的“远”平面的尺寸可能与您的QUADOk一样大,非常感谢您的回答,我想知道是否需要一台新的相机,但似乎是。。。我想如果我在着色器中使用一些矩阵来改变位置的视点,它会起作用。