2022.01.09 14:32
안녕하세요. 저는 Qwilight 이라는 리듬 게임을 개발하고 있는 사람입니다. 이 게임은 특이하게도 (개발 히스토리상 어쩔 수 없게도) WPF를 베이스로 게임 플레이 스크린은 Win2D라는 Direct2D 라이브러리를 통하여 렌더링하고 있습니다.
곡 선택 (WPF) => 게임 플레이 (Win2D) => 게임 결과 (Win2D) => 곡 선택 (WPF) => ...
그런데, 반디캠의 게임 캡처가 이런 구조의 게임을 캡처할때 오동작하는 것 같습니다. WPF 상태일때 캡처를 시작하고 Win2D로 넘어가서 게임 플레이를 한 다음에 다시 WPF로 돌아오고나서 캡처를 중단하니 Win2D가 렌더링한 부분은 전혀 캡처가 되지 않습니다.
원인은 WPF에서 Win2D를 구동하려면 XAML Islands를 통하여 구동해야되는데 이 과정에서 WPF와 Win2D의 HWND가 달라지고 둘은 서로 다른 DirectX Context (WPF: DX9, Win2D: DX11)를 가지므로 발생하는 것 같습니다.
처음에는 게임의 어쩔 수 없는 한계로 넘어가려고 했으나 같은 게임 캡처 방식 (후킹)을 사용하는 XBOX Game Capture, GeForce Experience, Xsplit 등은 문제가 없어서 한번 문의를 드리게 되었습니다. (반면 OBS는 반디캠과 비슷한 증상이 발생합니다)
예제 프로그램 저장소는 다음과 같습니다. https://github.com/pcfulife/WPFwithWin2D
안녕하세요.
반디캠컴퍼니입니다.
해당 내용을 개발팀에 전달하였습니다.
감사합니다.