くだすれDelphi(超初心者向け) Part3
■ このスレッドは過去ログ倉庫に格納されています
0511デフォルトの名無しさん
NGNGゲームプログラムなんですが、いままでonIdleを使って画面描画していたものを、
スレッド仕様に書き換えてみました。
メインスレッドは数値を計算し続け、サブスレッドはそれを元に画面を描画し続けるという感じです。
が、onIdleだと、描画が忙しくなってくる→onIdleが発生しなくなる→描画を間引く→負荷が減る→(゚д゚)ウマー
といった構図で、メインが圧迫されることはなかったのですが、
スレッドにしたら、サブスレッドが全力をあげて描画しようと頑張るもので、描画に負荷がかかると
メインスレッドにあるタイマが遅延してしまい、ガタガタになってしまいました。・゚・(ノД`)・゚・。
while(true) do begin
start := timegettime;
Synchronize(゚д゚); // ここでメインスレッド経由でVCLに描画
stop := timegettime;
if (stop - start < 33) then sleep(33 - stop - start);
end; // 描画が33ms以下なら、30FPSになるようにwaitを入れる
サブスレッド内はこんな感じなんですが、
これだと、33ms以上になると描画処理だけで全部持って行かれてしまうか・・・。
■ このスレッドは過去ログ倉庫に格納されています