Objective-c OpenGLES 了解对象/模型的屏幕坐标
有没有办法获取 3D 世界中物体的屏幕坐标?
Is there a way to get the screen coordinates of the objects in the 3d world?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
有没有办法获取 3D 世界中物体的屏幕坐标?
Is there a way to get the screen coordinates of the objects in the 3d world?
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(2)
实现
gluProject()
。编辑:Mesa/SGI 有 一些代码< /a>.
EDIT2:或者获取 GLU for iOS 的副本。
Implement
gluProject()
.EDIT: Mesa/SGI has some code.
EDIT2: Or grab a copy of GLU for iOS.
只需实现 OpenGL 管道的转换:模型视图、投影、透视划分、视口。您可以使用 glGetDoublev 查询当前矩阵,使用 glGetIntegerv 查询视图。
然后你必须计算投影矩阵乘以模型视图矩阵 = MVP。
现在对于每个顶点 v 计算 MVP*v。
然后计算 v /= vw;
所以你得到了 [-1,1]x[-1,1] 范围内的坐标,最后一件事是缩放并将其转换为 [x,x+w]x[y,y+h] (它们是视口)。
您还可以查看 glFrustum、glViewport 的 OpenGL 参考信息页面,了解所有这些转换是如何完成的。
Just implement the transformations of the OpenGL pipeline: modelview, projection, perspective devide, viewport. You get query the current matrices with glGetDoublev and the viewort with glGetIntegerv.
Then you have to compute projection matrix times modelview matrix = MVP.
now for each vertex v compute MVP*v.
then compute v /= v.w;
So you got coordinates in range [-1,1]x[-1,1], the last thing is scaling and translating this into [x,x+w]x[y,y+h] (which are the values of the viewport).
You can also take a look info pages of the OpenGL reference for glFrustum, glViewport, to see how all these transformations are done.