OpenGL 윈도우에서 마우스가 움직일 수있는 거리를 연장하려면 어떻게합니까?OpenGL 윈도우 모드에서 마우스 공간을 확장하는 방법
내가 달성하고자하는 것은 커서가 숨겨져 있고 카메라 회전이 마우스가 창 경계 안에 남아 있어야하므로 마우스가 제한되지 않는 인터페이스와 같은 fps입니다.
OpenGL 윈도우에서 마우스가 움직일 수있는 거리를 연장하려면 어떻게합니까?OpenGL 윈도우 모드에서 마우스 공간을 확장하는 방법
내가 달성하고자하는 것은 커서가 숨겨져 있고 카메라 회전이 마우스가 창 경계 안에 남아 있어야하므로 마우스가 제한되지 않는 인터페이스와 같은 fps입니다.
이것은 Linux에서 화면의 중앙으로 마우스를 "뒤틀어 서"구현하는 경우가 많습니다. Here은 실제 마우스를 읽기 위해 인기있는 SDL 라이브러리를 사용하여 이에 대한 포럼 스레드입니다.
Windows에서는 XInput과 같은 하위 수준 입력 API를 사용합니다.
일부 코드는 플랫폼에 따라 달라질 수 있습니다. 예를 들어, Windows에서는 일반적으로 사용자가 마우스를 끌 때 카메라 회전을 수행합니다. 캡쳐하는 동안 마우스를 캡처하고 WM_MOUSEMOVE
메시지에 응답하여 처리 할 수 있습니다. 마우스가 캡처되는 동안 커서 위치가 창 경계를 벗어난 경우에도 마우스 이동 메시지를 계속 받게됩니다.
긴장을 풀지 않은 것처럼 보였으므로 X를 이미 꽤 잘 처리 했으므로 여기에서 반복하지 않겠습니다.
추가 세부 사항 주셔서 감사합니다 :) – Ben
glutWarpPointer를 사용하면 마우스를 움직일 때마다 (즉, glutMotionFunc, glutPassiveMotionFunc에 있음) 화면 중간으로 마우스를 움직일 수 있습니다. glutsetcursor를 사용하여 커서 모양을 변경하거나 숨 깁니다.
사용하는 플랫폼과 도구에 따라 마우스를 움직이면 거리를 계산 한 다음 화면 중앙 (또는 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);
이렇게하면 마우스를 동일한 위치에 두면서 문제를 피하면서 마우스 움직임을 쉽게 얻을 수 있습니다. GetMousePosition
및 MoveMouse
은 사용하는 OS 및/또는 라이브러리에 따라 달라 지므로 일반적인 함수 이름입니다.
건배 메이트. 그러한 분명한 해결책. 다시 한번 감사드립니다. – Ben