F.R.I.D.A.Y.

Direct2D - D2D1CreateFactory() 본문

DEV/Direct2D

Direct2D - D2D1CreateFactory()

F.R.I.D.A.Y. 2021. 4. 4. 05:22
반응형

 Factory 객체를 생성하는 함수


D2D1CreateFactory

 Direct2D를 이용할 때, 각종 리소스(이미지) 등을 생성할 수 있도록 제공하는 객체가 바로 ID2D1Factory 인터페이스로 만들어진 객체다. 이 객체를 생성할 수 있도록 도와주는 함수가 D2D1CreateFactory 함수다.

 

함수 원형

HRESULT D2D1CreateFactory(
  D2D1_FACTORY_TYPE          factoryType,
  REFIID                     riid,
  const D2D1_FACTORY_OPTIONS *pFactoryOptions,
  void                       **ppIFactory
);

 

D2D1_FACTORY_TYPE

 해당 팩토리 객체를 단일 스레드로 이용할 것인지 멀티 스레드 환경으로 이용할 것인지를 정하는 옵션.

 

REFIID

 ID2D1Factory 인터페이스의 ID를 전달하는 인자.

__uuid(ID2D1Factory)

 처럼 사용할 수 있다.

 

 이 인자가 필요한 이유는 인터페이스를 링커로 연견할 때 GUID[# UUID라고도 불린다.]가 필요한데, 이 값은 extern으로 정의되어 있으며 실제 값은 정적 라이브러리(lib)에서 가져온다. 따라서 링커로 연결할 때 라이브러리 연결이 필요한데 링킹 작업 중에 라이브러리 연결을 피한다.[# Microsoft Visual C++의 언어 확장이라고]

 

D2D1_FACTORY_OPTIONS

ID2D1Factory 객체의 디버깅 수준을 가지고 있다. 아직 알 필요 없는 걸로.

 

void* ppIFactory

 함수의 결과로 나온 Factory 객체를 저장할 포인터 주소다.

 

 

생성 코드

ID2D1Factory *pFactory;

HRESULT hr = D2D1CreateFactory(D2D1_FACTORY_TYPE_SINGLE_THREADED, &pFactory);

// D2D1CreateFactory 성공시 hr에는 S_OK 상수가 들어가 있다.

 소개한 함수 원형과는 달리 첫 인자와 네 번째 인자만 입력해도 된다.[# overload 기능 덕]

 

# index

728x90
반응형

'DEV > Direct2D' 카테고리의 다른 글

Direct2D - DrawRectangle()  (0) 2021.04.05
Direct2D - Resize()  (0) 2021.04.04
Direct2D - Clear()  (0) 2021.04.04
Direct2D - CreateHwndRenderTarget()  (0) 2021.04.04
Direct2D 기본 구조(Factory, RenderTarget)  (0) 2021.04.04
Comments