如何将屏幕坐标转换为2D OpenGL坐标

时间:2012-06-07 11:00:22

标签: ios math opengl-es geometry

我在iPad上设置了以下2D正交投影:

  • 原点位于显示屏中央
  • 右上角的
  • (+ 1,+ 1)
  • 右下角的
  • ( - 1,-1)
  • 根据iPad的1.333纵横比调整,因此X从-1.33到+1.33

iPad是风景画,左边是按钮,屏幕上有这样的符号:

  • 右下角的原点
  • (1024,768)位于左上角

当用户触摸屏幕时,如何计算2D GL位置? iOS为我提供了用户点击的屏幕位置。

即如果我点击中间的屏幕,iOS告诉我我点击(512,384)所以这应该转换为(0,0),(1024,768)到(-1.33,1.0)等。

我知道这应该是一个相当直接的数学运算,但是在试图解决之后,我的大脑已经糊涂了。

1 个答案:

答案 0 :(得分:1)

对于尺寸 w h 的屏幕,映射到[-1,-1] ... [1,1]的方式如下:

X = 2*x/w - 1
Y = 1 - 2*y/h

要匹配屏幕的宽高比,请将X乘以w / h。