일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 이지스퍼블리싱
- 함수
- VS ERROR
- 지식나눔강좌
- 티스토리
- Windows
- 리뷰
- Visual Studio
- Javascript
- 문법
- 프로그래밍
- tipssoft
- 알고리즘
- 포인터
- Desktop
- 김성엽
- Direct2D
- doit코틀린프로그래밍
- Tips프로그래밍강좌
- 백준
- Win32
- 배열
- Programming
- c#
- CS
- Kotlin
- 연산자
- c++
- Tips강좌
- c
Archives
- Yesterday
- Today
- Total
F.R.I.D.A.Y.
Direct2D - CreateHwndRenderTarget() 본문
반응형
렌더 타겟을 생성하는 함수 CreateHwndRenderTarget
CreateHwndRenderTarget
리소스(이미지 등)을 그릴 때 그리는 공간을 지정하는 RenderTarget을 의 핸들(HWND)를 생성하는 메서드로, Factory 객체로부터 호출이 가능하다.
함수 원형
HRESULT CreateHwndRenderTarget(
const D2D1_RENDER_TARGET_PROPERTIES & renderTargetProperties,
const D2D1_HWND_RENDER_TARGET_PROPERTIES & hwndRenderTargetProperties,
ID2D1HwndRenderTarget **hwndRenderTarget
);
D2D1_RENDER_TARGET_PROPERTIES
픽셀의 색상 형식 및 알파 모드 정보, 렌더링 대상의 렌더링 형식(소프트웨어/하드웨어), 렌더링 대상의 GDI 호환여부, 하드웨어 렌더링에 필요한 Direct3D[# Direct2D는 Direct3D의 기능에서 Z축을 고정으로 만들고 제공하는 API다. 즉, Direct3D의 간소화 버전인 셈] 버전의 지정, DPI 설정을 담고 있는 구조체.
여기에서 사용하는 D2D1::RenderTargetProperties()는 기본값을 반환하는 함수이다.
D2D1_HWND_RENDER_TARGET_PROPERTIES
윈도우 핸들을 포함해 그리기 영역의 크기, 그리기 모드[# 즉시 그릴 것인지 다음 새로고침에서 그릴 것인지 등]를 담고 있는 구조체.
세가지 중에, 윈도우 핸들과 영역의 크기만 넘겨주면 모드는 기본값이 지정되어 있어서 작성 안해도 된다.
ID2D1HwndRenderTarget
함수의 결과로 생성된 HwndRenderTarget을 저장할 포인터를 주소로 넘겨준다.
생성 코드
ID2D1Factory* pFactory;
ID2D1HwndRenderTarget* pRT;
HRESULT hr = D2D1CreateFactory(D2D1_FACTROY_TYPE_SINGLE_THREADED, &pFactory);
// overload + 3
RECT rc;
GetClientRect(hwnd, &rc);
if(SUCCEEDED(hr)){
pFactory->CreateHwndRenderTarget(D2D1::RenderTargetProperties(),
D2D1::HwndRenderTargetProperties(
hwnd,
D2D1::SizeU(rc.right - rc.left, rc.bottom - rc.top)
),
&pRT);
}
ID2D1RenderTarget도 있고 ID2D1HwndRenderTarget도 있어서 헷갈릴 수 있다.[# 이거 못보고 코드 쓰느라 한 10분을 날려먹었다.] 작성할 때 주의하자
해석
코드를 해석해보면 다음과 같다.
- 먼저 팩토리 객체를 생성한다.
- 윈도우의 클라이언트 영역을 받아온다.
- 팩토리 객체가 성공적으로 생성되면 if 구문 내용을 진행한다
if 구문의 해석은 다음과 같다.
- 팩토리 객체의 CreateHwndRenderTarget 메서드를 이용해 pRT를 생성한다.
- 두 번째 인자에 D2D1_HWND_RENDER_TARGET_PROPERTIES 구조체를 반환하는 함수를 작성하고, 그 인자로 윈도우 핸들과 윈도우 클라이언트 영역의 크기를 계산해 넣는다.
- CreateHwndRenderTarget 메서드의 마지막 인자로 생성된 HwndRenderTarget 객체를 담을 포인터를 전달한다.
# index
728x90
반응형
'DEV > Direct2D' 카테고리의 다른 글
Direct2D - DrawRectangle() (0) | 2021.04.05 |
---|---|
Direct2D - Resize() (0) | 2021.04.04 |
Direct2D - Clear() (0) | 2021.04.04 |
Direct2D - D2D1CreateFactory() (0) | 2021.04.04 |
Direct2D 기본 구조(Factory, RenderTarget) (0) | 2021.04.04 |
Comments