スポンサード リンク

T.Ishii's Software Library

HTML5 レトロ風ゲーム館

無料ブログはココログ

« Unicode化を推進 | トップページ | もう少しかかるので »

やはり、Direct2Dを使う

今は、MasterReversiの次バージョンを開発中で、機能的な変更は完了したので、内部コードのUnicode化を推進中なのだが、メイン盤面の描画には、やはり、Direct2Dを使う事にした。これは、GDI描画のままだと、どうしても石アニメーションのフレームレートが出なかったからだ。

MasterReversiのデフォルト設定では、石はアニメーションさせているのだが、更に言えば、そのアニメーション速度は、結構、遅い。これは何故なのか、というと、石のアニメーションでは、石を180度回転させるのだが、その為に用意してあるフレーム数が36あるからだ。

つまり、180/36=5なので、MasterReversiでは、石は5度ずつ回転させつつ表示可能にしてあるので、巷に良くあるリバーシソフトのアニメーションなんかよりは、よっぽど、滑らかなアニメーションが可能な訳だ。

なので、その違いを実感してもらう為に、敢えて、デフォルトのアニメーション速度は遅くした訳なのだが、Windows Vista以降、このアニメーションが滑らかに行われなくなっていた。

その理由は、Aero、つまり、DWMが導入されたからなのだが、Windows Vistaが登場した当時には、GDIを使用している従来ソフトを、より高速に動作させたい場合、Aeroは停止した方が良いのか悪いのか? という様な議論が、ネット上で盛んに行われていた。

その結果としては、Aeroを停止するのは情弱、つまり、Aeroを動作させておかないと逆にGDIアプリも遅くなる、という事になった様な気がしている。

しかし、MasterReversi的には、上記の通りで、Aeroが動作しているとアニメーションがギコチなくなり、Aeroを停止するかAeroを使用しないデスクトップデザインを使用すると、XP環境並の滑らかなアニメーションが行われた。

と、いう事なので、MasterReversi的には、Aeroは動作を遅くする諸悪の根源だった訳なのだが、実際には、動作が遅くなった訳ではなくて、GDIから転送した画像が描画される前に、次の画像が転送され、結果的にフレームレートが半減する、みたいな感じになっているのかもしれない。

何故なら、Aeroを動作させようが停止させようが、アニメーションの総時間は変わらないからなのだが、いずれにしても、Aeroが動作している環境では、MasterReversiの石アニメーションはギコチなかった訳だ。

なので、今回の開発では、この問題を何とかしようとした訳なのだが、一昨日書いた様に、GDI描画の処理負荷は軽くしたのだが、それでも、まだ、アニメーションの滑らかさはXP時代のソレにまでは戻らなかった。

このため、作者的には、既に他ソフトでDirecrt2Dは使っているので、それらのソースコードから最低限の処理ルーチンをコピーし、MasterReversiのメイン盤面についても、Direct2D描画させてみた所、やっと、XP時代の滑らかさに戻った訳だ。

と、いう事なので、次バージョンでは、XP時代の石アニメーションの滑らかさが復活する訳なのだが、その為にはDirect2Dを使用する必要が生じたので、若干残っていたXPをサポート対象OSに含める可能性は、完全になくなった。

ちなみに、アニメーション速度は変更可能で、最も遅くした場合には、フレーム間に50mSecのWaitが入れられるのだが、最も速くした場合には、ウエイト時間は0mSecになる。

なので、アニメーション速度を最も遅くすると、36*50=1800なので、石の回転には2秒程度を要する事になるのだが、最も速くした場合には、0秒で回転するのか、というと、そういう事にはならなくて、0.5秒程度は必要になる。

これは何故なのか、というと、普通、画面表示は60Hzで行われるので、それに同期するからなのだが、MasterReversiでは、この同期による遅延は考慮していないので、設定する回転速度によっては、各フレームの表示時間は微妙に異なる事になる。

なので、余程の動体視力がある人なら、Direct2Dを使う次バージョンでも、アニメーションはギコチない、と、感じる人も出てくるかもしれないのだが、少なくとも作者的には、そんな動体視力は無いので、Direct2Dを使う事で、普通に滑らかに感じられる様になった訳だ。

= この記事に関連する公開中ソフト =

MasterReversi

MasterReversi

(2016/05/04追記)

« Unicode化を推進 | トップページ | もう少しかかるので »

トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/534482/63428920

この記事へのトラックバック一覧です: やはり、Direct2Dを使う:

« Unicode化を推進 | トップページ | もう少しかかるので »

2017年8月
    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31    

広告

プライバシーポリシー

  • 当サイトでは、第三者配信による広告(Google Adsense)サービスを利用しています。

    Google を含む第三者配信事業者は、Cookie を使用して、ユーザーのウェブサイトでの閲覧履歴に基づく広告を配信します。 Google 広告 Cookie を使用することにより、Google や Google のパートナーは当サイトや他のサイトへのアクセス情報に基づく広告をユーザーに表示できます。

    Cookieを無効にする設定およびAdsenseに関する詳細については、以下のリンクを参照下さい。

    広告 - ポリシーと規約 - Google