OpenGL - Day 2 #2 Animation Concept

원종운·2020년 9월 15일
0

애니메이션

  • 애니메이션의 기본 원리는 여러 장의 프레임(사진)을 빠른 속도로 전환하는 기법을 사용
  • 애니메이션등은 최소 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)
profile
Java, Python, JavaScript Lover

0개의 댓글