楽天モバイル[UNLIMITが今なら1円] ECナビでポインと Yahoo 楽天 LINEがデータ消費ゼロで月額500円〜!


無料ホームページ 無料のクレジットカード 海外格安航空券 解約手数料0円【あしたでんき】 海外旅行保険が無料! 海外ホテル

log

2012.07.20 C++:カスタムUIその3

ファイル 410-1.jpg

カスタムUIを更にアップデート。今度はパラメータを受け取って表示するテキストを使用
できるようになり、後はGetDCでD3Dのデバイスコンテキストを取得するのではなく
D3Dのウィンドウを直接子のウィンドウすることでフレームレートの低下を防ぐ仕様に
なりました(それでもGDIを使用しているためか少しFPSが低下してますが)。

で…これだけだと前回とほとんど見栄えが変わらないなということでボクセルでGUIの
文字を書いてみたり苦笑。これだけのことなのに結構時間がかかった訳ですが。原因は
D3Dのウィンドウを子ウィンドウにしてしまうと色々不都合が起こることに気が付き、そこ
からの修正作業の時間が大半でした。

D3Dのウィンドウを子ウィンドウにする場合、疑似フルスクリーンでフルスクリーン描画する
には一旦D3DのウィンドウをSetParent()で最上位ウィンドウとして切り離してからポップ
アップウィンドウのスタイルに変更しなければならなかったり。また、DirectInputの協調レベルを指定する際のウィンドウハンドルは最上位ウィン
ドウにしなければならず、ウィンドウモードと疑似フルスクリーンモードの切り替えの際に
協調レベルを再設定しなければならなかったり。。更にやっかいだったのがウィンドウ
スタイルの切り替えや親ウィンドウの切り替えや表示モードの切り替えの実行順番が少し
でも違うと一部の命令が動作せず表示がおかしくなったりしたのでした。

ということで本来なら数時間で出来そうなものですが、デバッグでかなり無駄に時間が
かかりました;正直GDIやメッセージ処理周りには意味不明な仕様やバグのようなもの
が多すぎるなという印象を受けました。カスタムウィンドウやボタンも全てDirectXで管理
した方が問題が起こらず安心出来そうですが、、ボタンのON/OFF時の描画もHLSLで
管理しないといけないので、それはそれで面倒くさそうだなあ…笑。