プロフィール

JaJa

JaJa
ツイニ スマートフォンヲ テニイレタゾ~! ('▽'ノ

...Now Developing
→ちょっと大きいサイズ
ブログ内検索
リンク

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

2012/05/26▼描画タスク制御部の大幅変更

メニュー画面をテストしていて、レティクルが微妙に左右にブレているのに気付きました。
最初は、座標打ち間違えたかなーとか、計算の誤差が出ちゃったかなーとか、そんな類のイージーなミスだと思ってたんですが、……原因を探っていくうちに、自作ライブラリのかなり深い部分に起因していることが判明。('△';

具体的には、レティクルは明滅(明るくなったり、暗くなったりを繰り返す)ループな演出を行っているのですが、ループで戻る際に、ループ戻り先の最初の描画設定において演出時間を0にしていると、ループした際に描画タスクが同期せず、描画処理がずれてしまう……という問題。
たとえば、色のリセットと座標のリセットのタイミングが微妙にずれたりとか。。。
まあ、簡単に言えば、かっこわるい不具合です!

演出時間0というのは、特定の表示状態にリセットするような目的で使っていたのですが、この「0フレーム」の扱いに、各描画処理間において時間的な矛盾要素が生じていたのでした。
自作ライブラリ内の描画タスク管理部分の設計ミスです。とほー。

ぶっちゃけ、設定時間の最小値を1(=1/30秒)に設定すればとりあえず回避できる問題なのですが、原因が分かった以上は直しておかないと気持ちが悪いのと、たとえ、「設定時間を1以上にすべし」と自分でルールを作ったとしても、それを破る間違いをやってしまうのが人間というもの(プログラムの参考書より)らしいので、面倒くさいけど……この時点でちゃんと直しておくことにしました。

直す部分ですが、かなり初期の段階に作った描画処理のコアな部分も含まれるので、大がかりな修正作業となります。
まあ、覚悟して作業を進めたのですが……丸1日かかっても作業は終わりませんでした。('¬'=3

20120526.jpg
▲タスクの制御フローを再設計。紙に書かないと、訳が分からなくなります。(書いても分からなくなります。)
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。