戯れ言:再描画は常にすべきなのか問題

もくじへ戻る


精神的な問題の話である.


ゲームのループを

//ゲームループ
while()
{
  Update();  //更新
  Draw();  //描画(表示の更新)
}

みたいな形に書こうとする際に,「無条件に描画を毎回行うってのはどうなのか?」と思ったりする.

平たく言えば「 Update() が何もしない場合もあり得ると思うんだけど,その場合でも Draw() をやるの? 無駄すぎね?」みたいな.

まぁこれは自分が作ろうとしているものが「しょぼい:操作入力待ちの状態では本当に何一つ動かない」からこそ,そういうことになるってだけのことかもしれないが,
「必要無いのに秒間16回だとか30回だとかいう勢いで無意味に同じものをとにかく描画しまくる」という動きは 健全ではない気がしてならない

……というわけでこういう感じ↓にしたいとか思うわけだ.

//ゲームループ
while()
{
  auto Ret = Update();  //更新
  
  if( Retが「再描画が必要である」ことを示しているならば )
  {  Draw();  }  //表示を更新
}

でもこれ,結構面倒なことになるんだよな.

Update() の中で行われている様々な処理の全てについて「表示を更新すべきか否か」っていう判断が必要になって, 且つ,その判断結果情報を Update() の戻り値にまで伝搬してやる必要が生じる.

実装がその分複雑になってしまうし,「表示が更新されない」というバグの温床になる率も高い.
変なこだわり(?)は捨てて「とにかく毎回表示更新する」っていう話にしてしまった方が物事を簡単にできるわけだ.うーん.


悩ましい

ほっといても何かがひっきりなしに動いている率が高いのであれば,単純に「毎回描画する」でよいだろうけど……

表示が更新されないバグに遭遇するたびに「どうすりゃいいのコレ…」とかなってるくせに,何か割り切れないんだよな.
イミワカンネー.どうかしてる.