2013-01-03 2 views
1

Gameplay라는 엔진을 사용하여 FPS 데모를 만듭니다. 저는 현재 플레이어가지도를 볼 수 있도록 엔진에 captureMouse() 함수를 정의하려고합니다. 나는 이미 커서를 창 중앙에 고정시키고 보이지 않게 돌릴 수 있었지만, 마우스를 움직이면 화면 (카메라)이 움직이는 것처럼 "진동"하는 것처럼 보였다. X11 함수로 많은 조작을 한 후에 커서를 윈도우의 중앙으로 되돌리기 위해 사용하는 XWarpPointer() 함수가 "마우스 이동"이벤트를 이벤트 대기열에 추가한다는 것을 알았습니다.X11 : 대기열에서 이벤트 제거

X11 질문 : 이벤트주기에 의해 캡처되기 전에 이벤트를 이벤트 큐에서 식별하고 제거하려면 어떻게합니까?

질문 : 누구에게도 비슷한 문제가 있었고 다른 방식으로 해결 되었습니까? 그렇다면 무엇을 했습니까?

내가 명확하지 않으면 죄송합니다. X11에 대한 광범위한 지식이 없지만이를 엔진에 추가해야하므로 게임에 추가 할 수 있습니다.

답변

0

XtAppMainLoop을 사용하여 이벤트를 처리하고있는 것 같습니다.

실제로 이것은 XtAppNextEvent에 이어 XtDispatchEvent가 호출됩니다.

XtAppMainLoop을 XtAppNextEvent를 호출하는 루프로 바꾸면 다음 이벤트를 가져오고 해당 유형 (XEvent 구조체의 유형 필드)을 확인하십시오.

이벤트 호출 XtDispatchEvent를 처리하려면 무시하십시오.

XtAppGetExitFlag가 true를 반환하거나 루프백 플래그를 추가 할 때 루프를 종료해야합니다.

+0

내가 설명하는 기능이 Xtoolkit에 포함되어 있다고 잘못 생각하지 않는다면. 그러나 게임 엔진은 순수 Xlib을 사용합니다. 다음은 내가 작성한 코드가있는 게시물에 대한 링크입니다. http://www.gameplay3d.org/forums/viewtopic.php?f=3&t=241&sid=fa488aa562f03ebd2f940b49d4128e58 8 번째 게시물로 이동해야합니다. 코드가있는 곳. – Aluthren

+0

게임 라이브러리를 사용하고 있다는 사실을 몰랐습니다. 코드를 살펴보면 Game :: mouseEvent를 무시하고 true를 반환합니까? – parkydr

+0

내 프로젝트 소스 코드에서 함수를 재정의하지만 명시 적으로 true를 반환하지는 않습니다. 왜 물어 보니? – Aluthren