2012-05-05 62 views
-1

假设我在OpenGL中有一个透视图并选择给定深度处的一个点。假设它在z = -10。我怎么知道这个点有哪些实际的x坐标和y坐标?拥有正视图很容易,因为每个深度都是一样的。但从一个角度来看:我如何找到这些x-y值?OpenGL透视x-y坐标到正交

回答

0

您提供的坐标基本上是“世界”坐标 - 即在您构建的虚拟世界中存在事物的地方。换句话说,你使用的坐标总是正交的。例如,如果我打算做一个房子的3D模型,我可以设置它,所以我在实际的脚上工作,所以当我可以画一条从0,0到0,10的线条到代表正好10英尺长的东西。无论我是否近距离观看,这将保持10英尺,因此它充满了我的视野,或者从很长的一段距离,所以它只有几个像素长。

只有在显示对象时才进行透视变换。我根本不会将它输入到系统中。

如果您要求计算某个对象的屏幕坐标,那么可以。通常的做法是用gluUnProject。至少在我的经验中,你最终需要做到这一点相对不寻常。

有一次您关心的是当您使用鼠标在屏幕上选择某些东西时。虽然它的可能用gluUnProject做,OpenGL有一个选择模式专门用于这种目的,它的工作得很好。

+0

谢谢你的回答杰里。背景目标实际上是在这里陈述:http://stackoverflow.com/questions/10457834/how-do-i-apply-proper-perspective-to-this-opengl-es-texture/10458680#10458680,并抱歉beeing不清楚,它是iPad的iOS应用程序,因此OpenGL版本实际上是嵌入式系统。正如你所说,这个问题与使用鼠标(通过触摸)选择一个区域并找出顶点实际具有哪个坐标有关。你知道gluUnProject是否仍然适用于ES吗? – Nicke

+0

@Nicke:它不是内置的,但至少有一个独立的[re-implementation](http://softwareprodigy.blogspot.com/2009/08/gluunproject-for-iphone-opengl-es.html)。 –

+0

嗯,想更多。它仍然可能不是我要求的东西。可以说,z值对于我在显示屏上选择的给定点是已知的。那么问题应该只是某种投影功能,我是否正确?我的意思是,假设没有一个真实的物体,比如立方体,存在于我触摸的世界中。 – Nicke

0

查看gluProject作为将光标位置投影到“世界”位置(和gluUnproject作为找出您的对象在屏幕上的位置的方式)的一种方式。

+0

好吧,如果我不清楚,我很抱歉,但这也是OpenGL ES for iOS的属性? – Nicke