« WebAssembly のバイトコードの仕様を眺める | メイン | 吉里吉里Z本体に9 patch ( 9 slice )を入れるか検討する »

2016年04月19日

吉里吉里Z 開発:: DrawDevice の変更予告

    

今回の64bit化で~と言うことではなく、もう少し先の話。
たまにツイッターで言っていたりするが、ここでまとめて、何か問題がありそうなら教えてくださいと言うことで。
予定しているは以下。

1. 動画との連携インターフェイスの追加
2. Bitmap 内部構造の正順化
(3. DirectX11 化)

1. 動画との連携インターフェイスの追加
ミキサーモード( VMR9 )で DrawDevice と連携し、任意のサーフェイス( Texture )に描画できるようにする予定。
現在のミキサーモードは、子ウィンドウを作ってそこで Direct3D を使い描画しているが、本体も同じように Direct3D で描画していると重複していて無駄なこと、現在の形ではミキサーモードで動画の手前に描画できないので、これを解消する目的で DrawDevice と連携するインターフェイスを追加します。
描画を DrawDevice に任せる利点として、動画の手前に任意のレイヤー等を描画可能にできることです(無駄を省くのはおまけ)。
現在オーバーレイモードは問題が発生しやすいため非推奨かつ KAG3 ではミキサーモードに振り替えられているため、ミキサーモードが標準ですが、ミキサーモードとオーバーレイモードは、実質的に最前面で動画を再生する仕組みで、その手前に何かを描画することが出来なくなっています。
VMR9 は、サーフェイス( Texture ) に動画を描画する仕組みで、別に最前面固定ではありません。
これを活かすために DrawDevice と連携するようにします。
Layer Tree Ownerによって、レイヤーが必ず Window に属さなければならない制約はなくなっており、BitmapLayerTreeOwner によって、任意の Bitmap にレイヤーをぶら下げる機能が入っていますが、これを DrawDevice の Texture に拡張することで、複数のレイヤーツリーを持てるようにすれば、動画の手前にレイヤーを置けるように出来ます。
これは Window の中に Window を持てるような感覚です。
動画の手前にレイヤーを描画できない現在の制約は、ダイアログやメニュー等をレイヤー化しようとした時問題となります。

MediaFundation の EVR 描画でも連携を追加する時再度インターフェイスが追加される可能性もあります。
MediaFundation も DirectShow 同様ややこしいので実装に時間がかかることが予想されるため、やるとしても先の予定。


2. Bitmap 内部構造の正順化
吉里吉里2/Z では、Bitmap が上下逆順で格納されているが、これを正順化する予定。
正順を要求するライブラリとの連携やマルチプラットフォーム化を考えると、逆順なのは足かせとなるので。
上下逆なのは、昔の制約で今となっては不要なもの。
上下依存しないようにきちんと実装していれば問題は出ないが、BasicDrawDevice では問題が起きたので、他の DrawDevice でも問題となる可能性があります。
後、内部的に動画のレイヤーモードも反転して描画されるので、その部分も修正が入る。


3. DirectX11 化
DirectX9 で問題が出るケースを見かけたりするため、Vista 以降だと DirectX11 が使えるので切り替え予定。
ただ、VMR9 は DirectX9 のサーフェイスを要求するので、難しい可能性もある。
変換して受け渡しできるはずだけど。
MediaFundation の方は DirectX11 と連携するには Windows8 以降と言う制約があるので、こちらはこちらで別の問題がある。


投稿者 Takenori : 2016年04月19日 17:50




comments powered by Disqus
Total : Today : Yesterday : なかのひと