Callback(콜백) 또는 Callback Function(콜백 함수)는 다른 코드의 인수로서 넘겨주는 실행 가능한 코드를 말한다. Callback을 넘겨받는 코드는 이 Callback을 필요에 따라 즉시 실행할 수도 있고, 아니면 나중에 실행할 수도 있다.
OpenGL과 같은 그래픽 라이브러리에 렌더링 루프는 일반적으로 프레임을 그리는 함수를 Callback 방식으로 처리한다. 이 함수는 프레임마다 호출되어 화면에 그래픽을 렌더링하게 된다. GLUT 또는 GLFW 같은 라이브러리에서 이러한 Callback을 설정할 수 있다.
glutMainLoop()
glfwwindowShoudClose()
등의 함수로 종료 조건을 확인하여 루프를 빠져나온 후, 프로그램이 정상적으로 종료되는 단계를 처리한다.glutIdleFunc()
glutDisplayFunc()
glutReshapeFunc()
glutMotionFunc(), glutPassiveMotionFunc()
glutMouseFunc()
glutKeyboardFunc()
이제 이전 실습: ColorCube의 idle
함수를 다시 보자.
void idle() {
myTime += 0.333f;
Sleep(33);
glutPostRedisplay();
}
idle
함수에서 우린 33ms 만큼 쉬고 glutPostRedisplay
함수를 호출하였다. 그에 따라 glutPostRedisplay
함수는 display
Callback 함수를 호출하였기 때문에 화면이 새로 렌더링 된다.
또한 main
함수에서 idle
함수를 Callback 함수로 등록함으로서 약 30fps로 화면을 새로 렌더링 할 수 있게 하였다.
int main(int argc, char** argv) {
...
glutIdleFunc(idle);
...
}