2010-05-18 3 views
0

OpenGL 윈도우에서 마우스가 움직일 수있는 거리를 연장하려면 어떻게합니까?OpenGL 윈도우 모드에서 마우스 공간을 확장하는 방법

내가 달성하고자하는 것은 커서가 숨겨져 있고 카메라 회전이 마우스가 창 경계 안에 남아 있어야하므로 마우스가 제한되지 않는 인터페이스와 같은 fps입니다.

답변

1

이것은 Linux에서 화면의 중앙으로 마우스를 "뒤틀어 서"구현하는 경우가 많습니다. Here은 실제 마우스를 읽기 위해 인기있는 SDL 라이브러리를 사용하여 이에 대한 포럼 스레드입니다.

Windows에서는 XInput과 같은 하위 수준 입력 API를 사용합니다.

+0

건배 메이트. 그러한 분명한 해결책. 다시 한번 감사드립니다. – Ben

1

일부 코드는 플랫폼에 따라 달라질 수 있습니다. 예를 들어, Windows에서는 일반적으로 사용자가 마우스를 끌 때 카메라 회전을 수행합니다. 캡쳐하는 동안 마우스를 캡처하고 WM_MOUSEMOVE 메시지에 응답하여 처리 할 수 ​​있습니다. 마우스가 캡처되는 동안 커서 위치가 창 경계를 벗어난 경우에도 마우스 이동 메시지를 계속 받게됩니다.

긴장을 풀지 않은 것처럼 보였으므로 X를 이미 꽤 잘 처리 했으므로 여기에서 반복하지 않겠습니다.

+0

추가 세부 사항 주셔서 감사합니다 :) – Ben

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은 사용하는 OS 및/또는 라이브러리에 따라 달라 지므로 일반적인 함수 이름입니다.

관련 문제