[공부]/컴퓨터 그래픽스

[컴퓨터 그래픽스] 화면 해상도, fps, 더블 버퍼링

개발꿈냥무 2024. 3. 3. 20:45

픽셀 하나(one pixel) = 3개의 sub-pixel들 → RGB 컬러 모델

 

화면 해상도 (screen resolution) : 이미지의 정밀도를 나타내는 지표

(이미지를 몇 개의 픽셀 or 도트로 나타냈는지를 의미)

  • 스마트폰 해상도 VGA (640 x 480 픽셀, 4:3 비율)
  • PC 해상도 XGA (1024 x 768 픽셀, 4:3 비율)
  • TV 해상도 FHD (1920 x 1080 픽셀, 1080p/1080i)

cf) PC는 resolution이, TV는 format이 중요

 

 

  • p : progressive scan
    • 480p, 720p, 1080p
    • 위에서 아래 방향으로 모든 줄을 차례로 모두 그림
  • i : interlaced scan
    • 1080i
    • 홀수선만 → 짝수선만 그리며 반복

 


애니메이션 (animation) : 이미지 여러 장을 빠르게 움직여서 움직이는 듯한 착각을 만든 것

 

fps = frames per second

  • 12 fps : 표준 웹 애니메이션
  • 15, 16 fps : 표준 TV 애니메이션
  • 24 fps : 고품질 TV 또는 저품질 영화 애니메이션
  • 30 fps : 고품질 영화 애니메이션
  • 60 fps : 일반적인 LCD 디스플레이, 고품질 컴퓨터 게임 애니메이션

 

 

애니메이션 루프 (animation loop)

: 무한 루프 ( user input → update positions → visual effect → user input → ... )

 

 


프레임버퍼의 부분 업데이트 problem

: 프레임버퍼는 화면과 1:1로 대응하는데, 화면이 굉장히 빠른 속도로 업데이트될 때 문제가 발생할 수 있음

즉, 프레임버퍼는 일부만 업데이트되어있는 상황에서, 디스플레이 프로세서가 그냥 출력하는 상황에서 문제 발생

 

 

더블 버퍼링 (Double Buffering)

: 2 개의 프레임버퍼 사용

(in OpenGL)

- OpenGL은 back buffer에 draw

- 화면은 front buffer에 display

→ 그래픽카드가 순간적으로 두 버퍼를 바꿈 : OpenGL이 새로운 백버퍼에 그림 그리고, 바뀐 그림은 화면에 출력됨

→ 화면에는 프론트 버퍼만 나오니까 미완성된 이미지가 출력되지 않음

 

 

더블 버퍼링 하드웨어 구현

: 핑퐁 버퍼링 (ping-pong buffering)

  • 장점 : 끊어짐 없는 애니메이션
  • 단점 : HW 비용 증가

 

 

프레임버퍼를 배경색으로 지우는 작업이 시간이 많이 걸린다... 해결책은??

트리플 버퍼링 (Triple Buffering)

: back buffer가 두 개! → 하나는 clear용으로, 하나는 render용으로 쓰임 → 더 빠름

 

 

cf) 최신 HW에는 얼마나 많은 버퍼&메모리가 필요할까?

- stereoscopic, triple buffering을 기본으로 적용

- 프레임버퍼 + 깊이버퍼(depth buffer) + 스텐실버퍼(stencil buffer) + ...

- 텍스처버퍼(texture buffer)는 별도