可能重复:
Glut Mouse Coordinates
假设我有一个600x600的窗口 当我收到鼠标事件时,我不知道鼠标的实际位置是什么,在OpenGL中我使用它来绘制点:
(-0.5,0.5) | (0.5,0.5)
|
--------(0,0)-------
|
|
(-0.5,-0.5) | (0.5,-0.5)
但是当我收到GLUT鼠标事件时,取决于窗口的大小,我得到不同的坐标。我想要一个亲戚(到窗口)坐标系。我怎么得到这个?
答案 0 :(得分:4)
我很确定过剩会给你窗口空间中的鼠标坐标(即如果窗口是800x600而鼠标位置在中间,它会给你x:400,y:300),所以如果你想要把它带到你上面发布的opengl空间,你会做以下事情:
float x = (400 / 800) - 0.5f; //0.0
float y = (300 / 600) - 0.5f; //0.0
所以通用版本看起来像这样:
float mouseX = (theGlutMouseXCoordinate / theGlutWindowWidth) - 0.5f;
float mouseY = (theGlutMouseYCoordinate / theGlutWindowHeight) - 0.5f;
答案 1 :(得分:1)
也许我误解了你的问题,或者过度简化了答案,但你不是只想找到类似的东西:
float x = mouse.x / screen.width; //x now in [0,1]
float y = mouse.y / screen.height; //y now in [0,1]
x-=0.5f;
y-=0.5f;
或者逆转:
float wx = (x + 0.5f) * screen.width;
float wy = (Y + 0.5f) * screen.height;