WinCNT

Direct2D 본문

Direct2D

  • 비교적 최근에 나온 라이브러리
  • DirectX(3D) 기반
  • 참고) DDraw
    • DX7 시절(스타에 쓰인 기술)
    • 2차원 API
    • 요즘에는 안 쓰인다

DX9가 많이 쓰였다

 

Windows 그래픽 아키텍처 개요

COM API

인터페이스를 극단적으로 분리

다른 기종 간의 통신을 위해 사용

DirectX는 모두 COM으로 되어 있음

 

Factory, Render Target

  1. Factory 생성
  2. Render Target 생성
  3. 그리기

Render Target = GDI의 백 버퍼 같은 거

 

2D Engine Framework

Framework = 틀 = 枠

예) 대표적인 프레임워크는 Update, Render

2D 엔진 프레임워크란 결국 API들을 C++로 래핑(클래스 안에 넣음)한 것

 

e.g.

  • 2개의 하부 구현 추상화
    • GDI의 API로 만든 엔진, D2D의 API로 만든 엔진
      그럼 추상화해서 하나의 엔진으로 만들자!
  • 재사용을 염두에 둔 구조
    • 2D -> 3D를 염두해서 프레임워크 자체를 추상화
  • 알아보기 쉽게?

예제

OnRender는 매 프레임에 불리는 함수

(샘플에서는 매번 생성할 때 만들어져 있는 것처럼 되어 있음_실제 작동은 없을 때만 만든다)

 

Render Target은 백 버퍼 같은 것

beginDraw - endDraw

 

렌더링 파이브라인

화면에 그리기 처리를 하기 위한 파이프라인

 

엔진이 초기화되는 시점은 필요한 것들이 나오고 난 이후

D2D에는 윈도우 핸들이 필요함(여러 개 있을 수 있음)

 

RenderTarget은 하나만 있으면 됨(for문에 있을 필요가 없음)

하지만 깨질 경우을 대비해서 null 체크를 해야함

(작게는 윈도우 사이즈 크기가 바뀌거나 그래픽 카드가 바뀌거나 등등)

 

Initialize랑 CreateDeviceResoureces만 하면 초기화는 끝

Render는 그림을 그리는 것

 

참고 사이트

https://pang2h.tistory.com/344

 

Direct2D 기본 구조(Factory, RenderTarget)

 GDI/GDI+의 후속으로 여겨지는 Direct2D 구조  Direct2D는 아래의 순서로 진행된다. ID2D1Factory를 생성 ID2D1HwndRenderTarget을 생성 브러시 생성 및 RenderTarget에 지정 그리기 리소스 해제(Factory 등)[..

pang2h.tistory.com

 

SSS

'게임 프로그래밍(학습 내용 정리) > 2D Game Programming' 카테고리의 다른 글

Physics  (0) 2022.01.19
Transform  (0) 2022.01.12
Collision Detection  (0) 2022.01.07
2D 게임 프로그래밍의 간략한 역사  (0) 2022.01.05