Objective-c OpenGLES知道对象/模型的屏幕坐标

时间:2011-05-13 12:28:44

标签: objective-c opengl-es coordinates

有没有办法在3d世界中获取对象的屏幕坐标?

2 个答案:

答案 0 :(得分:2)

实施gluProject()

编辑:梅萨/ SGI有some code

EDIT2:或者抓取GLU for iOS的副本。

答案 1 :(得分:1)

只需实现OpenGL管道的转换:modelview,projection,perspective devide,viewport。您可以使用glGetDoublev查询当前矩阵,使用glGetIntegerv查询视图。

然后你必须计算投影矩阵时间modelview矩阵= MVP。

现在为每个顶点v计算MVP * v。

然后

计算v / = v.w;

所以你得到范围[-1,1] x [-1,1]的坐标,最后一个是缩放并将其转换为[x,x + w] x [y,y + h](这是视口的值。)

您还可以查看glFrustum,glViewport的OpenGL参考信息页面,了解所有这些转换是如何完成的。