Win2D는 UWP용 GPU 가속 2D 그래픽 렌더링 윈도 런타임 API입니다. Win2D 샘플 갤러리를 보면 상당히 괜찮은 성능을 제공하고 있고, 간단히 샘플을 만들어 테스트한 결과 윈폼이나 WPF에서는 체험할 수 없는 굉장히 고성능의 결과를 만들 수 있는것을 확인할 수 있었는데요,
이 라이브러리가 무려 6년전에 나왔다는 사실…
UWP가 데스크톱 앱 개발에 맞지 않게 폐쇄성 (심지어 초기에는 Microsoft Store에만 배포가 가능!) 데스크톱 어플리케이션 개발자가 UWP로 어플리케이션을 개발하기가 참 어려웠는데요, 한마디로 윈도에서 제공하는 윈도 런타임 API를 제대로 쓸 수 있는 환경이 아니였습니다.
시간이 흘러 정책도 바뀌고 환경도 좋아졌지만, 이미 개발자를 UWP에 안착시키는게 실패한 듯 해보이고요, 이것은 국내 뿐만 아니라 해외의 분위기도 마찬가집니다. 결국에 모바일을 잡으려다가 데스크톱 생태계까지 망가진 샘이죠.
윈도 앱 SDK가 망가진 데스크톱 생태계를 다시 통합하려는 시도로 이해하면 될 것 같고요, 데스크톱 개발자는 윈폼이나, WPF에서 윈도 앱 SDK에서 제공하는 WinUI3 환경으로 넘어가는 시기라고 이해하면 될 것 같습니다. 개인적으로는 데스크톱 앱을 개발하는 목적성으로만 봤을 때 사실 윈폼이나 WPF로도 충분히 가능하기도 하고, 어떻게 보여지는가? (최신의 UX 디자인 적용 유무)는 사실 큰 이슈는 아니라 이미 시기가 많이 늦은 감이 있지 않나 생각하지만, 어쨌든 MS입장에서는 필요한 작업인 샘입니다.
MS는 자신들의 생태계를 지키고 다음을 바라보기 위해 Blazor Desktop 및 MAUI, WinUI3 Desktop 프로젝트를 진행하고 있는데요, 이중에서 WinUI3 Desktop에서 사용할 수 있는 Win2D가 다시 부활합니다.
위 갤러리를 실행해 보셨고, 자신이 데스크톱 어플리케이션 개발자라면, 바로 활용 요소가 보이셨을 것 같습니다. 물론, 샘플은 UWP로 개발된 거라 실제로 WinUI에서 동작하는 Win2D의 동작과는 사뭇 다르긴 합니다만, WinUI3의 현대의 UX와 Win2D의 성능을 더해서 현대적이고 고성능의 데스크톱 앱을 개발할 수 있습니다.
WinUI3에서의 Win2D는 아직은 불안합니다. 윈도 앱 SDK 0.8 기준 패키지를 배포하고는 있지만, 메모리 릭이 발생한다는 보고가 있고, 제가 직접 테스트한 결과 어떤 이유인지는 모르겠지만, 모니터에서 제공하는 주사율과 다른 fps를 보여주고 있습니다. 예) 모니터 주사율이 240hz일 경우, UWP Win2D는 240 fps에 근접하게 나오는 반면, WinUI Win2D는 60 fps에 근접하게 나옴
WinUI3용 Win2D가 안정화가 되어 UWP Win2D의 성능이 나와준다면, 저는 앞으로 자주 이용하게 될 라이브러리가 될 것 같습니다.
WinUI3 Desktop는 WPF와 유사한 느낌으로 개발이 가능합니다. XAML시스템이 사실 WPF → UWP → WinUI3로 발전한 거니까요. 그래서 WPF 개발자라면 미리 WinUI3를 경험 해보시는 것도 나쁘지 않고요,
혹시 윈폼으로 개발하고 계신 개발자가 있으시다면 MS는 XAML기반으로 계속 성장할 것으로 보이니, XAML에 익숙해지는 경험으로 WinUI3를 접해 보시는 것도 나쁘지 않을 것 같습니다.