假设我在OpenGL中有一个透视图,并选择给定深度的点。假设它在z = -10。我如何知道这一点的实际x和y坐标?具有正视图时很容易,因为它对于每个深度都是相同的。但是从视角来看:我如何找到这些x-y值?
答案 0 :(得分:0)
您提供的坐标基本上是“世界”坐标 - 即,您构建的虚拟世界中存在的东西。换句话说,您使用的坐标始终是正交的。
例如,如果我打算做一个房子的3D模型,我可以设置它,所以我在实际的脚上工作,所以当我可以画一条从0,0到0,10的线来表示正好10英尺长的东西。无论我近距离观看它,它都会保持10英尺,所以它填满了我的视野,或者距离很远,所以只有几个像素长。
仅在显示对象时才完成透视转换。我根本没有在进入系统的坐标上这样做。
如果您正在询问计算对象的屏幕坐标,是的,您可以。通常的方法是使用gluUnProject
。至少在我的经验中,你最终需要这样做是相对不寻常的。
有一次你关心的是你在屏幕上使用鼠标选择某些东西。虽然使用gluUnProject可以可能,但OpenGL有一个专门用于此类目的的选择模式,并且它运行良好。
答案 1 :(得分:0)
将gluProject
视为将光标位置投射到“世界”位置的方式(以及gluUnproject
,以便找出对象在屏幕上的位置)。