C++

[강의] 1월 23일 수업정리

k-codestudy 2025. 1. 23. 17:05

다이렉트 3D와 연관된 암기사항에 대한 수업을 들었다.

이 암기사항은 무조건 외우도록 하자 

 

1. 더블 버퍼링

더블 버퍼링은 컴퓨터 그래픽 및 사용자 인터페이스 디자인에서 화면 깜박임을 방지하고 시각적 성능을 개선하는 기술입니다

 

버퍼 구조

  • 전면 버퍼: 현재 화면에 표시되는 이미지 또는 프레임을 저장.
  • 후면 버퍼: 다음에 표시할 이미지를 업데이트 중인 버퍼.

작동 원리

  • 후면 버퍼에서 이미지가 렌더링
  • 렌더링이 완료되면 전면 버퍼와 후면 버퍼를 교체
  • 새 전면 버퍼의 이미지가 화면에 표시
  • 이전 전면 버퍼는 다음 렌더링 주기의 후면 버퍼가 된다

장점

  • 성능 향상: 화면 업데이트 시간을 단축하여 GUI 성능 개선
  • 깜박임 감소: 화면 깜박임을 최소화
  • 부드러운 애니메이션: 화면 업데이트가 매끄럽게 이루어짐

단점

  • 복잡성 증가: 구현 코드가 복잡해질 수 있음
  • 메모리 사용 증가: 두 개의 버퍼를 유지하기 위해 더 많은 메모리가 필요
  • 동기화 요구: 드로잉 버퍼와 디스플레이 버퍼 간의 동기화 필요

 

2. 스왑 체인 (Swap Chain)

스왑 체인은 더블 버퍼링을 확장한 개념으로, 여러 프레임 버퍼가 순차적으로 연결된 구조입니다

 

프리젠테이션 (Presentation)

  • 후면 버퍼의 내용을 전면 버퍼로 전환하여 화면에 표시하는 과정
  • 전면 버퍼는 디스플레이(모니터)와 직접 연결되며, 프리젠테이션은 화면 출력으로 이어짐

프리젠테이션 방식

  1. 플리핑(Flipping)
    - 후면 버퍼와 전면 버퍼의 포인터를 교체하는 방식.
    - 데이터 복사가 필요 없어 속도가 빠름.
  2. 블리팅(Blitting)
    - 후면 버퍼 내용을 전면 버퍼에 복사.
    - 플리핑보다 느리지만 더블 버퍼링에서 사용.

 

3. 3D 렌더링 파이프라인

3D 렌더링 파이프라인은 가상 세계의 점들을 화면에 표시하기 위한 과정을 다룬다

 

기본 개념

  1. 버텍스(Vertex) : 3D 공간의 점 (X, Y, Z 좌표로 표현)
  2. 폴리곤(Polygon) :면을 이루는 최소 단위, 일반적으로 삼각형이 많이 사용되지만, 일부 프로그램에서는 사각형 등도 지원
  3. 메쉬(Mesh) : 여러 폴리곤이 모여 그물 형태로 구성된 물체

랜더링 파이프라인 과정 

  1. 로컬 스페이스
  2. 월드 스페이스
  3. 뷰 스페이스
  4. 백 스페이스 컬링
  5. 조명
  6. 클리핑
  7. 투영
  8. 뷰 포트
  9. 래스터 라이즈

 

로컬 스페이스

  • 개체 자체의 기준점(원점)을 기반으로 구성

월드 스페이스

  • 로컬 스페이스를 월드 기준으로 이동(예: 원점에서 +10)

뷰 스페이스

  • 카메라 관점으로 변환
  • 실제로는 카메라가 움직이는 것이 아니라, 월드의 모든 물체가 역방향으로 이동하여 카메라에 맞춰지는 방식으로 연산

'C++' 카테고리의 다른 글

[강의] 1월 31일 수업정리  (0) 2025.01.31
[강의] 1월 24일 수업정리  (0) 2025.01.24
[강의] 1월 22일 수업정리  (0) 2025.01.22
[강의] 1월 21일 수업정리  (0) 2025.01.21
[강의] 1월 20일 수업정리  (1) 2025.01.20