1장 5절 - Mouse Event

|

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
      glutKeyboardFunc( keyboard );
      glutSpecialFunc( special );
      glutMouseFunc( mouse );

 

      // idle function registration for animation
   // glutIdleFunc( idle );    // 주석처리
   // Timer( 0 ); // glutTimerFunc( 1, Timer, 0 );
            .

            .

 

main() 함수에서 새로 glutMouseFunc() callback 함수를 첨가하고, glutIdleFunc() callback 함수를 주석 처리 하였다.

 

다음의 glutMouseFunc() callback 함수에 필요한 mouse() 함수를 다음과 같이 작성해 program 에 첨가해 보자.

 

void  mouse( int button, int state, int x, int y )
{
      switch (button) {
         case GLUT_LEFT_BUTTON:
                  if (state == GLUT_DOWN) {
                         rot_status = TRUE;
                         glutIdleFunc( idle );

                  }
                  break;
         case GLUT_MIDDLE_BUTTON:
         case GLUT_RIGHT_BUTTON:
                  if (state == GLUT_DOWN) {
                         rot_status = FALSE;
                         glutIdleFunc( NULL );

                  }
                  break;
         default:
                  break;
      }
}

 

쪽 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
And