2010-05-18 38 views

回答

1

这通常通过在Linux中将鼠标“翘曲”回到屏幕中心来实现。 Here是一个论坛主题,使用流行的SDL库来做实际的鼠标读取。

在Windows中,使用较低级别的输入API(如XInput)进行调查。

+0

干杯队友。这种明显的解决方案。再次感谢。 – Ben 2010-05-18 15:01:49

1

执行此操作的一些代码可能需要特定于平台。例如,在Windows上,当用户拖动鼠标时,通常会进行相机旋转。您可以通过捕获鼠标并在捕获时回复WM_MOUSEMOVE消息来处理它。捕获鼠标时,即使光标位置超出窗口边界,您仍将继续收到鼠标移动消息。

它看起来像放松已经覆盖X很好,所以我不会在这里重复。

+0

感谢您的额外细节:) – Ben 2010-05-18 15:01:27

3

使用glutWarpPointer在每次鼠标移动后都会将鼠标移回屏幕中间(这将在glutMotionFunc,glutPassiveMotionFunc中)。 使用glutsetcursor来更改或隐藏光标的外观。

1

根据您使用的平台和工具,您可以让鼠标移动,然后计算距离,然后将其移回屏幕中央(或OpenGl窗口)。

int x,y; 
GetMousePosition(&x,&y); 
int deltaX = x-SCREEN_WIDTH/2; 
int deltaY = y-SCREEN_WIDTH/2; 
MoveMouse(SCREEN_WIDTH/2,SCREEN_HEIGHT/2); 

这样,您可以在保持鼠标位于同一位置的情况下轻松获得鼠标移动,从而避免出现问题。请注意,GetMousePositionMoveMouse是通用函数名称,因为这取决于您使用的操作系统和/或库。