게임을 작성하고 중간에 일부 cutscenes 싶습니다. 윈도우 모드에서는 DirectShow 클래스가 완벽하게 작동하며 사용하기 쉽습니다. 그러나 게임이 전체 화면 일 때 DirectShow에 전체 화면 컷씬을 표시 할 수 없습니다.DirectShow IVideoWindow 및 Fullscreen - D3D Primary Surface에 쓸 수 있습니까?
기본적으로 D3D 장치를 초기화 할 때 IVideoWindow.put_Fullscreen (true)을 사용하는 경우에도 비디오를 표시 할 수 없습니다. DirectShow가 D3D Device로 전체 화면을 볼 수 없다고 생각합니다.
그래서 D3D 장치를 재생하는 동안 cutscene이 재생되고 다시 초기화됩니다. 이것은 꽤 잘 작동하는 것처럼 보이지만 DirectShow가 전체 화면을 재생할 때 내 애플리케이션의 메인 윈도우에서 포커스를 훔쳐 끝날 때 되돌릴 수없는 것처럼 보입니다. 그런 다음 DirectInput이 나중에 장치를 다시 가져 오지 못하게됩니다 ("Access Denied"오류 코드 제공). 취득하기 전에 SetForegroundWindow()를 시도했지만, 문제가 해결되지 않을 수도 있습니다.
어쨌든 긴 이야기는 짧습니다. 원하는 모든 것은 D3D 앱 중간에 전체 화면 컷씬입니다. 이를 위해 선호되는 방법이 있습니까? 내 D3D 기본 표면에 DirectShow 출력을 만들어서 할 수 있습니까? 나는 내가 가지고있는 문제를 해결할 것이라고 생각한다.
시간이 좀 걸렸지 만 참조하는 예를 발견했습니다 (Windows SDK에 있지만 DirectX SDK에는 없습니다 - 얼마나 이상한 지). 나는 그것을 오늘 밤 살펴보고 내가 알아낼 수 있는지 알아 보겠다. 내가 찾는 것 같아. – TrespassersW
DirectShow (이름에도 불구하고)는 5 년 전이나 6 년 전 Windows SDK로 옮겨졌습니다. 처음 발견했을 때 혼란 스러웠습니다. 어쨌든 VMR9 할당자를 사용하면 특정 형식의 hw 비디오 가속을 얻을 수 있으며 hw 가속화 된 색상 공간 변환 및 디인터레이스가 가능합니다 ... ddd 표면에 렌더링하는 데 도움이되는 것은 물론이지) –
그냥 ' d 팝업으로 돌아와 내가 지적한 견본 덕분에이 작업이 가능하다고 언급합니다. 다시 한번 감사드립니다. – TrespassersW