WPF와 같이 Direct3D 창에서 winapi 컨트롤을 렌더링 할 수 있습니까?DirectX를 사용하여 winapi 컨트롤을 렌더링하는 방법은 무엇입니까?
답변
클래식 Win32 창 컨트롤은 Direct3D 렌더링 대상에서 쉽게 그릴 수 없습니다.
Windows Store 앱을 사용하면 Direct3D + XAML 모델을 사용할 수 있습니다. 즉, Direct3D 콘텐츠를 XAML 기반 UI로 렌더링하기위한 특정 컨트롤을 사용할 수 있습니다.
Windows Presentation Foundation 응용 프로그램의 경우 D3DImage를 사용하여 Direct3D 콘텐츠를 WPF UI로 렌더링 할 수 있습니다. 이 기능은 레거시 Direct3D 9 만 지원하지만 Direct3D 11을 사용하여 this project을 렌더링 할 수 있습니다.
많은 게임에서는 컨트롤을 Direct3D 장면에 렌더링하는 것과 같은 것을 사용합니다.
간단한 UI 위젯으로 만들어진 이전 DirectX 샘플은 DXUT입니다.
Direct3D 표면에 직접 렌더링 할 수있는 강력한 컨트롤 집합이 필요한 경우 imgui을 살펴 보는 것이 좋습니다.
그렇지 않으면 간단한 컨트롤을 위해 직접 구현할 수 있습니다. DirectX Tool Kit과 SpriteBatch
및 SpriteFont
을 사용하면 먼 길을 얻을 수 있습니다.
고마워,하지만 왜 DXUT - 나쁜 해결책? SAMP는 자신의 GUI 렌더링을 위해 DXUT를 사용합니다. – monobogdan
@ monobogdan1 : DXUT는 공식 라이브러리가 아니며 더 이상 사용되지 않습니다. Chuck Walbourn이 GitHub 저장소를 업데이트 했음에도 불구하고 문제에 대해 [블로깅] (https://blogs.msdn.microsoft.com/chuckw/2013/09/14/dxut-for-win32-desktop-update/)했습니다. 그것에 의지 할 때 부딪 칠 수도 있습니다. – IInspectable
@ChuckWalbourn, Scaleform에 대해 알고, 3 차원 api로 랩핑을위한 자전거입니다. UDK는 멋지고 느린 GUI를 사용합니다. 그러나 C++ 만, C# 래퍼는 없습니다. – monobogdan
[DXGI] (https://msdn.microsoft.com/en-us/library/windows/desktop/bb205075.aspx)는 [Windows 그래픽 API 사이의 서페이스 공유] (https : // msdn) 인프라를 제공합니다. microsoft.com/en-us/library/windows/desktop/ee913554.aspx). 그러나 이것이 가능한지 여부를 묻는다면,이 API는 당신에게 적합하지 않을 수도 있습니다. 관련된 모든 시스템 구성 요소에 대한 ** 친숙한 ** 지식이 필요합니다. – IInspectable
@IInspectable, 정보 주셔서 감사합니다 – monobogdan
@IInspectable, 내 d3d 응용 프로그램에서 GUI가 필요합니다. DXGI를 사용해야합니까? – monobogdan