2013/01/23

GPU!

リアルタイムに絵を大量にブレンドするのは、やっぱり CPU ではきつかったので GPU の力を借りることにした。

image

上の画像は NHK クリエイティブライブラリから借りてきた映像を 5 つ同時に表示してみてるところ。さらにテスト用 α チャンネル入りの画像をブレンドしてみてる。

  1. Haali Media Splitter → ffdshow Video Decoder → Video Mixing Renderer 9 のグラフを構築
  2. VMR9 にカスタムプレゼンタを設定。グラフを再生すると、IDirect3D9Surface の形でサーフェスを取得できるので、それを共有用に自前で作ったテクスチャにコピー
  3. ミキサーでそれぞれの共有用テクスチャを取得して、シェーダーで合成してプレーンに書き込む
  4. メインメモリ転送用のバッファに結果をコピー
  5. メインメモリに結果をコピー

という感じ。キャプチャから合成まで、GPU メモリ間の転送だけで済むので(たぶん)負荷は軽いはず。

CPU 使用率は 10% ほど。ドロップもなく軽快に動いてくれた。

 

C++ スキルが 0.2 くらい上がったかもしれない。

0 件のコメント:

コメントを投稿