다이렉트2D

Direct2D

Direct2D[1] Microsoft에 의해 설계되어 Windows [2]10, Windows 8, Windows 7, Windows Server 2008 R2 및 Windows VistaWindows Server 2008(플랫폼 업데이트 설치)[3]에 구현된 2D 벡터 그래픽스 애플리케이션 프로그래밍 인터페이스(API)입니다.

Direct2D는 PC, 태블릿, 스마트폰 및 최신 그래픽 디바이스의 호환 그래픽 카드에 탑재되어 있는 GPU(그래픽 처리 유닛)를 통한 하드웨어 액셀러레이션을 활용합니다.GDI/GDI+ 등의 Win32 그래픽스 API 및 Direct3D [4]등의 최신 그래픽스 API와의 완전한 상호 운용성을 유지하면서 고품질과 고속 렌더링 성능을 제공합니다.

개요

Direct2D는 관리 코드로 호출 있는 C++ 기반의 네이티브 코드 API로 Direct3D와 마찬가지로 최소한의 추상화로 "경량 COM" 접근[5] 방식을 사용합니다.단, WPF와 달리 GDI/GDI+와 마찬가지로 Direct2D는 단순한 BeginDraw/Draw/EndDraw 호출을 가진 "즉시 모드" 렌더링 API입니다.Direct2D는 "씬" 개념이 없으며 유지 트리 구조를 사용하지 않으며 렌더링 상태는 그리기 호출 간에 유지됩니다.

Direct2D는 WDM 1.1 드라이버에 의한 Direct3D 기능 레벨9의 최소한의 지원을 통해 CPU 사용률을 최소화하고 그래픽 카드로 하드웨어 렌더링을 이용할 수 있습니다.애플리케이션에서는 CPU만을 사용하여 사용할 수 있습니다.소프트웨어 렌더링이라고 불리는 것은, GPU의 서포트가 최소한인 디바이스내에서 동작하고 있는 경우, 터미널 서비스의 경우, Windows 세션 0으로 동작하고 있는 경우, 또는 리모트 서버상에서 그래픽 렌더링을 실행하는 경우 등, 하드웨어 기능을 이용할 수 없는 경우입니다.그래피컬 결과를 클라이언트 디바이스로 되돌립니다.Direct2D의 퍼포먼스와 메모리 사용량은 소프트웨어와 하드웨어 모두에서 기본적인 수에 따라 선형적으로 확장됩니다.

Direct2D는[6][7] 다음과 같은 주요 기능을 통해 고품질 렌더링을 지원합니다.

  • 그레이스케일과 ClearType 기술을 모두 지원하는 DirectWrite를 통한 고품질 서브픽셀 텍스트 렌더링
  • 프라이머리 안티에일리어스
  • 베지어 지오메트리 그리기 및 채우기
  • 풍부한 지오메트리 연산(: 부울 연산, 경로 확장, 개요 등)
  • 복합 레이어
  • 기본 혼합 모드(소스 오버, 소스 복사, 최소 혼합 등)
  • 이미지 빌트인 및 커스텀 효과로 사진 조정, 그래픽 및 컬러 변환 가능
  • 그라데이션 브러시 및 메시
  • 명령어 버퍼링 및 인쇄용 명령어리스트
  • 스케일러블 잉크 스트로크
  • 게임 개발용 스프라이트 배치

Direct2D는 GDI, GDI+와의 완전한 상호 운용성을 실현하고 Direct3D 서페이스 및 GDI/GDI+ 디바이스 컨텍스트(HDC)와의 사이에서 렌더링을 가능하게 합니다.이미지 인코딩/디코딩에는 Windows Imaging Component(WIC)와 함께, 텍스트 포맷 및 글꼴 처리에는 DirectWrite와 함께 효과적으로 사용할 수 있습니다.이러한 상호 운용성을 통해 개발자는 소스 코드 전체를 점검할 필요 없이 중요한 코드 경로를 Direct2D 코드로 점진적으로 대체할 수 있습니다.Windows 10 의 기간중에, Microsoft 는 Universal Windows Platform(UWP) 애플리케이션에서의 Direct2D 와 DirectWrite 의 사용을 한층 더 심플화하기 위해서, Win2D 라고 하는 오픈 소스 프로젝트를 개발했습니다.Win2D는 Direct2D 및 DirectWrite의 고효율 WinRT 래퍼입니다.기본 그래픽 서브시스템의 파워를 유지하면서 XAML Canvas 컨트롤과 심리스하게 통합되도록 설계되어 있습니다.

후속 버전

Direct2D 1.1

Direct2D의 업데이트 버전은 2012년 [8]10월에 Windows 8과 함께 시작되었습니다.또한 Windows 7 플랫폼 업데이트를 [9][10][11]통해 Windows 7 SP1(Windows Vista는 아님)으로 역리포트되었습니다.Direct2D의 원래 버전은 DirectX 11(하드웨어에서는 Direct3D 10.1까지 사용됨)에 연결되었지만, 이 버전의 Direct2D는 DirectX 11.[9]1과 통합됩니다.Windows 8 에서는,[12] XAML 와 Direct2D 의 상호 운용성도 추가되어 Direct3D 컴포넌트는 애플리케이션에 혼재할 수 있습니다.

Direct2D 1.2

2013년 [13]10월 Windows 8.1을 사용하는 Direct2D에 지오메트리 구현,[14] Direct2D 효과 API,[15][16][17] 명령 목록 API, 멀티스레딩 API, 디바이스별 렌더링 우선 순위, 메모리 공간을 줄이기 위한 JPEG YCbCr 이미지 지원, 블록 압축 형식(DDS 파일) 지원 등의 새로운 기능이 추가되었습니다.

Direct2D 1.3

2015년 7월에 Windows 10이 출시됨에 따라 Direct2D에 중요한 업데이트 및 신기능이 제공되었습니다.예를 들어 폰트 래스터라이제이션 없이 확장 가능한 텍스트를 렌더링하는 성능 향상, 폰트 설치 단계 없이 클라우드에서 필요한 폰트를 온디맨드 방식으로 다운로드 할 수 있는 기능, 이미지 로딩 속도를 높이기 위한 최적화 및 이미지 손실 등이 있습니다.ect 렌더링 및 그라데이션 패치로 만든 2D 메쉬를 사용하여 그라데이션 브러시를 적용하는 보다 정교한 방법입니다.이 릴리스에서는 디지털 잉크를 지원하기 위한 새로운 API 확장 기능도 도입되었습니다.이 확장 기능은 Microsoft Edge 브라우저와 잉크 캔버스 XAML 컨트롤에서 매우 활용되고 있습니다.

실행

Mark Kilgard와 Jeff Bolz는 경쟁 NV 경로 렌더링 OpenGL 확장에 관한 2012년 논문에서 Direct2D의 내부를 다음과 같이 설명합니다.Direct2D는 CPU의 경로를 변환한 다음 각 경로의 사다리꼴 테슬레이션을 제한적으로 수행합니다.그 결과 픽셀 공간 사다리꼴 집합과 추가 음영 처리된 형상이 사다리꼴의 왼쪽 및 오른쪽 모서리에 대한 부분 적용 범위를 계산합니다.이러한 사다리꼴과 음영 지오메트리는 GPU에 의해 래스터라이즈 됩니다.그 결과, CPU 베이스의 어프로치보다 퍼포먼스가 향상해, 멀티 샘플이나 스텐실 상태의 보조 스토리지를 필요로 하지 않습니다.Direct2D는 적절한 안티에일리어스 결과를 얻을 수 있는 앨리어스 프레임 버퍼에 직접 렌더링됩니다.Direct2D의 주요 단점은 GPU(매우 사소한 래스터라이제이션 실행)가 아니라 CPU가 각 경로의 변환과 사다리꼴 테셀레이션을 수행하고 Direct3D 검증 작업을 [18]수행한다는 것입니다."

2012년 7월 Windows 8 은 Steven Synofsky의 블로그에 다음과 같은 글을 올렸습니다.Windows 8의 지오메트리 렌더링 성능을 향상시키기 위해 테셀레이션과 관련된 CPU 비용을 두 가지 방법으로 절감하는 데 중점을 뒀다.먼저 직사각형, 선, 둥근 직사각형, 타원형 [19]같은 단순한 형상을 렌더링할 때 테셀레이션 구현을 최적화했습니다."이러한 일반적인 사례 최적화는 원시 환경에 따라 184% ~ 438%의 범위에서 성능을 향상시킨다고 주장했습니다.투고는 계속되었습니다.두 번째로, 불규칙한 지오메트리(지도상의 지리적 경계 등)를 렌더링 할 때의 퍼포먼스를 향상시키기 위해서, 「Target Independent Rasterization」(TIR)이라고 불리는 새로운 그래픽 하드웨어 기능을 사용하고 있습니다.TIR를 사용하면 Direct2D는 테셀레이션에 소비하는 CPU 사이클을 줄일 수 있기 때문에 시각적인 품질을 희생하지 않고 GPU에 대해 보다 빠르고 효율적으로 그리기 명령을 내릴 수 있습니다.TIR는 DirectX 11.[19]1을 지원하는 Windows 8용으로 설계된 새로운 GPU 하드웨어에서 사용할 수 있습니다.이어 약 15개의 SVG를 사용한 벤치마크를 통해 151%에서 523%의 성능 향상을 주장했습니다.이 섹션은 다음과 같이 끝맺었습니다.「우리는 그래픽 하드웨어 파트너와 긴밀히 협력해 TIR를 설계했습니다.그 파트너십 덕분에 극적인 개선이 가능해졌다.DirectX 11.1 하드웨어는 이미 현재 시장에 출시되어 있으며, 보다 많은 TIR 대응 제품을 폭넓게 이용할 [19]수 있도록 파트너와 협력하고 있습니다."

Nvidia의 Kepler GPU 패밀리는 지원하지 않지만 AMD의 GCN[20]지원하지 않기 때문에 TIR 기능은 2012년 12월경에 Nvidia와 AMD 에 "설전"을 일으킨 기능 중 하나입니다.고객의 요구에 따라 Nvidia 지원 담당자는 TIR을 단순히 드라이버 레벨에서 구현할 수는 없지만 새로운 [21][22]하드웨어가 필요하다고 게시했습니다. 2014년 9월에 도입된 Maxwell 2 아키텍처가 이러한 [23]하드웨어입니다.

Windows 8.1에서는 Direct2D는 Direct3D11 하드웨어 테셀레이터를 사용할 수 있지만, 이 테셀레이터는D2D1_FILL_MODE_ALTERNATE. 다른 채우기 모드를 사용하는 경우(예:D2D1_FILL_MODE_WINDING그런 다음 Direct2D는 CPU의 테셀레이션으로 폴백하지만 안티에이리어싱에는 TIR을 사용합니다(TIR을 사용할 수 있는 경우).하드웨어 테셀레이션은 기본 Direct3D11(반드시 11.1은 아님)에서 사용할 수 있기 때문에 Microsoft는 Windows 8.1에서 Direct2D로 성능이 크게 향상되었다고 주장했습니다.TIR 이외의 [24]하드웨어에서는 Windows 8).

용도와 퍼포먼스

Internet Explorer 9 이후 버전에서는 Direct2D DirectWrite를 사용하여 성능과 화질을 [25][26][27]향상시킵니다.Direct2D 지원은 Firefox 3.7의 알파 버전에서 추가되어 렌더링 속도가 [28]약 2배 향상되었습니다.(Firefox 4는 DirectWrite 지원도 추가되었지만 렌더링 [29]품질에 대한 사용자의 불만 때문에 Firefox 7의 일부 글꼴에 대해 기본값이 아닙니다.Google Chrome은 Skia라는 자체 2D 라이브러리를 사용하며, Skia는 ANGLE on Windows를 통해 렌더링합니다.)[30]Firefox 70.0에서는 기능이 부족하거나 Google [31]지도 등에서 영역이 표시되지 않으면 블랙리스트에 있는 오래된 그래픽 드라이버에서 Direct2D가 비활성화됩니다.

Ars Technica의 Peter Bright는 2012년 여름에 "대부분의 데스크톱 애플리케이션은 Direct2D를 [32]사용하지 않습니다."라고 말했습니다.

Microsoft Office 2013은 디스플레이 렌더링 및 타이포그래피용으로 Direct2D+DirectWrite 또는 GDI+[33]Uniscribe 중 하나를 지원합니다.

「 」를 참조해 주세요.

레퍼런스

  1. ^ "Direct2D - Win32 apps".
  2. ^ "What's New in Direct2D and DirectWrite for Windows 10 (Channel 9)". Channel 9. Retrieved 2015-12-03.
  3. ^ "Updated Direct2D in March DirectX SDK - Tom's Blog - Site Home - TechNet Blogs". blogs.technet.com. 2009-03-24. Archived from the original on 2009-03-28. Retrieved 2011-12-26.
  4. ^ "Direct2D". MSDN. Retrieved 2011-12-26.
  5. ^ ".net - What exactly is "lightweight COM"?". Stack Overflow.
  6. ^ "Text Rendering with Direct2D and DirectWrite - Win32 apps".
  7. ^ "Supported Pixel Formats and Alpha Modes - Win32 apps".
  8. ^ "DirectX feature improvements in Windows 8 - Windows drivers".
  9. ^ a b "Windows with C++ - Introducing Direct2D 1.1". Msdn.microsoft.com. 2014-05-02. Retrieved 2014-08-09.
  10. ^ "Platform Update for Windows 7 (Windows)". Msdn.microsoft.com. Retrieved 2014-08-09.
  11. ^ Pooya Eimandar (2013). DirectX 11.1 Game Programming. Packt Publishing Ltd. p. 45. ISBN 978-1-84969-481-0.
  12. ^ "DevBlogs".
  13. ^ "What's new in Direct2D - Win32 apps".
  14. ^ "Geometry Realizations Overview - Win32 apps".
  15. ^ "Effects (Direct2D) - Win32 apps".
  16. ^ "Built-in Effects - Win32 apps".
  17. ^ "How to Apply Effects to Primitives - Win32 apps".
  18. ^ Kilgard, Mark J. (2012). "GPU-accelerated path rendering". ACM Transactions on Graphics. 31 (6): 1–10. doi:10.1145/2366145.2366191. S2CID 12967014.
  19. ^ a b c Rob Copeland, Siram Subramanian, Dan McLachlan, Kam VedBrat, Steve Lim 및 Jianye Lu로부터의 공헌과 Steven Synofsky Hardware의 도입으로 모든 것이 가속화되고 있습니다: Windows 8 그래픽스
  20. ^ "War of Words Between NVIDIA and AMD Over DirectX 11.1 Support Continues". Hardware Canucks. 2012-12-17. Retrieved 2014-08-09.
  21. ^ "Give us DX11.1 driver support on DX11 cards. no new hardware is required for dx11.1". NVIDIA.
  22. ^ "Fermi and Kepler DirectX API Support NVIDIA". nvidia.custhelp.com.
  23. ^ Smith, Ryan. "The NVIDIA GeForce GTX 980 Review: Maxwell Mark 2". www.anandtech.com.
  24. ^ http://channel9.msdn.com/Events/Build/2013/3-191 19:00~20:00 및 55:00~56:30
  25. ^ tim, on August 11th, 2010 Follow tim on Twitter (2010-08-11). "Firefox 4 as Psychedelic as IE9 with Direct2D enabled « Tim Anderson's ITWriting". Itwriting.com. Retrieved 2014-08-06. {{cite web}}: author=범용명(도움말)이 있습니다.CS1 유지: 여러 이름: 작성자 목록(링크)
  26. ^ Shankland, Stephen (2014-03-25). "Firefox 4 beta 4 adds hardware acceleration". CNET. Retrieved 2014-08-06.
  27. ^ "Mozilla chucks Roc at Microsoft's new hardness • The Register". www.theregister.com.
  28. ^ Published on 27th November 2009 by Gareth Halfacree (2009-11-27). "Firefox 3.7 gets Direct2D support". bit-tech.net. Retrieved 2014-08-09.
  29. ^ "Graphic bits » Blog Archive » DirectWrite Text Rendering in Firefox 6". Blog.mozilla.org. 2011-08-11. Archived from the original on 2014-08-10. Retrieved 2014-08-09.
  30. ^ "GPU Accelerated Compositing in Chrome - The Chromium Projects". Retrieved 2014-08-06.
  31. ^ Buckler, Craig (2011-12-20). "How to Enable WebGL for Blocked Graphics Cards in Firefox". Retrieved 2019-10-21.
  32. ^ Bright, Peter (2012-07-24). "Windows 8 GPU acceleration: good news for Metro". Ars Technica. Retrieved 2014-08-09.
  33. ^ "Office Adopts New Windows Display Technology - Murray Sargent: Math in Office - Site Home - MSDN Blogs". Blogs.msdn.com. 2012-07-29. Retrieved 2014-08-09.

외부 링크