ゲームを書いていて、途中でカットシーンが欲しいです。ウィンドウ モードでは、DirectShow クラスは完全に機能し、簡単に使用できます。しかし、ゲームがフルスクリーンの場合、DirectShow でフルスクリーンのカットシーンを表示できません。
基本的に、D3D デバイスを初期化すると、IVideoWindow.put_Fullscreen(true) でもビデオを表示できません。私は、DirectShow が D3D デバイスでフルスクリーンを実行できないと推測しています。
そこで、カットシーンの再生中に D3D デバイスを解放し、その後再度初期化してみました。これはうまく機能しているように見えますが、DirectShow がフルスクリーンで再生されると、アプリのメイン ウィンドウからフォーカスが奪われ、終了しても元に戻らないようです。その後、DirectInput はデバイスの取得に失敗します (「アクセスが拒否されました」というエラー コードが表示されます)。取得前に SetForegroundWindow() を試してみましたが、直らないので結局問題ないのかもしれません。
とにかく、要するに、私が欲しいのは、D3D アプリの途中でフルスクリーンのカットシーンだけです。これを達成するための好ましい方法はありますか?DirectShow を D3D プライマリ サーフェスに出力することで、それを行うことはできますか? それは私が抱えている問題を解決すると思います。