FullHD対応を正式版に適用する
tp://yyagi.com/DTXMania100(140801)_beta_20140723.zip
まずは旧branch相当のものを作成した。今後、#31820で残していた以下のTODOに、少しずつ対応する。
BGAの拡大が等倍でないので、ドットにこだわっているようなBGAで表示が破たんしているのを何とかする (と言っても等倍表示にするしかないのですが。1枚絵の時と複数レイヤー使用時のときで、等倍か否かを分けるか・・・)
等倍のレンダリングターゲット(サーフェイス)を用意して、そこにBGAを等倍で描画してからテクスチャにロードして描画すれば、破綻することなく自由に拡大縮小できると思いますよ。 (サーフェイスのダイレクト伸縮描画ってできたかな?)
beta版やってみました。全画面で、画面にフィットしないですね。画面がはみ出てしまいます。DTXMania098(131101)FullHDの方は、全画面で画面にフィットします。
背景動画再生、対応してくださるということで、ありがとうございます!
fromさん
なるほど、そんな感じでの対応でいけそうですね。(正直、Bitmapに都度描画しておいてテクスチャに転送でもいいかなと思ってますが・・・)
後は、今後MediaFoundation対応しないと・・・というところですが、SharpDXが何気にMediaFoundationのinterfaceをしれっと提供しているっぽいので、今度試しにSlimDXからの乗り換えをやってみようかと思っています。
koh-heyさん
tp://yyagi.com/DTXMania100(140801)_beta_20140724.zip
SharpDX.MediaFoundation 名前空間のリストをざっと見てみました。
MediaFoundation.NET と同じく、MediaFoundationのAPIをそのまま移植したって感じですね。
SSTでもMediaFoundation.NETで実装してみたことはあるのですが、デフォルトEVR(の中のデフォルトプレゼンタ)が使い物になりませんでした。
理由は……ずいぶん昔のことなので記憶が確かではありませんがw、確かVMR9と同じだったと思います。
具体的には、デフォルトのプレゼンタがバックバッファに直接描画する、かつ、MF専用のスレッドで描画を行う仕様であるため、SSTのメインスレッドの状態とは無関係に不定期にデバイスロックが発生し、結果としてスクロールががったがたになった、というアレだったかと。
そのため、今SSTで使っているFDK22では、バックバッファではなくFDK22側で独自に準備した3枚のサーフェイスに順次描画するようにカスタマイズしたプレゼンタを使っています。
まあ、Direct3Dの仕様上レンダリングターゲットは同時に1つしか指定できませんので、プレゼンタがテクスチャに描画してる間はバックバッファに描画できない、という条件は同じですけどね。でも、プレゼンタの描画タイミングとバックバッファへの描画タイミングを、FDK22から制御できるようになりました。
正直、Bitmapに描画して転送するほうが手っ取り早いかも知れませんw
あ。
Bitmapへの描画とMediaFoundationへの対応は別の問題でしたね(汗
あああ。
「3枚のサーフェイス」じゃなかった。今は1枚だけでした。(汗
プレゼンタがお絵かきするサーフェイスは複数枚用意できます。プレゼンタには先にできる限りお絵かきさせておいて、表示タイミングだけをスケジューラで管理する仕組みなのですが、結局はWASAPIのバッファサイズなどと同じで、テクスチャをたくさん用意するほど動画の開始が遅延します。
背景動画の開始遅延はいくらでも調整できますが、フィルイン効果などを動画にした場合には致命的ですね。
しかも、空いてるサーフェイス全部にお絵かきするまでデバイスを返してくれませんし。
まあ、今はそんな状態です。
対応ありがとうございます。フルスクリーンで画面にフィットして表示されました。
私のPCの解像度は1366x768ですが、私の環境だと、前回のやつでフルスクリーンにすると下と右にあふれています。1366x768の画面にまんま1920x1080で表示されている感じになっていると思います。
今まで気づかなかったんですが終了画面に私の名前も載っているんですね。ありがとうございます。(-)
tp://yyagi.com/DTXMania100(140801)_beta_20140728.zip
このチケットの最初にコメントした通り、個人的にはまだまだ不満はあります。しかしながら、中途半端なものであってもFullHD版は早めにリリースした方がいいと考えていますので、問題なければこれでRelease100として一度リリースしてしまうつもりでいます。(でも、viewer用に個別に画面サイズを保持するのだけは、今入れ込んでしまった方がいいですね)
FROMさん
コメントありがとうございます。MediaFoundationはゲーム利用には非常に面倒くさそうだということはよくわかりました(笑)。デフォルトEVR(の中のデフォルトプレゼンタ)だけC++で書いて、あとはC#で書く、などとできればよいのですが。
昔、MediaFoundationの勉強用に、下記の本をほぼ発売と同時に買ったのですが、ち~っとも読んでないです。ぱらぱらと見た限りでは、比較的読みやすそうな英文ではあるのですが。 tp://www.amazon.co.jp/Developing-Microsoft-Foundation-Applications-Developer/dp/0735656592/ref=sr_1_1?s=english-books&ie=UTF8&qid=1406565079&sr=1-1&keywords=media+foundation
Microsoftの出す本て、基本的にMSDNのまとめだ(けど内容が古い)というイメージがあるのですが、その辺どうなのでしょう。
今のMediaFoundation はDirect3D9の他にDirect3D11(のHAL)にも正式に対応したっぽいのですが、需要がないので調べてませんw
つーか、別件でCOMポートドライバの開発も行ってるんですが(趣味で)、最新の書籍が「Windows Vista デバイスドライバ開発」っておい。
私は Windows 8 から導入された新しいドライバモデル(UMDF2.0)について知りたいのに、書籍は Vista(UMDF1.11)で止まってる……
MSDNも、一部は Vista で止まってるので怖いですわ……
デフォルトEVR(の中のデフォルトプレゼンタ)だけC++で書いて、あとはC#で書く、などとできればよいのですが。
ええ、それをやってるのがSSTのFDK22ですよ。
SlimDXを廃止して、MediaFoundation(カスタムプレゼンタ含む)とDirectXの部分はすべてネイティブC++でコーディングして、C#用にC++/CLIのラッパーを作って被せてます。SlimDXとMFの同居はやっぱり無理でした。Direct3Dデバイスの主導権争いが発生します。
でもまだMFにバグが潜んでるっぽくて、再生中にフリーズしたりします(しかもまだ再現性がつかめてない(涙
あれ? 前回のコメント入力中に、間違って「概要」欄を消してしまったようです。すみません。元は何でしたっけ(汗
修正いただけると幸いです。申し訳ないです。
p.s.
あと、チケット違いのどうでもいい修正。
× COMポートドライバの開発
○ COMポートドライバから GPS データを読み込んで Windows 7 で導入された LocationAPI に対応するための SensorAPI に準拠する形に変換する GPS ドライバーの UMDF2.0 での開発
tp://yyagi.com/DTXMania100(140801)_beta_20140729.zip
Rel100向けの機能強化と修正は、これくらいで一段落かなと思います。
FROMさん
動作確認しました。背景動画再生とBGAが同時に表示できるようになっていますし(私が作ったデータでもそういうのあります、)
DTXCのViwerの方も的確に背景動画再生されるようになっているのでちょっと感激です・・。
ひとつあったのですが、前回、全画面に切り替えた時に画面にフィットされない、という件でお願いしたのですが、
beta_20140729では、私の環境では画面にフィットされない状態に戻ってしまったみたいです。beta_20140728の方は、全画面で画面にフィットされます。
これ、正式リリースでは画面にフィットされる状態にしてほしいです。やっぱり、全画面でプレイしたいです。
koh-heyさん、ご確認いただきありがとうございました。
tp://yyagi.com/DTXMania100(140801)_beta_20140730.zip
これで問題ないようであれば、明日ひっそりと公開します。
あと、099のバグ修正版も用意しました。さすがに空打ちチップが見えて、音が出なくなるのは問題過ぎるので・・・。tp://yyagi.com/DTXMania099b(140801)_RC.zip
お疲れさまです。明日とはまた急ですネ。
⇒DTXMania100(140801)_beta_20140730.zip ⇒DTXMania099b(140801)_RC.zip
双方試しました。さらっと触った程度なのでほとんど試せてませんが、特に気付いた点はありませんでした。
プレイに支障はありませんが、100ので、ラグタイムの文字の間隔が大きいので少々違和感があります(128なら1 2 8みたいな表示)。
100はXPでも一応動作するのですね。プレ動画は再生されましたが、演奏画面で動画は真っ黒だったのでそろそろ本格的に7にするか・・・^^;
余談:サーフェスプロ3で動くのか気になります、が価格がお高い。もう少し安ければ買いたい端末です。
sf298yenさん
動作確認いただきありがとうございました。Release 100 でのラグタイムの文字表示間隔を修正したうえで、先ほどリリースいたしました。
Surface Pro 3 ではたぶん動くと思います。ウチには Surface Pro 2 があるので、今度動作確認してみます。ただし、タッチ操作にはまだ対応していません。 タッチ操作対応のチケット(#31402)は発行済みなのですが、開発環境を大きく変更する必要があったり、ほかにやるべきことがたくさんあるなどの理由から、まだタッチ操作対応の開発を始められていません。
他にもなぜか Miix2 8 や Liva PC があったりするので、このあたりでも動作確認予定です。先日、後者で099の動作確認をしてみましたが、ギター曲の再生でノイズが入りまくりでした。CPU性能が低いせいで、サウンドのミキシングがヘタっているものと思われます。(サウンドの出力先をHDMI接続のTVにしていたせいかもしれませんが)。まあなんにせよ、このクラスのPCで問題なく動作する程度には性能をチューンしたいと思っています。
SurfacePro3、購入しようか検討していたのですが、バッテリー交換が出来ないという点がどうしても気に入らず見送ることにしました。 これなら普通にラップトップを購入したほうが・・・という流れになっています。どちらにしろWin10迄保留です。
タッチでの操作ですが、(某アプリから)バスをタッチで操作という違和感が強くあまりなじめません。 なので、(あくまでも個人の希望として)タッチ操作・性能チューンより、 やぎ。さんがやりたかったハズのオンライン対応の優先を上げてはどうかなと思っています。お忙しいみたいですが。
遅くなりましたが、FullHD対応お疲れ様でした!
チケット #31820 にて、FullHD対応版の試作を行ったが、これを正式版に適用する。
動画再生の性能改善は別途行うこととして、まずは画面サイズを拡大することを優先して行う。