在OpenGL中,为什么我的相机看到z = -1或z = 0而不是z = -2?

时间:2016-09-15 07:04:56

标签: opengl

我正在网上看一个简单的教程,显示一个正方形,顶点(-1,-1,0),(1,-1,0),(1,1,0),( - 1, 1,0)。

事情很好。 然后我将所有4个顶点的z = 0替换为z = -1。事情仍然很好。

然后我用z = -2代替z = -1。而且我再也看不到广场了。 z = -1.25也不起作用。

我以为相机在(0,0,0)处看负z。发生了什么事?

1 个答案:

答案 0 :(得分:2)

“相机”的想法很有用,但作为对实际情况的简化,有时可能会产生误导。将顶点数据转换为“剪辑空间”后,生成的图元将从每个轴上的-1 .. + 1剪裁到一个立方体。多维数据集外的任何基元都将被完全丢弃。

因此,设计中不会呈现z = -1.25或z = + 2等处的任何内容。

在普通应用程序中,您的顶点着色器(或模型视图和投影矩阵,如果您使用的是旧版OpenGL)必须转换要渲染的对象,以便它们落入该多维数据集内。对于透视渲染,您可以将立方体视为使用齐次坐标,或者您可以将剪切视为Z划分后发生的。