如何将Z值与深度值进行比较?

时间:2016-02-24 21:32:49

标签: opengl

我想知道是否在坐标(xyz)之前绘制了一个不同的模型。它在这里。
它不能通过深度值的Z值比较和我做世界变化的坐标来工作。

似乎Z值在near = 0,far = 1中归一化,但深度值似乎使得视点在视锥体1的最内部绘制。

当我将远平面移动到远处时,Z值减小,但深度值没有变化。

谢谢。

1 个答案:

答案 0 :(得分:0)

我不确定我是否理解你的问题,但我会猜测并提供答案。如果这不是你要求的,请提前道歉。在OpenGL中,您需要了解视锥体是什么。在其中,您有一个x和y坐标以及一个深度值。深度值表示绘制的对象(像素)离您的眼睛有多远。这样可以避免让背景中的对象混淆更近的对象,从而更真实地表现现实。您还有剪裁平面,近剪裁平面和远剪裁平面。不会绘制比nera剪裁平面更近的任何东西,并且不会绘制比远剪裁平面更远的任何东西。例如,如果我从太空画出地球的图像。我知道我不必为地球另一边的任何东西而烦恼,只能将它剪掉,加快速度。通常,近剪裁平面设置为z = 0,深剪裁平面设置为深度= 1。然后,这个间隔被细分(取决于你的深度缓冲区)和OpenGL,如上所述,将把每个像素放在每个槽中,并决定什么更接近你的眼睛和什么不是(在从眼睛到像素的同一条线上) X,Y)。如果你是3D并且有x,y,z,那么场景中的z值将与深度值的值不匹配,你需要使用视图矩阵来正确地映射事物。

希望这有助于一些人。