OpenGL坐标转换

时间:2013-06-25 08:55:19

标签: opengl

我有一个大小的窗口(475,574)。当我使用鼠标点击事件来获取屏幕上的位置 我的范围是(0-475,0-574)。我正在使用glOrthof(-1.5,+ 1.5,-1.5,+ 1.5,4.0,15.0) 所以我的问题是如何将我通过鼠标事件的点转换为3D openGL点。

例如 - 我如何将(100,200)转换为(-1.2,0.234,6)

1 个答案:

答案 0 :(得分:1)

您需要在两个坐标系之间进行转换,才能将屏幕坐标转换为世界坐标。

//calculate ratio
widthRatio = 3.0 / width; // 3.0 = total width of viewport
heightRatio = 3.0 / height; // 3.0 = total height of viewport

worldX = (screenX * widthRatio) - 1.5; // subtract 1.5 (half of viewport width) to get origin
worldY = (screenY * heightRatio) - 1.5;

worldX和worldY现在应该是视口中的适当点。