Top / 雑記:2004-09-26

ようやく終わった(2004年09月26日)

今日も一日CCS中心に活動
流石に頑張ったおかげかムービに関する問題・その他カクつきに関する問題に終止符が打たれた
今までの方法がだめなので原点に戻りウェイト周りを見直すことにした。
色々と研究しているうちに原因が判明、割と単純な物だった。
カクつきの原因は簡単で、小数点以下が切り捨てられていた為、垂直同期の時間とタイマーの
ウェイトタイムが一致せず結果描画間隔がおかしくなりカクついていたのである。
1 ÷ 60 = 0.016666666666666666666666666666667
という感じに、とてつもなく凄い小数点になる。
ウェイトは精度の低い固定少数で取っていたので当然この値は切り捨てられる
するとタイマーとの垂直同期の間隔はズレてきて結果カクつきが発生する。
なので、この割られる側の1を少々大きくしてやることにより、誤差の範囲を補正する。
※ウェイトで浮動小数を使ってしまったのではボトルネックになるし、
 固定小数の小数位置を変えてもこの数字の補正は難しいだろうからこの方法を取った
マイクロ秒単位でズレるので、徐々にズレてくる。
その為、なかなか気が付きにくい点であったのが今回修正に時間がかかった原因だろう。
結果、見事にタイマーと垂直同期が一致して、なめらかに動作するようになった。

あと、このカクつきは60FPSで60Hzの微妙なズレの時のみ発生するので、75Hz等のリフレッシュレートの
場合、描画が等間隔に分配されるので、この問題は発生しない。