2011-01-29 30 views
4

私はD3DImageを利用するビデオアプリケーションを作成しています。フレームはメモリからのもので、DirectX9でネイティブコードのテクスチャとしてレンダリングされ、最後にD3DImageによってWPF GUIに公開されます。 WPFのペイントフレームワーク(テキスト、シェイプなど)で作成された上にいくつかのオーバーレイがあります。これまでは、魅力のように機能します。 これで、元のネイティブC++コードから合成画像をエンコードしたいと思います。ビデオは640x480のBGR、25FPSであり、レンダリングされ、パラレルにエンコードされなければならず、XP/SP3までのWindows版の古いハードウェアでもエンコードされなければならない。WPF-DirectX相互運用機能の問題(D3DImage)

問題は、WPFとD3DImageの間の合成プロセスを説明するドキュメントが見つかりません。彼らはある意味で「ブレンド」されていますが、これの意味は何ですか?そして、WPFの図面の部分やネイティブのC++コードの合成されたイメージへのハンドルを取得することは可能ですか?

p.s:私も管理ソリューションには対応していますが、これまでのところパフォーマーはそれほど多く見つかりませんでした。

答えて

2

"CompositionTarget.Rendering"というグローバルな静的メソッドがあります。それにイベントを追加すると、WPFが表示する前にWPFがそのメソッドを呼び出すたびにレンダリングされます(ただし、FPSは変化する可能性があります)。そこで、あなたのrenderTargetをそれに応じて更新しました。 良い方法があるかもしれませんが、私はそれを認識していません。

注:WindowsXP上のD3DImageでは、ロック可能なrenderTargetを持つD3D9デバイスを使用しますが、Vista/7では、ロックできないrenderTargetを持つD3D9Exデバイスを使用します。ただのメモ。