« ウィンドウを列挙する | メイン | 設計変更 »
2005年11月04日
吉里吉里 ムービー拡張日誌2:: Direct3Dを自前で……
Tweet @jin1016をフォロームービーを再生したいだけなのに、なぜDirect3Dの初期化やリセットの処理を書いているのだろう? と疑問に思いつつも、大体はコピペで済むからいいかと実装。
これらの処理を書く前から一抹の不安があったが、実行して的中。
レンダリングレス再生モードでないとIVMRSurfaceAllocatorNotify9は使えない。
つまり、自前のDirect3Dを設定できない。
レンダリングレス再生モードを使う場合には、次のものを自前で実装する必要がある。
・再生ウィンドウを管理する。
・DirectDraw オブジェクトまたは Direct3D オブジェクト、および最終的なフレーム バッファを割り当てる。
・使われているオブジェクトを残りの再生システムに通知する。
・正しい時間にフレーム バッファを表示する。
・すべての解像度モードの変更、モニタ変更、およびサーフェイス損失を処理する。これらのイベントについて残りの再生システムにアドバイスする。
また、カスタム アロケータ プレゼンタなどを作る必要がある。
しかし、そこまでやる必要あるのかなぁ。
ビデオ再生中のフルスクリーン切替禁止か、現在のビデオの状態を保存した後、一度VideoOverlayを破棄し、フルスクリーンにした後に再生成すると言うどちらかのアプローチでいい気もする。
レンダリングレスモードでやればフルスクリーン切替が安定して動作するとは言い切れないし。
まあ、VMR9を使ってビデオをテクスチャに貼り付けると言ったことをやりたいとは思っているが、今すぐと言うわけではないし。
うーむぅ。
少し考えるか。
投稿者 Takenori : 2005年11月04日 23:33
comments powered by Disqus