Objective-c OpenGLES 了解对象/模型的屏幕坐标

发布于 2024-11-06 15:23:25 字数 29 浏览 1 评论 0原文

有没有办法获取 3D 世界中物体的屏幕坐标?

Is there a way to get the screen coordinates of the objects in the 3d world?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

回眸一遍 2024-11-13 15:23:25

实现 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.

年华零落成诗 2024-11-13 15:23:25

只需实现 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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文