Mouse Event
GLUT 에서는 Mouse 의 Button 을 눌러 Event 를 Handling 하는 것을 제공하고 있다. Mouse event 에 대한 callback 함수는
void glutMouseFunc( void (*func)(int button, int state, int x, int y) ); |
로 표현하는데, 변수 button 은 mouse 의 왼쪽, 중간, 오른쪽 button 을 선택하고, state 는 누름과 해지, x, y 는 Window 위의 pixel 위치를 확인한다. 위 함수는 단독으로 사용하는것은 별로 많지 않지만, 다음에 배울 mouse motion 과 Popup Menu 의 기능을 함께 할 때 연계되어 많이 사용된다.
이전 animation 프로그램에서 몇 가지를 새로 수정해보자.
전역변수:
GLboolean rot_status = FALSE; |
main() 함수:
. . // handling input events
// idle function registration for animation . |
main() 함수에서 새로 glutMouseFunc() callback 함수를 첨가하고, glutIdleFunc() callback 함수를 주석 처리 하였다.
다음의 glutMouseFunc() callback 함수에 필요한 mouse() 함수를 다음과 같이 작성해 program 에 첨가해 보자.
void mouse( int button, int state, int x, int y ) |
왼쪽 mouse button 을 누르면, idle callback 함수를 활성화 시키고, 가운데, 또는 오른쪽 mouse button 을 눌렀을 시 비활성화 시키도록 하였다. 따라서 왼쪽과 오른쪽 mouse button 을 눌러 삼각형의 회전을 멈추고, 다시 시작하고 할 수 있다. '<' , '>' key 를 사용하여 회전 속도를 변화시킬수 있다.
Source Code: 01_5 - mouse.zip
'OpenGL 활용 > 1장 - Basic' 카테고리의 다른 글
1장 6절 - Mouse Motion Event (0) | 2013.01.22 |
---|---|
1장 4절 - Animation by Idling (0) | 2013.01.21 |
1장 3절 - Keyboard Event (0) | 2013.01.20 |
1장 2절 - Resize OpenGL Window (0) | 2013.01.20 |
1장 1절 - Create a Simple OpenGL Window (0) | 2013.01.19 |