有没有办法在3d世界中获取对象的屏幕坐标?
答案 0 :(得分:2)
答案 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参考信息页面,了解所有这些转换是如何完成的。