2010-05-18 67 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是通用函數名稱,因爲這取決於您使用的操作系統和/或庫。