C #을 사용하고 하드웨어 마우스 위치를 얻으려고합니다. 가장 먼저 시도한 것은 사용하기 쉬운 간단한 XNA 기능이었습니다.
Vector2 position = new Vector2(Mouse.GetState().X, Mouse.GetState().Y);
그 후 마우스 그리기를 수행하고 Windows 하드웨어 마우스와 비교하여 xna가 제공 한 좌표를 가진이 새로운 마우스는 "느슨해졌습니다". 즉, 몇 프레임 뒤에 있다는 것을 의미합니다. 예를 들어 게임이 600fps에서 실행되는 경우 저주가 반응하지만 60fps 소프트웨어에서는 마우스 지연이 더 이상 허용되지 않습니다. 따라서 하드웨어 마우스라고 생각한 것을 사용해 보았습니다.
[DllImport("user32.dll")]
[return: MarshalAs(UnmanagedType.Bool)]
public static extern bool GetCursorPos(out POINT lpPoint);
그러나 결과는 정확히 같습니다. 나는 또한 Windows form cursor를 얻으려고 시도했지만 막 다른 길이기도했지만 같은 지연으로 작동했습니다. xna 기능으로 혼란스러워 :
GraphicsDeviceManager.SynchronizeWithVerticalRetrace = true/false
Game.IsFixedTimeStep = true/fale
다소 명백한 이유로 지연 시간을 변경했지만 결론은 기본 Windows 마우스 뒤에 여전히 있다는 것입니다. 나는 일부 게임에서 하드웨어 가속 마우스 옵션을 제공한다는 것을 보았습니다. 다른 게임에서는 이미 기본적으로 사용됩니다. 누구나 그것을 달성하는 방법에 대해 약간의 리드를 줄 수 있습니까?
Mouse.GetState()
한 깨진되지 않으며, IsFixedTimeStep == true
사람들이 보이는 창 마우스와 직접 비교하지 않는 한 지연을 볼 수 없습니다. 그러나 낮은 프레임 속도에서 IsFixedTimeStep을 false로 설정하면 모든 사람이 볼 수 있습니다. 직접 입력에 대해 나는 가능성 (마지막 수단)을 고려했습니다.
Mouse.GetState()
깨진 생각하지 않습니다 . 마우스를 그릴 때와 동일한 프레임에서 마우스 위치를 확인 하시겠습니까? 이 때문에 또한 / 감속이 가능, 윈도우 커서 가속을 가지고 기억 느낌이 더 반응. 하드웨어에 더 가까이 다가 가려면 DirectInput을 눌러야합니다. DirectInput은 절대 마우스 위치 대신 이동 델타를 제공합니다. 그러나Mouse.GetState()
여전히 XNA에서 올바른 방법 이라고 생각 합니다.