■掲示板に戻る■
■過去ログ倉庫めにゅーに戻る■
[実践] 1フレーム待つ関数を書くスレッド
- 1 名前: デフォルトの名無しさん 投稿日: 2001/03/12(月) 21:51
- FPSがどうとか、VSYNCがどうとかというのは色々議論されてますが
抽象的な話だけで具体的にどうするのというのは書かれてません。
そんなわけで、1フレーム時間が1/60secだと仮定して
なるべく環境に依存しない1フレーム待つ関数を実際に書いてみるスレッドです。
こう書いてみたんだけど、これでいいの?
と言ってコードを見せるのもありです。
- 2 名前: 1 投稿日: 2001/03/12(月) 21:53
- でさっそくなんですが、こんなコード見つけました。
これでSetFPSしてWaitFrameを一度呼べば1フレーム待てるんですか?
Uint32はunsigned int、SDL_GetTicksはWin32だとtimeGetTime、
SDL_DelayはWin32だとSleepと読み替えてください。
static Uint32 fps;
static Uint32 interval;
void
SetFPS( unsigned int _fps ) {
fps = _fps;
interval = 1000 / fps;
}
void
WaitFrame( void ) {
Uint32 nowtime;
Uint32 lefttime;
static Uint32 lasttime = 0;
nowtime = SDL_GetTicks();
lefttime = lasttime + interval - nowtime;
if ( lasttime + interval > nowtime ) {
SDL_Delay( lefttime );
lasttime = nowtime + lefttime;
} else {
lasttime = nowtime;
}
}
- 3 名前: デフォルトの名無しさん 投稿日: 2001/03/12(月) 22:28
- SDLはWin版もあるからそのまま使えばイイジャーン
- 4 名前: デフォルトの名無しさん 投稿日: 2001/03/12(月) 23:03
- Sleepは精度が悪いと評判なので、さすがにSDL_Delay=Sleepってことはないような。
- 5 名前: デフォルトの名無しさん 投稿日: 2001/03/12(月) 23:04
- あ、いや、SDL_Delayの精度が高いかどうかは知らん
- 6 名前: デフォルトの名無しさん 投稿日: 2001/03/12(月) 23:13
- リフレッシュレートスレでやりゃいーんじゃねぇの
- 7 名前: デフォルトの名無しさん 投稿日: 2001/03/13(火) 00:07
- 吾輩もそう思った。