COM (Component Object Model)
개념 : 마이크로소프트가 언어에 상관없이 쓸 수 있게 DLL 내부 개체 함수(인터페이스)를 노출시키는 방식이다.
D2D1 DLL의 내부구현이 COM개체이므로, 이를 사용하기 위한 ¹준비과정과 ²생성과정이 필요하다.
예)
#include <windows.h>
#include <d2d1.h>
// 코드에서 d2d1.lib 라이브러리를 링크하기
#pragma comment(lib, "d2d1.lib")
// 프로젝트 속성에서 링크하려면 -> 링커 -> 입력 -> 추가 종속성 -> d2d1.lib 추가
// 윈도우 관련 변수,함수
HINSTANCE _hInst;
HWND _hWnd;
// D2D 개체(객체, object) 인터페이스 포인터 변수들...
ID2D1Factory* _pD2DFactory;
ID2D1HwndRenderTarget* _pRenderTarget;
BOOL InitDirect2D()
{
HRESULT hr = S_OK;
// COM 사용 시작
hr = CoInitialize(NULL);
//생성과정
hr = D2D1CreateFactory(D2D1_FACTORY_TYPE_SINGLE_THREADED, &_pD2DFactory);
RECT rc;
GetClientRect(g_hWnd, &rc);
D2D1_SIZE_U size = D2D1::SizeU(rc.right - rc.left,rc.bottom - rc.top);
//생성과정
hr = g_pD2DFactory->CreateHwndRenderTarget(
D2D1::RenderTargetProperties(),
D2D1::HwndRenderTargetProperties(_hWnd, size),
&_pRenderTarget);
}
void UninitDirect2D()
{
if (_pRenderTarget) _pRenderTarget->Release();
if (_pD2DFactory) _pD2DFactory->Release();
// COM 사용 끝
CoUninitialize();
}
'D2D와 게임엔진' 카테고리의 다른 글
엔진공부 3일차 (ResourceManager 만들기) (0) | 2024.08.08 |
---|---|
엔진공부 2일차 ( Static Library 만들기 ... feat. 윈도우 생성오류) (0) | 2024.08.07 |
Direct2D 기본 사용법 3 (이미지 출력) (1) | 2024.08.05 |
Direct2D 기본 사용법 2 (텍스트 출력) (0) | 2024.08.05 |
Direct2D 기본 사용법 1 (기하도형 출력) (0) | 2024.08.05 |