OpenGL - Day 1 #2 Callback Function

원종운·2020년 9월 8일
0

이벤트처리와 콜백함수

  • 기본적으로 다음과 같이 이벤트와 콜백함수가 처리되어집니다.

콜백함수

렌더링 콜백 등록함수

  • 디스플레이가 렌더링 될때 작동하는 콜백함수를 등록하여줍니다.
void glutDisplayFunc(void (*func)(void));

마우스 콜백 등록함수

  • 마우스 입력이 들어왔을 때 작동하는 콜백함수를 등록하여줍니다.
  • 콜백 함수의 button 인자의 경우는 마우스 왼쪽 버튼을 눌렀을 경우 GLUT_LEFT_BUTTON, 오른쪽 버튼을 눌렀을 경우 GLUT_RIGHT_BUTTON, 가운데 버튼(휠)을 눌렀을 경우 GLUT_MIDDLE_BUTTON 상수가 할당되어집니다.
  • state 인자의 경우는 버튼을 눌렀을 때 GLUT_DOWN, 땠을 때 GLUT_UP 상수가 할당되어집니다.
  • 콜백 함수의 나머지 인자의 경우는 마우스 위치가 할당되어집니다.
void glutMouseFunc(void (*func)(int button, int state, int x, int y));

키보드 콜백함수

  • 키보드 입력이 들어왔을 때 작동하는 콜백함수를 등록하여줍니다.
  • 콜백 함수의 key 인자의 경우는 입력한 문자 키가 할당되어지며, 특수 키는 입력받지 않습니다.
  • 콜백 함수의 나머지 인자의 경우는 키보드 입력이 발생했을 때 마우스 위치가 할당되어집니다.
void glutKeyboardFunc(void (*func)(unsigned char key, int x, int y));

윈도우 크기 변경 콜백함수

  • 처음 윈도우를 열 때, 윈도우의 위치를 옮길 때, 윈도우의 크기를 조절할 때 작동하는 콜백함수 등록하여줍니다.
  • 일반적으로 해당 콜백 함수 내에서 뷰포트, Projection 행렬을 지정합니다.
    • Projection 행렬 지정 : 어떻게 보여지게 할 것인가를 지정하며, 윈도우 크기변화에 비례하여 지정하면 왜곡을 방지할 수 있습니다.
      • glOrtho() : 원근감 없이 보는 방법
      • glPerspective() : 원근감 있게 보는 방법
  • 콜백 함수의 width 인자와 height 인자는 윈도우 크기가 변경되었을 때의 윈도우 너비와 높이가 할당되어집니다.
void glutReshapeFunc(void (*func)(int width, int height));

휴식 콜백함수

  • 아무런 입력이 없을때 작동하는 콜백함수를 등록하여 줍니다.
void glutIdleFunc(void (*func)(void));
profile
Java, Python, JavaScript Lover

0개의 댓글