애니메이션
- 애니메이션의 기본 원리는 여러 장의 프레임(사진)을 빠른 속도로 전환하는 기법을 사용
- 애니메이션등은 최소 20프레임(fps)정도는 되어야합니다.
더블버퍼링
-
이미지의 애니메이션 처리를 하거나 많은 페인팅작업시 흔히 발생하는 화면 깜박임(플리커링) 현상을 최소화하고 보다 자연스럽고 부드러운 화면을 구현하는 기법
-
먼저 메모리상의 그래픽 버퍼를 생성하여 화면에 그릴 내용을 먼저 그 버퍼에 그린후, 버퍼에 모든 페인팅 작업이 끝나게 되면, 그 내용을 한꺼번에 화면에 그려주는 방식을 말합니다.
-
프론트 버퍼와 백 버퍼로 구성되어집니다.
- 렌더링 되어져야할 그래픽을 프론트 버퍼에 써놓은 후, 비디오 컨트롤러는 프론트 버퍼를 렌더링합니다.
- 이 때, 그래픽 프로세스는 백 버퍼에 다음에 렌더링 되어져야할 그래픽을 모두 작업해둡니다.
- 비디오 컨트롤러는 프론트 버퍼를 모두 렌더링하면 미리 준비해둔 백 버퍼로 스위칭하여 렌더링합니다.
glutTimerFunc
- 지정한 시간뒤에 실행되어질 콜백함수를 등록하여줍니다.
- 계속 Interval 마다 반복하여주는 것이 아니라, 지정된 시간에 1회 실행하여 줍니다.
- 위와 같은 특징때문에 Interval 마다 반복하고 싶으면 콜백 함수내에서 재귀 호출하여 주면 됩니다.
- msecs 인자는 등록되어진 타이머 콜백이 실행되어질 시간이며 milisec 단위입니다.
- 두 번째 인자는 콜백 함수입니다.
- 세 번째 인자는 콜백 함수로 전달되어지는 value 정수 값입니다.
void glutTimerFunc(unsigned int msecs, void (*func)(int value), int value)
glutSwapBuffers
- 백 버퍼와 프론트 버퍼를 교체하여 줍니다.
- 버퍼를 교체하는 작업이므로 glFlush()와 같은 작업은 별도로 해주지 않아도 됩니다.
void glutSwapBuffers(void)