2010년 2월 21일 일요일

ogre3d 창모드일때 마우스 처리에 대해서 조금 적어둔다

OIS 를 non exclusive 모드로 돌리는것은 아래 링크대로 코드 추가
http://www.ogre3d.org/wiki/index.php/Using_OIS#Non-exclusive_input

[code cpp]
    paramList.insert(std::make_pair(std::string("w32_mouse"), std::string("DISCL_FOREGROUND" )));
    paramList.insert(std::make_pair(std::string("w32_mouse"), std::string("DISCL_NONEXCLUSIVE")));
    paramList.insert(std::make_pair(std::string("w32_keyboard"), std::string("DISCL_FOREGROUND")));
    paramList.insert(std::make_pair(std::string("w32_keyboard"), std::string("DISCL_NONEXCLUSIVE")));
[/code]

그리고 기존 MouseMoved 에서 상대좌표로 마우스무브 인젝션 하던것을 절대좌표로 포지션 인젝션. 흠. 애초에 왜 상대좌표 썼는지는 원코드 쓴이에게 물어봐야 겠는데 분위기 보니 오우거 샘플이 원래 저걸 쓴모양인듯.

[code cpp]
OgreFramework::getSingletonPtr()->m_pGUISystem->injectMousePosition(evt.state.X.abs, evt.state.Y.abs);
[/code]

아 그리고 시스템 마우스 커서가 남아있으니 숨기는 코드도 필요. 적당히 ShowCursor 불러주면 끝. 이거 그다기 깔끔한 처리는 아닌데 다른 방법을 찾지 못했다.
[code cpp]
::ShowCursor(FALSE);
[/code]



댓글 없음: