我有一个大小的窗口(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)
答案 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现在应该是视口中的适当点。