SlideShare uma empresa Scribd logo
1 de 8
장치 문맥을 이용한
Direct2D
김희규
http://blog.naver.com/khk6435
시스템 사양
사양

최소

클라이언트
Windows 8
Platform Update for Windows 7 SP1

서버
Windows Server 2012
Platform Update for Windows
Server 2008 R2

Windows 7 SP1, Windows Server 2008 R2에선
Platform Update를 설치하셔야 됩니다.
머임 그게
기존의 Vista, 7에서의 Direct2D는

ID2D1****RenderTarget 사용
렌더 타겟이 리소스 생성과 렌더링을 동시에 수행

이제는
ID2D1DeviceContext를 사용한다!
이제는 #include <d2d1_1.h> (없다고 뭐라 말기)
장치 문맥의 장점
1. Windows Store 앱 개발 가능
2. 렌더 타겟을 지정 가능(윈도우에 그렸다가, 서피스에 그렸다가…)
3. 장치 문맥을 여러 개 생성 가능(멀티 스레딩에 효과적)
4. Direct3D와 같이 사용하기 편해짐
5. ID2D1RenderTarget의 기능 상속(도형, 문자열 렌더링도 지원함!)
6. 새로운 Direct2D 기능들 사용 가능(프린터 제어, 색상 문맥, 효과)
생성 방법
1.

D2D1CreateDevice() 함수로 ID2D1Device 객체 생성

2.

ID2D1Device::CreateDeviceContext() 메서드로 ID2D1DeviceContext 객체 생성
위 2과정을 D2D1CreateDeviceContext() 함수로 한번에 가능

3.

ID2D1DeviceContext::SetTarget(ID2D1Image*) 메서드로 렌더 타겟 지정
렌더 타겟의 종류
ID2D1Image 인터페이스를 상속하는 인터페이스들
1.
2.

비트맵(ID2D1Bitmap, ID2D1Bitmap1)

생성 단계에서 D2D1_BITMAP_OPTIONS_TARGET 옵션이 지정되어야 함.

명령 리스트(ID2D1CommandList*)

그러나, 다른 장치 문맥에서 SetTarget() 메서드로 지정된 후
그 문맥에서 EndDraw() 메서드로 렌더링이
끝나지 않았을 경우 타겟으로 지정할 수 없다.

Ex) 잘못된 예
Ctx1->Set(A)
Ctx1->Set(null)
Ctx2->Set(A)
Ctx1->EndDraw()
렌더 타겟용 비트맵 만들어보기
ID2D1DeviceContext::CreateBitmap()
ID2D1DeviceContext::CreateBitmapFromDxgiSurface() DXGI Surface로부터
ID2D1DeviceContext::CreateBitmapFromWicBitmap() WIC Bitmap으로부터

D2D1_BITMAP_PROPERTIES1 구조체를 인자로 필요
bitmapOptions 필드에 D2D1_BITMAP_OPTIONS_TARGET을 OR(‘|’)로 묶어서 저장
D2D1::BitmapProperties1() 함수를 활용!
DXGI Surface의 경우 Usage에 DXGI_USAGE_RENDER_TARGET_OUTPUT값을 지녀야 함.
또한 만드는 Direct3D 장치가 D3D11_CREATE_DEVICE_RGBA_SUPPORT 옵션을 지니고 있어야 하며,
기능 수준 9.1(D3D_FEATURE_LEVEL_9_1) 이상 이여야 함.
끝
예제 따위…(퍽)
내용 얼마 안돼요… 흑흑 봐줘요
PPT로 만드니까 편하네요
출처: MSDN - Windows Desktop Dev Center – Direct2D

http://msdn.microsoft.com/en-us/library/windows/desktop/dd370990(v=vs.85).aspx

Mais conteúdo relacionado

Destaque

웹브라우저는 어떻게 동작하나?
웹브라우저는 어떻게 동작하나?웹브라우저는 어떻게 동작하나?
웹브라우저는 어떻게 동작하나?
Joone Hur
 
[0108 조진현]출발 소프트웨어 렌더러
[0108 조진현]출발 소프트웨어 렌더러[0108 조진현]출발 소프트웨어 렌더러
[0108 조진현]출발 소프트웨어 렌더러
진현 조
 

Destaque (7)

웹표준(XHTML+CSS)
웹표준(XHTML+CSS)웹표준(XHTML+CSS)
웹표준(XHTML+CSS)
 
Atom package part1
Atom package part1Atom package part1
Atom package part1
 
웹브라우저는 어떻게 동작하나?
웹브라우저는 어떻게 동작하나?웹브라우저는 어떻게 동작하나?
웹브라우저는 어떻게 동작하나?
 
[0108 조진현]출발 소프트웨어 렌더러
[0108 조진현]출발 소프트웨어 렌더러[0108 조진현]출발 소프트웨어 렌더러
[0108 조진현]출발 소프트웨어 렌더러
 
Mobile App, Mobile Web : Introduction
Mobile App, Mobile Web : IntroductionMobile App, Mobile Web : Introduction
Mobile App, Mobile Web : Introduction
 
(C#,멀티쓰레드강좌)쓰레드, STA, MTA개요, 간단한 멀티쓰레드 예제_닷넷,C#,WPF,자마린실무강좌
(C#,멀티쓰레드강좌)쓰레드, STA, MTA개요, 간단한 멀티쓰레드 예제_닷넷,C#,WPF,자마린실무강좌(C#,멀티쓰레드강좌)쓰레드, STA, MTA개요, 간단한 멀티쓰레드 예제_닷넷,C#,WPF,자마린실무강좌
(C#,멀티쓰레드강좌)쓰레드, STA, MTA개요, 간단한 멀티쓰레드 예제_닷넷,C#,WPF,자마린실무강좌
 
CSS 실무테크닉
CSS 실무테크닉CSS 실무테크닉
CSS 실무테크닉
 

Semelhante a 장치 문맥을 이용한Direct2D

[Td 2015]라즈베리파이에 windows 10 io t core 맛있게 발라 먹기(유정현)
[Td 2015]라즈베리파이에 windows 10 io t core 맛있게 발라 먹기(유정현)[Td 2015]라즈베리파이에 windows 10 io t core 맛있게 발라 먹기(유정현)
[Td 2015]라즈베리파이에 windows 10 io t core 맛있게 발라 먹기(유정현)
Sang Don Kim
 
모바일환경에서의 크로스 플랫폼_3D_렌더링엔진_제작과정
모바일환경에서의 크로스 플랫폼_3D_렌더링엔진_제작과정모바일환경에서의 크로스 플랫폼_3D_렌더링엔진_제작과정
모바일환경에서의 크로스 플랫폼_3D_렌더링엔진_제작과정
funmeate
 
[NDC2014] 친구들아 도와줘 - 다양한 툴을 이용해서 Cocos2d-x 생산성 높이기 (함동기)
[NDC2014] 친구들아 도와줘 - 다양한 툴을 이용해서 Cocos2d-x 생산성 높이기 (함동기)[NDC2014] 친구들아 도와줘 - 다양한 툴을 이용해서 Cocos2d-x 생산성 높이기 (함동기)
[NDC2014] 친구들아 도와줘 - 다양한 툴을 이용해서 Cocos2d-x 생산성 높이기 (함동기)
Donggi Hahm
 
아마존 게임엔진:Lumberyard :: Patel Pratik :: Gaming on AWS 2016
아마존 게임엔진:Lumberyard :: Patel Pratik :: Gaming on AWS 2016아마존 게임엔진:Lumberyard :: Patel Pratik :: Gaming on AWS 2016
아마존 게임엔진:Lumberyard :: Patel Pratik :: Gaming on AWS 2016
Amazon Web Services Korea
 
[0326 박민근] udk 소개 입문
[0326 박민근] udk 소개 입문[0326 박민근] udk 소개 입문
[0326 박민근] udk 소개 입문
MinGeun Park
 
Tools in android sdk
Tools in android sdkTools in android sdk
Tools in android sdk
Minchul Jung
 

Semelhante a 장치 문맥을 이용한Direct2D (20)

[Td 2015]라즈베리파이에 windows 10 io t core 맛있게 발라 먹기(유정현)
[Td 2015]라즈베리파이에 windows 10 io t core 맛있게 발라 먹기(유정현)[Td 2015]라즈베리파이에 windows 10 io t core 맛있게 발라 먹기(유정현)
[Td 2015]라즈베리파이에 windows 10 io t core 맛있게 발라 먹기(유정현)
 
[Step UP! 마이그레이션] RAD 업그레이드 마이그레이션_계획과 검토
[Step UP! 마이그레이션] RAD 업그레이드 마이그레이션_계획과 검토[Step UP! 마이그레이션] RAD 업그레이드 마이그레이션_계획과 검토
[Step UP! 마이그레이션] RAD 업그레이드 마이그레이션_계획과 검토
 
Porting direct x 11 desktop game to uwp app
Porting direct x 11 desktop game to uwp appPorting direct x 11 desktop game to uwp app
Porting direct x 11 desktop game to uwp app
 
온라인세미나: 처음 만나는 RAD Studio XE8
온라인세미나: 처음 만나는 RAD Studio XE8온라인세미나: 처음 만나는 RAD Studio XE8
온라인세미나: 처음 만나는 RAD Studio XE8
 
Gamebryo LightSpeed (Korean)
Gamebryo LightSpeed (Korean)Gamebryo LightSpeed (Korean)
Gamebryo LightSpeed (Korean)
 
RAD Studio 10.2 도쿄
RAD Studio 10.2 도쿄RAD Studio 10.2 도쿄
RAD Studio 10.2 도쿄
 
델파이 소스코드의재발견
델파이 소스코드의재발견델파이 소스코드의재발견
델파이 소스코드의재발견
 
모바일환경에서의 크로스 플랫폼_3D_렌더링엔진_제작과정
모바일환경에서의 크로스 플랫폼_3D_렌더링엔진_제작과정모바일환경에서의 크로스 플랫폼_3D_렌더링엔진_제작과정
모바일환경에서의 크로스 플랫폼_3D_렌더링엔진_제작과정
 
RAD스튜디오 100% 활용하기
RAD스튜디오 100% 활용하기 RAD스튜디오 100% 활용하기
RAD스튜디오 100% 활용하기
 
RAD Studio XE7 Direct LIVE! in 광주
RAD Studio XE7 Direct LIVE! in 광주RAD Studio XE7 Direct LIVE! in 광주
RAD Studio XE7 Direct LIVE! in 광주
 
동국대 앱창작터 1일차:Cocos2d-X 소개, 환경설정, 주요개념
동국대 앱창작터 1일차:Cocos2d-X 소개, 환경설정, 주요개념동국대 앱창작터 1일차:Cocos2d-X 소개, 환경설정, 주요개념
동국대 앱창작터 1일차:Cocos2d-X 소개, 환경설정, 주요개념
 
Html5+js with game engine cocos2d-html5 분석 @KGC2012
Html5+js with game engine   cocos2d-html5 분석 @KGC2012Html5+js with game engine   cocos2d-html5 분석 @KGC2012
Html5+js with game engine cocos2d-html5 분석 @KGC2012
 
Cocos2d x v3.0 무엇이 달라졌나? (20140426)
Cocos2d x v3.0 무엇이 달라졌나? (20140426)Cocos2d x v3.0 무엇이 달라졌나? (20140426)
Cocos2d x v3.0 무엇이 달라졌나? (20140426)
 
Introduction to DirectX 12 Programming , Ver 1.5
Introduction to DirectX 12 Programming , Ver 1.5Introduction to DirectX 12 Programming , Ver 1.5
Introduction to DirectX 12 Programming , Ver 1.5
 
[NDC2014] 친구들아 도와줘 - 다양한 툴을 이용해서 Cocos2d-x 생산성 높이기 (함동기)
[NDC2014] 친구들아 도와줘 - 다양한 툴을 이용해서 Cocos2d-x 생산성 높이기 (함동기)[NDC2014] 친구들아 도와줘 - 다양한 툴을 이용해서 Cocos2d-x 생산성 높이기 (함동기)
[NDC2014] 친구들아 도와줘 - 다양한 툴을 이용해서 Cocos2d-x 생산성 높이기 (함동기)
 
아마존 게임엔진:Lumberyard :: Patel Pratik :: Gaming on AWS 2016
아마존 게임엔진:Lumberyard :: Patel Pratik :: Gaming on AWS 2016아마존 게임엔진:Lumberyard :: Patel Pratik :: Gaming on AWS 2016
아마존 게임엔진:Lumberyard :: Patel Pratik :: Gaming on AWS 2016
 
[0326 박민근] udk 소개 입문
[0326 박민근] udk 소개 입문[0326 박민근] udk 소개 입문
[0326 박민근] udk 소개 입문
 
Tools in android sdk
Tools in android sdkTools in android sdk
Tools in android sdk
 
RAD스튜디오 100% 활용하기 - 최신 기술 적용과 확장
RAD스튜디오 100% 활용하기 - 최신 기술 적용과 확장RAD스튜디오 100% 활용하기 - 최신 기술 적용과 확장
RAD스튜디오 100% 활용하기 - 최신 기술 적용과 확장
 
20140514 team blender_v01 (Korean)
20140514 team blender_v01 (Korean)20140514 team blender_v01 (Korean)
20140514 team blender_v01 (Korean)
 

장치 문맥을 이용한Direct2D

  • 2. 시스템 사양 사양 최소 클라이언트 Windows 8 Platform Update for Windows 7 SP1 서버 Windows Server 2012 Platform Update for Windows Server 2008 R2 Windows 7 SP1, Windows Server 2008 R2에선 Platform Update를 설치하셔야 됩니다.
  • 3. 머임 그게 기존의 Vista, 7에서의 Direct2D는 ID2D1****RenderTarget 사용 렌더 타겟이 리소스 생성과 렌더링을 동시에 수행 이제는 ID2D1DeviceContext를 사용한다! 이제는 #include <d2d1_1.h> (없다고 뭐라 말기)
  • 4. 장치 문맥의 장점 1. Windows Store 앱 개발 가능 2. 렌더 타겟을 지정 가능(윈도우에 그렸다가, 서피스에 그렸다가…) 3. 장치 문맥을 여러 개 생성 가능(멀티 스레딩에 효과적) 4. Direct3D와 같이 사용하기 편해짐 5. ID2D1RenderTarget의 기능 상속(도형, 문자열 렌더링도 지원함!) 6. 새로운 Direct2D 기능들 사용 가능(프린터 제어, 색상 문맥, 효과)
  • 5. 생성 방법 1. D2D1CreateDevice() 함수로 ID2D1Device 객체 생성 2. ID2D1Device::CreateDeviceContext() 메서드로 ID2D1DeviceContext 객체 생성 위 2과정을 D2D1CreateDeviceContext() 함수로 한번에 가능 3. ID2D1DeviceContext::SetTarget(ID2D1Image*) 메서드로 렌더 타겟 지정
  • 6. 렌더 타겟의 종류 ID2D1Image 인터페이스를 상속하는 인터페이스들 1. 2. 비트맵(ID2D1Bitmap, ID2D1Bitmap1) 생성 단계에서 D2D1_BITMAP_OPTIONS_TARGET 옵션이 지정되어야 함. 명령 리스트(ID2D1CommandList*) 그러나, 다른 장치 문맥에서 SetTarget() 메서드로 지정된 후 그 문맥에서 EndDraw() 메서드로 렌더링이 끝나지 않았을 경우 타겟으로 지정할 수 없다. Ex) 잘못된 예 Ctx1->Set(A) Ctx1->Set(null) Ctx2->Set(A) Ctx1->EndDraw()
  • 7. 렌더 타겟용 비트맵 만들어보기 ID2D1DeviceContext::CreateBitmap() ID2D1DeviceContext::CreateBitmapFromDxgiSurface() DXGI Surface로부터 ID2D1DeviceContext::CreateBitmapFromWicBitmap() WIC Bitmap으로부터 D2D1_BITMAP_PROPERTIES1 구조체를 인자로 필요 bitmapOptions 필드에 D2D1_BITMAP_OPTIONS_TARGET을 OR(‘|’)로 묶어서 저장 D2D1::BitmapProperties1() 함수를 활용! DXGI Surface의 경우 Usage에 DXGI_USAGE_RENDER_TARGET_OUTPUT값을 지녀야 함. 또한 만드는 Direct3D 장치가 D3D11_CREATE_DEVICE_RGBA_SUPPORT 옵션을 지니고 있어야 하며, 기능 수준 9.1(D3D_FEATURE_LEVEL_9_1) 이상 이여야 함.
  • 8. 끝 예제 따위…(퍽) 내용 얼마 안돼요… 흑흑 봐줘요 PPT로 만드니까 편하네요 출처: MSDN - Windows Desktop Dev Center – Direct2D http://msdn.microsoft.com/en-us/library/windows/desktop/dd370990(v=vs.85).aspx