04/10/21 23:14:53 26jBIHbd
>>723
楽な方法はゲーム処理ルーチンと描画ルーチンを分ける。
重いのは描画処理でそ。
↑のヤツだと、オイラはだいたい以下みたいな処理。
bool bDraw=false;
DWORD nextTime=timeGetTime();
while (!end) {
if (PeekMessage(&msg,NULL,0,0,PM_REMOVE)){
TranslateMessage(&msg);
DispatchMessage(&msg);
} else if(nextTime <= timeGetTime()){
nextTime += 16;
if (nextTime > TimeGetTime()+500) nextTime = TimeGetTime()+500;
GameProc();
bDraw=true;
} else if (bDraw) {
DrawProc();
bDraw=false;
} else {
int sleeptime=nextTime-timeGetTime()-5;
if (sleeptime > 0) Sleep(sleeptime);
}
}
コレはわかりやすく書いたので、GameProc()が重い状態が続くと
一切描画の更新がされなくなる。そこらへんはゲーム処理のfpsと描画のfpsの
バランスをどう取るかを考えて、例えば200msたったら強制描画するとかイロイロ処理いれる。
他にもゲーム処理は固定fpsにしないで、前フレームからの時間に応じた処理をさせる、とか
イロイロ方法があって、その人なりの主義主張があって、2chでは荒れる原因になりがち。