簡體   English   中英

在win32 / Opengl中捕獲鼠標移動

[英]Capture mouse movement in win32/Opengl

目前我只是使用WM_MOUSEMOVE消息,但它將鼠標移動限制在最大分辨率。 那么用Win32捕獲鼠標的最佳方法是什么(在OpenGl窗口上)? 我不想使用freeglut或任何額外的庫。

對於游戲和實時DirectInput非常合適,它使用起來中等。

這不是核心win32 api,winapi獲取輸入的方式是由您自己的更新循環驅動的GetCursorPos / SetCursorPos ,因此您可以使用自己的頻率進行查詢和重置。

SetCapture然后在WM_MOUSEMOVE上調用SetCursorPos 設置光標位置的目的是為移動提供空間,這樣您就可以獲得增量,即自上次更新后光標移動的數量,然后將光標放回窗口的中心。

如果您希望能夠在鼠標存在於窗口后捕獲鼠標事件,那么您可能需要查看SetCapture函數

如果您的問題是您想要制作FPS游戲並且您希望角色能夠以連續動作旋轉,那么您希望在每次鼠標移動事件后將鼠標位置設置為窗口的中心並處理基於輸入的操作關於觸發鼠標移動事件時光標位置與屏幕中心之間的差異。 要設置鼠標的位置,可以使用SetCursorPos函數。

您最好的選擇是使用DirectInput (設置可能有點痛苦)或RawInput

使用RawInput頁面中有一個相當全面的示例(參見示例2)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM