[0602 박민근] Direct2D

12,346
-1

Published on

VS2010 스터디팀 2011.06.02 세미나

Published in: Technology
0 Comments
4 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
12,346
On Slideshare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
41
Comments
0
Likes
4
Embeds 0
No embeds

No notes for slide

[0602 박민근] Direct2D

  1. 1. 차세대 2D 그래픽스 라이브러리Direct2D VS 2010 공식 팀블로그 (http://vsts2010.net) 2011.06.02 박민근
  2. 2. Direct2D란? Windows7을 위한 새로운 2D 그래픽스 API GDI,GDI+를 대체하는 차세대 그래픽스 API
  3. 3. High Performance 하드웨어 가속 지원 (immedate-mode)
  4. 4. High Quality Per-Primitive Antialiasing ClearType Text
  5. 5. GDI vs Direct2D http://zoome.jp/pcuser/diary/14
  6. 6. Direct 2D & Direct3D http://www.youtube.com/watch?v=- 879yxtHLRI
  7. 7. 가능한 것들 2D 도형들 (Line, 도형, Curve등) 비트맵(거의 모든 포맷,JPG,PNG등) 텍스트 (텍스트 변형, 회전)
  8. 8. 기존 API와 상호 운영 가능 GDI, GDI+ Direct3D MFC 호환 (VS 2010 SP1)
  9. 9. Direct2D 아키텍쳐 레이어
  10. 10. Native Code 기반C, C++에서 사용이 기본Windows API Pack for .NET Framework를이용하면 .NET에서도 사용은 가능
  11. 11. 사용 대상 대규모 Native 어플리케이션 개발자 컨트롤 툴킷 및 라이브러리 개발자 Server-Side 2D 그래픽 렌더링이 필요한 개발 자 Direct3D를 사용하면서, 간단하고 고성능의 2D 도형과 텍스트를 이용한 메뉴나 UI, HUD등을 개 발하는 개발자
  12. 12. 요구 사항 Windows SDK에 포함되어 있음 윈도우 7, 윈도우 비스타 SP2 이상 DirectX 10.1 이상
  13. 13. 게임 개발시2D 그래픽 라이브러리의 필요성
  14. 14. 각종 게임 개발툴 컷신 연출툴 마테리얼 개발툴 퀘스트 툴
  15. 15. 그럼 기존에는?
  16. 16. GDI, GDI+ 사용구현이 간단함2D 그래픽이 필요한 툴에서만 사용 가능하다하드웨어 가속이 지원되지 않는다게임에서는 사용 불가능하다 – Direct3D와 연동이 안됨
  17. 17. Direct3D 사용 그래픽 속도가 필요한 경우 배보다 배꼽이 더크다
  18. 18. WPF(Windows PresentationFoundation) 사용 하드웨어 가속 지원 구현이 상당히 편하고, 간단하다 하지만, .NET 전용 게임(C++)에서는 당연히 사용 불가
  19. 19. 그래서… Direct2D는?
  20. 20. 하드웨어 가속 지원AntiAliasing 지원 – 예쁘게 나온다Direct3D와 같이 사용 가능게임내에서도 사용 가능
  21. 21. 사용하기 위한 코드가 간단하다- Direct3D 보다는 간결함- GDI보다는 조금 복잡함기능이 많지 않으며, 간단해서 쉽게 익힐 수 있음
  22. 22. 이미 IE9, Firefox, 크롬에서는 사용중하드웨어 가속 웹 렌더링에서 사용 (HTML5)
  23. 23. 게임 UI 라이브러리로 사용하는 건 무리 요구 사항 Window7 이상 DirectX 10.1 이상
  24. 24. 게임 개발 툴에서 활용 가능성2D 그래픽으로만 이루어진 개발툴이 의외로 많다- 이걸 위해서 Direct3D를 사용하는 건 무리2D 도형을 이용한 개발툴의 기능이 필요하다
  25. 25. 샘플 프로젝트에서 활용 시각화 샘플 프로젝트 알고리즘 시각화 프로젝트 간단한 2D 게임 만들기
  26. 26. Direct2D 시작하기
  27. 27. Illustration of two rectangles on a grid background
  28. 28. 1. 헤더 파일 추가
  29. 29. 2. 관련 객체 변수 선언
  30. 30. 2. Direct2D Factory 생성
  31. 31. 3. 렌더타겟 생성
  32. 32. 4. 컬러 브러쉬 생성
  33. 33. 4. 렌더 타겟 준비
  34. 34. 5. 배경 그리드 렌더링
  35. 35. 6. 사각형 렌더링
  36. 36. 7. 렌더타겟 완료
  37. 37. VS 2010 SP1에는MFC에 다 통합되어 있다!!위 작업들 할 필요 없음!http://msdn.microsoft.com/ko-kr/library/gg482848.aspx
  38. 38. Direct2D의 여러 기능들
  39. 39. Advanced Path Geometries Example Illustration of a river, mountains, and the sun http://msdn.microsoft.com/en- us/library/ee461072(v=VS.85).aspx
  40. 40. Illustration of several simple and path geometries Geometries Example Illustration of several simple and path geometries http://msdn.microsoft.com/en- us/library/ee329938(v=VS.85).aspx
  41. 41. Brush Types Example Illustration of solid color brush, linear gradient brush, radial gradient brush, and bitmap brush http://msdn.microsoft.com/en- us/library/dd799414(v=VS.85).aspx
  42. 42. Clip with Axis Aligned Rectangle Example Illustration of a goldfish and a clipped region of the goldfish http://msdn.microsoft.com/en- us/library/dd756624(v=VS.85).aspx
  43. 43. Clip with a Bitmap Mask ExampleIllustration of a goldfish and a clipped region of the goldfish by using abitmap mask http://msdn.microsoft.com/en- us/library/dd756625(v=VS.85).aspx
  44. 44. Clip with Layers ExampleIllustration of a goldfish and a clipped region of the goldfish by using layers http://msdn.microsoft.com/en- us/library/dd756626(v=VS.85).aspx
  45. 45. Combine Geometries Example Illustration of two geometries and the resulting geometry after various combination operations http://msdn.microsoft.com/en- us/library/dd370923(v=VS.85).aspx
  46. 46. Create Geometry Groups Example Illustration of composite geometry groups with the two fill modes http://msdn.microsoft.com/en- us/library/dd756627(v=VS.85).aspx
  47. 47. Draw Bitmap With Extend Mode Example Illustration of various effects of extend mode http://msdn.microsoft.com/en- us/library/dd940315(v=VS.85).aspx
  48. 48. Layers with Parameters Example Illustrations of three bitmaps and the resulting images after content bounds, opacity masks, or geometric masks are applied to them http://msdn.microsoft.com/en- us/library/ee329942(v=VS.85).aspx
  49. 49. Multiple Transforms ExampleDiagram of a square being rotated and then translated http://msdn.microsoft.com/en- us/library/dd799446(v=VS.85).aspx
  50. 50. Opacity Masks Example http://msdn.microsoft.com/en - us/library/dd372307(v=VS.85) .aspxIllustration of three bitmaps withdifferent opacity masks applied to them
  51. 51. Stroke Style Example http://msdn.microsoft.com/en- us/library/dd317107(v=VS.85).asp xIllustration of line join styles (miter line join, round line join, bevel line join,and miter or bevel line join)
  52. 52. Direct2D & Direct3D 같이 사용하기
  53. 53. Direct3D 10.1 버전 이상부터 Direct2D와 같이 사용이 가능하다 • 2D 화면을 3D 화면의 백그라운드 이미지로 사용하거나 • 2D 화면을 3D 오브젝트의 텍스쳐로 사용하거나 • 2D 텍스트를 3D 화면에 표시하거나 • 2D 오브젝트로 3D 게임의 UI로 사용하거나
  54. 54. DXGI를 통해서 서로 사용이 가능하다• IDXGISurface, ID2D1RenderTarget 을 이용하여 Direct2D 컨텐츠를 Direct3D 서페이스에 Direct2D 컨텐츠를 렌더링할 수 있다.• IDXGISurface에서 CreateShaderBitmap을 사용하 여 ID2D1Bitmap을 생성하여, Direct3D의 씬을 거 기에 Direct2D로 렌더링 할 수 있다.
  55. 55. 자세한 내용은 DX10.1 이상의 아키텍쳐를 이해해고 있어야 하기 때문에, 생략….MSDN에 자세한 설명과, 샘플 코드가 있습니다. Direct2D and Direct3D Interoperability Overview
  56. 56. GDI, GDI+를 대체하는최신의 2D 그래픽스 라이브러리
  57. 57. C++로 만들어야 하는 게임 개발툴에서 유용할 듯- 셰이더 에디터, 마테리얼 에디터, 컷신 연출툴
  58. 58. 2D 프로토 타입 or2D 게임 개발시 유용할 듯
  59. 59. 상용 게임의 UI에 적용하는 것은 무리- 요구 사항 제한
  60. 60. 참고 자료MSDN Direct 2DPDC 2008 - Introducing Direct2DPDC 2008 - Improving Direct2D
  61. 61. Direct2D란? Windows7을 위한 새로운 2D 그래픽스 API GDI,GDI+를 대체하는 차세대 그래픽스 API
  62. 62. High Performance 하드웨어 가속 지원 (immedate-mode)
  63. 63. High Quality Per-Primitive Antialiasing ClearType Text
  64. 64. GDI vs Direct2D http://zoome.jp/pcuser/diary/14
  65. 65. Direct 2D & Direct3D http://www.youtube.com/watch?v=- 879yxtHLRI
  66. 66. 가능한 것들 2D 도형들 (Line, 도형, Curve등) 비트맵 텍스트 (텍스트 변형, 회전)
  67. 67. 기존 API와 상호 운영 가능 GDI, GDI+ Direct3D
  68. 68. Direct2D 아키텍쳐 레이어
  69. 69. Native Code 기반 C, C++에서 사용이 기본 Windows API Pack for .NET Framework를 이용하면 NET에서도 사용은 가능
  70. 70. 사용 대상 대규모 Native 어플리케이션 개발자 컨트롤 툴킷 및 라이브러리 개발자 Server-Side 2D 그래픽 렌더링이 필요한 개발 자 Direct3D를 사용하면서, 간단하고 고성능의 2D 도형과 텍스트를 이용한 메뉴나 UI, HUD등을 개발하는 개발자
  71. 71. 요구 사항 Windows SDK에 포함되어 있음 윈도우 7, 윈도우 비스타 SP2 이상 DirectX 10.1 이상
  72. 72. 게임 개발시2D 그래픽 라이브러리의 필요성
  73. 73. 각종 게임 개발툴 컷신 연출툴 마테리얼 개발툴 퀘스트 툴
  74. 74. 게임 UI, HUD
  75. 75. 그럼 기존에는?
  76. 76. GDI, GDI+ 사용 구현이 간단함 2D 그래픽이 필요한 툴에서만 사용 가능하다 하드웨어 가속이 지원되지 않는다 게임에서는 사용 불가능하다 – Direct3D와 연동이 안됨
  77. 77. Direct3D 사용 그래픽 속도가 필요한 경우 배보다 배꼽이 더크다
  78. 78. WPF(Windows Presentation Foundation)사용 하드웨어 가속 지원 구현이 상당히 편하고, 간단하다 하지만, .NET 전용 게임에서는 당연히 사용 불가
  79. 79. 그래서… Direct2D는?
  80. 80. 하드웨어 가속 지원 AntiAliasing 지원 – 예쁘게 나온 다 Direct3D와 같이 사용 가능 게임내에서도 사용 가능
  81. 81. 사용하기 위한 코드가 간단하다 - Direct3D 보다는 간결함 - GDI보다는 조금 복잡함 기능이 많지 않으며, 간단해서 쉽게 익힐 수 있음
  82. 82. 이미 IE9, Firefox, 크롬에서는 사용중하드웨어 가속 웹 렌더링에서 사용 (HTML5)
  83. 83. 게임 UI 라이브러리로 사용하는 건 무리 요구 사항 Window7 이상 DirectX 10.1 이상
  84. 84. 게임 개발 툴에서 활용 가능성2D 그래픽으로만 이루어진 개발툴이 의외로 많다- 이걸 위해서 Direct3D를 사용하는 건 무리2D 도형을 이용한 툴의 기능이 필요하다
  85. 85. 샘플 프로젝트에서 활용 스터디용 샘플 프로젝트 알고리즘 시각화 프로젝트 간단한 게임 만들기 - 해보리
  86. 86. Direct2D 시작하기
  87. 87. Illustration of two rectangles on a grid background
  88. 88. 1. 헤더 파일 추가
  89. 89. 2. 관련 객체 변수 선언
  90. 90. 2. Direct2D Factory 생성
  91. 91. 3. 렌더타겟 생성
  92. 92. 4. 컬러 브러쉬 생성
  93. 93. 4. 렌더 타겟 준비
  94. 94. 5. 배경 그리드 렌더링
  95. 95. 6. 사각형 렌더링
  96. 96. 7. 렌더타겟 완료
  97. 97. Direct2D의 여러 기능들
  98. 98. Advanced Path Geometries Example Illustration of a river, mountains, and the sun http://msdn.microsoft.com/en- us/library/ee461072(v=VS.85).aspx
  99. 99. Illustration of several simple and path geometries Geometries Example Illustration of several simple and path geometries http://msdn.microsoft.com/en- us/library/ee329938(v=VS.85).aspx
  100. 100. Brush Types Example Illustration of solid color brush, linear gradient brush, radial gradient brush, and bitmap brush http://msdn.microsoft.com/en- us/library/dd799414(v=VS.85).aspx
  101. 101. Clip with Axis Aligned Rectangle Example Illustration of a goldfish and a clipped region of the goldfish http://msdn.microsoft.com/en- us/library/dd756624(v=VS.85).aspx
  102. 102. Clip with a Bitmap Mask ExampleIllustration of a goldfish and a clipped region of the goldfish by using abitmap mask http://msdn.microsoft.com/en- us/library/dd756625(v=VS.85).aspx
  103. 103. Clip with Layers ExampleIllustration of a goldfish and a clipped region of the goldfish by using layers http://msdn.microsoft.com/en- us/library/dd756626(v=VS.85).aspx
  104. 104. Combine Geometries Example Illustration of two geometries and the resulting geometry after various combination operations http://msdn.microsoft.com/en- us/library/dd370923(v=VS.85).aspx
  105. 105. Create Geometry Groups Example Illustration of composite geometry groups with the two fill modes http://msdn.microsoft.com/en- us/library/dd756627(v=VS.85).aspx
  106. 106. Draw Bitmap With Extend Mode Example Illustration of various effects of extend mode http://msdn.microsoft.com/en- us/library/dd940315(v=VS.85).aspx
  107. 107. Layers with Parameters Example Illustrations of three bitmaps and the resulting images after content bounds, opacity masks, or geometric masks are applied to them http://msdn.microsoft.com/en- us/library/ee329942(v=VS.85).aspx
  108. 108. Multiple Transforms ExampleDiagram of a square being rotated and then translated http://msdn.microsoft.com/en- us/library/dd799446(v=VS.85).aspx
  109. 109. Opacity Masks Example http://msdn.microsoft.com/en - us/library/dd372307(v=VS.85) .aspxIllustration of three bitmaps withdifferent opacity masks applied to them
  110. 110. Stroke Style Example http://msdn.microsoft.com/en- us/library/dd317107(v=VS.85).asp xIllustration of line join styles (miter line join, round line join, bevel line join,and miter or bevel line join)
  111. 111. Direct2D & Direct3D 같이 사용하기
  112. 112. Direct3D 10.1 버전 이상부터 Direct2D와 같이 사용이 가능하다 • 2D 화면을 3D 화면의 백그라운드 이미지로 사용하거나 • 2D 화면을 3D 오브젝트의 텍스쳐로 사용하거나 • 2D 텍스트를 3D 화면에 표시하거나 • 2D 오브젝트로 3D 게임의 UI로 사용하거나
  113. 113. DXGI를 통해서 서로 사용이 가능하다• IDXGISurface, ID2D1RenderTarget 을 이용 하여 Direct2D 컨텐츠를 Direct3D 서페이스 에 Direct2D 컨텐츠를 렌더링할 수 있다.• IDXGISurface에서 CreateShaderBitmap을 사용하여 ID2D1Bitmap을 생성하여, Direct3D의 씬을 거기에 Direct2D로 렌더링 할 수 있다.
  114. 114. 자세한 내용은 DX10.1 이상의 아키텍쳐를 이해해고 있어야 하기 때문에, 생략….MSDN에 자세한 설명과, 샘플 코드가 있습니다. Direct2D and Direct3D Interoperability Overview
  115. 115. GDI, GDI+를 대체하는최신의 2D 그래픽스 라이브러리
  116. 116. C++로 만들어야 하는 게임 개발툴에서 유용할 듯- 셰이더 에디터, 마테리얼 에디터, 컷신 연출툴
  117. 117. 2D 프로토 타입 or2D 게임 개발시 유용할 듯
  118. 118. 스터디의 샘플 프로젝트제작시에도 유용할 듯
  119. 119. 상용 게임의 UI에 적용하는 것은 무리- 요구 사항 제한
  120. 120. 참고 자료MSDN Direct 2DPDC 2008 - Introducing Direct2DPDC 2008 - Improving Direct2D
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×