2015-11-09 54 views
0

G'day!假设我在窗口中有一个由其整数值表示的鼠标单击(窗口可调整大小),所以它的域将是(0,0) - >(current_width,current_height)。是否有一种简单的方法来“正常化”或将此鼠标点击位置转换为OpenGL土地中的顶点?即R^2中具有域[-1,1]^2的点?从视口坐标转换为[-1,1]^2顶点[OpenGL]

例如:如果该窗口的当前宽度和高度为400和600分别与我在400600点击时,我想容易将其转换成[1,-1]。

这个功能是否存在于OpenGL中,还是我必须自己编写函数?

干杯。

回答

1

你必须自己编写的功能,但它的琐碎:

x_ogl = 2.0 * (x_mouse - width/2)/width 
y_ogl = -2.0 * (y_mouse - height/2)/height 

第二个公式中的否定是从小鼠“+已经Ÿ向下”转换/屏幕坐标比较正常的笛卡尔+ ve Y up“。另外,在X和Y坐标之间维持1:1的纵横比将是更传统的,其中较大的轴保持范围[-1,1]并且较小的轴具有较小的范围。

如果这是你真正想要的,那么在上面的两个表达式中,而不是如图所示,用外部分区的右侧替换max(width, height)

+0

我认为它不得不变得有点不同。我结束了: 'x_ogl = 1+(x_mouse-width)* 2/width'和 'y_ogl = -1 *((y_mouse-height)* 2/height)+1)' 虽然。你的建议促使我解决问题。 –

+0

@AggressiveSneeze。我给出的方程式应该没问题 - 请参阅http://jsfiddle.net/8onndhuw/2/(Javascript)演示 – Alnitak

相关问题