有没有办法获取3D世界中对象的屏幕坐标?
实现gluProject()
.
编辑:Mesa/SGI有一些代码。
编辑2:或者拿一份适用于iOS的GLU。
只需实现 OpenGL 管道的转换:模型视图、投影、透视设计、视口。您可以使用glGetDoublev查询当前矩阵,并使用glGetIntegerv查询viewort。
然后你必须计算投影矩阵乘以模型视图矩阵= MVP。
现在,对于每个顶点 v 计算 MVP*v。
然后计算 v/= v.w;
所以你得到了 [-1,1]x[-1,1] 范围内的坐标,最后一件事是缩放并将其转换为 [x,x+w]x[y,y+h](这是视口的值)。
您还可以查看 glFrustum 的 OpenGL 参考信息页面,glViewport,以了解所有这些转换是如何完成的。