[0129 박민근] direct x2d

2,540 views

Published on

초중급 게임개발자 스터디 (데브루키)
2011.01.29 박민근
"Direct2D" 발표 자료

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
2,540
On SlideShare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
9
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

[0129 박민근] direct x2d

  1. 1. DirectX2D<br />초중급 게임 개발자 스터디<br />데브루키<br />(http://cafe.naver.com/devrookie)<br />2011.01.29 <br />박민근 (알콜코더)<br />
  2. 2. Direct2D란?<br />Windows7을 위한 새로운 2D 그래픽스 API<br />GDI,GDI+를 대체하는 차세대 그래픽스 API<br />
  3. 3. High Performance<br />하드웨어 가속 지원 (immedate-mode)<br />
  4. 4. High Quality<br />Per-Primitive Antialiasing<br />ClearType Text<br />
  5. 5. DEMO<br />
  6. 6. GDI vs Direct2D<br />http://zoome.jp/pcuser/diary/14<br />
  7. 7. Direct 2D & Direct3D<br />http://www.youtube.com/watch?v=-879yxtHLRI<br />
  8. 8. 가능한 것들<br />2D 도형들 (Line, 도형, Curve등)<br />비트맵 <br />텍스트 (텍스트 변형, 회전)<br />
  9. 9. 기존 API와 상호 운영 가능<br />GDI, GDI+<br />Direct3D<br />
  10. 10. Direct2D 아키텍쳐레이어<br />
  11. 11. Native Code 기반<br />C, C++에서 사용이 기본<br />Windows API Pack for .NET Framework를 이용하면<br />NET에서도 사용은 가능<br />
  12. 12. 사용 대상<br />
  13. 13. 요구 사항<br />Windows SDK에 포함되어 있음<br />윈도우 7, 윈도우 비스타SP2 이상<br />DirectX 10.1 이상<br />
  14. 14. Why Direct2D?<br />
  15. 15. 게임 개발시<br />2D 그래픽 라이브러리의 <br />필요성<br />
  16. 16. 각종 게임 개발툴<br />컷신연출툴<br />마테리얼개발툴<br />퀘스트 툴<br />
  17. 17. 게임 UI, HUD<br />
  18. 18. 그럼 기존에는?<br />
  19. 19. GDI, GDI+ 사용<br />구현이 간단함<br />2D 그래픽이 필요한 툴에서만 사용 가능하다<br />하드웨어 가속이 지원되지 않는다<br />게임에서는 사용 불가능하다 – Direct3D와 연동이 안됨<br />
  20. 20. Direct3D 사용<br />그래픽 속도가 필요한 경우<br />배보다 배꼽이 더크다<br />
  21. 21. WPF(Windows Presentation Foundation) 사용<br />하드웨어 가속 지원<br />구현이 상당히 편하고, 간단하다<br />하지만, .NET 전용<br />게임에서는 당연히 사용 불가<br />
  22. 22. 그래서… Direct2D는?<br />
  23. 23. 하드웨어 가속 지원<br />AntiAliasing지원 – 예쁘게 나온다<br />Direct3D와 같이 사용 가능 <br />게임내에서도 사용 가능<br />
  24. 24. 사용하기 위한 코드가 간단하다<br /><ul><li>Direct3D 보다는 간결함
  25. 25. GDI보다는 조금 복잡함</li></ul>기능이 많지 않으며, 간단해서 쉽게 익힐 수 있음<br />
  26. 26. 활용 방향<br />
  27. 27. 이미 IE9, Firefox, 크롬에서는 사용중<br />하드웨어 가속 웹 렌더링에서 사용 (HTML5)<br />
  28. 28. 게임 UI 라이브러리로 사용하는 건 무리<br />요구 사항<br />Window7 이상<br />DirectX 10.1 이상<br />
  29. 29. 게임 개발 툴에서 활용 가능성<br />2D 그래픽으로만 이루어진 개발툴이 의외로 많다<br /><ul><li>이걸 위해서 Direct3D를 사용하는 건 무리</li></ul>2D 도형을 이용한 툴의 기능이 필요하다<br />
  30. 30. 샘플 프로젝트에서 활용<br />스터디용 샘플 프로젝트<br />알고리즘 시각화 프로젝트<br />간단한 게임 만들기 - 해보리<br />
  31. 31. Direct2D 시작하기<br />
  32. 32. Illustration of two rectangles on a grid background<br />
  33. 33. 1. 헤더 파일 추가<br />
  34. 34. 2. 관련 객체 변수 선언<br />
  35. 35. 2. Direct2D Factory 생성<br />
  36. 36. 3. 렌더타겟 생성<br />
  37. 37. 4. 컬러 브러쉬 생성<br />
  38. 38. 4. 렌더타겟 준비<br />
  39. 39. 5. 배경 그리드렌더링<br />
  40. 40. 6. 사각형 렌더링<br />
  41. 41. 7. 렌더타겟 완료<br />
  42. 42. Direct2D의 여러 기능들<br />
  43. 43. Advanced Path Geometries Example<br />Illustration of a river, mountains, and the sun<br />http://msdn.microsoft.com/en-us/library/ee461072(v=VS.85).aspx<br />
  44. 44. Illustration of several simple and path geometries<br />Geometries Example<br />Illustration of several simple and path geometries<br />http://msdn.microsoft.com/en-us/library/ee329938(v=VS.85).aspx<br />
  45. 45. Brush Types Example<br />Illustration of solid color brush, linear gradient brush, radial gradient brush, and bitmap brush<br />http://msdn.microsoft.com/en-us/library/dd799414(v=VS.85).aspx<br />
  46. 46. Clip with Axis Aligned Rectangle Example<br />Illustration of a goldfish and a clipped region of the goldfish<br />http://msdn.microsoft.com/en-us/library/dd756624(v=VS.85).aspx<br />
  47. 47. Clip with a Bitmap Mask Example<br />Illustration of a goldfish and a clipped region of the goldfish by using a bitmap mask<br />http://msdn.microsoft.com/en-us/library/dd756625(v=VS.85).aspx<br />
  48. 48. Clip with Layers Example<br />Illustration of a goldfish and a clipped region of the goldfish by using layers<br />http://msdn.microsoft.com/en-us/library/dd756626(v=VS.85).aspx<br />
  49. 49. Combine Geometries Example<br />Illustration of two geometries and the resulting geometry after various combination operations<br />http://msdn.microsoft.com/en-us/library/dd370923(v=VS.85).aspx<br />
  50. 50. Create Geometry Groups Example<br />Illustration of composite geometry groups with the two fill modes<br />http://msdn.microsoft.com/en-us/library/dd756627(v=VS.85).aspx<br />
  51. 51. Draw Bitmap With Extend Mode Example<br />Illustration of various effects of extend mode<br />http://msdn.microsoft.com/en-us/library/dd940315(v=VS.85).aspx<br />
  52. 52. Layers with Parameters Example<br />Illustrations of three bitmaps and the resulting images after content bounds, opacity masks, or geometric masks are applied to them<br />http://msdn.microsoft.com/en-us/library/ee329942(v=VS.85).aspx<br />
  53. 53. Multiple Transforms Example<br />Diagram of a square being rotated and then translated<br />http://msdn.microsoft.com/en-us/library/dd799446(v=VS.85).aspx<br />
  54. 54. Opacity Masks Example<br />http://msdn.microsoft.com/en-us/library/dd372307(v=VS.85).aspx<br />Illustration of three bitmaps with different opacity masks applied to them<br />
  55. 55. Stroke Style Example<br />http://msdn.microsoft.com/en-us/library/dd317107(v=VS.85).aspx<br />Illustration of line join styles (miter line join, round line join, bevel line join, and miter or bevel line join)<br />
  56. 56. Direct2D & Direct3D<br />같이 사용하기<br />
  57. 57.
  58. 58. Direct3D 10.1 버전 이상부터 Direct2D와 같이 사용이 가능하다<br /><ul><li>2D 화면을 3D 화면의 백그라운드 이미지로 사용하거나
  59. 59. 2D 화면을 3D 오브젝트의 텍스쳐로 사용하거나
  60. 60. 2D 텍스트를 3D 화면에 표시하거나
  61. 61. 2D 오브젝트로 3D 게임의 UI로 사용하거나</li></li></ul><li>DXGI를 통해서 서로 사용이 가능하다<br /><ul><li>IDXGISurface, ID2D1RenderTarget을 이용하여 Direct2D 컨텐츠를Direct3D 서페이스에Direct2D 컨텐츠를렌더링할 수 있다.
  62. 62. IDXGISurface에서 CreateShaderBitmap을 사용하여 ID2D1Bitmap을 생성하여, Direct3D의 씬을 거기에 Direct2D로 렌더링 할 수 있다.</li></li></ul><li>자세한 내용은DX10.1 이상의 아키텍쳐를 이해해고 있어야 하기 때문에, 생략….<br />MSDN에 자세한 설명과, 샘플 코드가 있습니다.<br />Direct2D and Direct3D Interoperability Overview<br />
  63. 63. 결론<br />
  64. 64. GDI, GDI+를 대체하는 <br />최신의 2D 그래픽스 라이브러리<br />
  65. 65. C++로 만들어야 하는 게임 개발툴에서 유용할 듯<br />- 셰이더 에디터, 마테리얼 에디터, 컷신연출툴<br />
  66. 66. 2D 프로토 타입 or <br />2D 게임 개발시 유용할 듯<br />
  67. 67. 스터디의 샘플 프로젝트 <br />제작시에도 유용할 듯<br />
  68. 68. 상용 게임의 UI에 적용하는 것은 무리<br />- 요구 사항 제한<br />
  69. 69. 참고 자료<br />MSDN Direct 2D<br />PDC 2008 - Introducing Direct2D<br />PDC 2008 - Improving Direct2D<br />

×