読者です 読者をやめる 読者になる 読者になる

S.F. Page

Programming,Music,etc...

Box2D + WinRTでゲームを作る (3) – 動画出力方法を考える

Direct2D シューティングゲーム DirectX DXGI WinRT Windows Store Apps Media Foundation Box2D Windows C++ Audio ゲーム Windows API Box2D + WinRTでゲームを作る

今日はMedia Foundationドキュメントをみながらスワップチェインをどう出力するのかを考えていた。GPUメモリ -> CPUメモリの転送も極力減らしたいし、 拡大縮小もGPUにやらせたい。で以下の手順でいけるのではないかと。

  1. スワップチェインと同じ大きさのテクスチャ・サーフェースAを作る。
  2. 出力したいビデオサイズと同じ大きさのテクスチャ・サーフェースBを作る。
  3. 出力したいビデオサイズと同じ大きさのステージ・サーフェースCを作る。
  4. ID3D11DeviceContext::CopyResourceを使ってスワップ・チェイン→Aにコピー。
  5. Aをテクスチャとし、Bと同じ大きさの四角形をBに描画。
  6. BをID3D11DeviceContext::CopyResourceでCにコピー。
  7. CをMAPして読出し、sinkwriterを使いH.264形式で書き込み。

これで一度試してみようかなと思う。

Media Foundationドキュメントを見るとDirectXサーフェース関係のAPIも用意されていてこれはいったい何なのかなと思って調べてもいる。 この内容しだいでは手順も変わってくるかと思う。