[過去ログ] SDLスレ (987レス)
前次1-
抽出解除 レス栞

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
362
(6): 名前は開発中のものです。 [sage] 04/02/01 22:25 ID:VsJKdPiS(1) AAS
フルスクリーンにしてSDL_FillRect使うとものすうんごく遅いんですが、
こんなもんなんでしょうか?
SDL_FillRectを使わなければ60fpsくらい出るものが1以下に...
363
(1): 名前は開発中のものです。 [sage] 04/02/03 17:19 ID:0RlVpYsz(1) AAS
>>362
あなたの環境でフルスクリーンでSDL_FillRect使って
ものすうんごく遅くなる最小限のサンプルプログラムを
示してくれればみんなテストしてくれると思うよ?
364: 362 [sage] 04/02/04 11:41 ID:URHwb4SZ(1/3) AAS
>>363
長くなるので一部省略します。

if(fullScreen)
 screenSrf = SDL_SetVideoMode(640, 480, 16, SDL_HWSURFACE | SDL_FULLSCREEN | SDL_DOUBLEBUF);
else
 screenSrf = SDL_SetVideoMode(640, 480, 16, SDL_SWSURFACE);

while(1) {
 static int px = 0;
 SDL_Rect area = {0, 0, 640/2, 480};
 SDL_FillRect(screenSrf, NULL, SDL_MapRGB(screenSrf->format, 255, 255, 255));
 if(px > 640 / 2) px = 0;
 else px++;
 area.x = px;
 SDL_FillRect(screenSrf, &area, SDL_MapRGB(screenSrf->format, 0, 0, 0));
 SDL_Flip(screenSrf);
 waitByFPS();
 printf("FPS=%d\n", nowFps);
}
365: 362 [sage] 04/02/04 11:44 ID:URHwb4SZ(2/3) AAS
waitByFPSの中身です。

static void waitByFPS() {
 Uint32 nowtime,lefttime;
 static Uint32 lasttime=0;
 const Uint32 interval=1000/fps;
 nowtime = SDL_GetTicks();
 lefttime = lasttime+interval-nowtime;
 if(lasttime+interval>nowtime) {
  SDL_Delay(lefttime);
  lasttime=nowtime+lefttime;
  nowFps = fps;
 } else {
  nowFps = 1000 / (nowtime - lasttime);
  lasttime=nowtime;
 }
}

変数fpsはint型で60、nowFpsには現在のFPSが入っています。
366: 362 [sage] 04/02/04 11:50 ID:URHwb4SZ(3/3) AAS
っと、ここまで貼ったのですが、このプログラムの場合、
フルスクリーンにしたときにFPSが下がるのではなく、
何も写らなくなってしまいます。

問題が発生した元のプログラムも、どうやらSDL_FillRect又はSDL_Flipに
時間がかかっているのではなく、画面が実際に更新されていないだけのようです。
(つまり、nowFpsにはちゃんと60が入っている)

機種固有の問題でしょうか? よろしくお願いします。
367
(1): 名前は開発中のものです。 [sage] 04/02/07 11:16 ID:X+ZonyxN(1) AAS
>>362
以下の環境で試してみましたがどの環境でも
フルスクリーン,ウィンドウモードの両方とも
正常に画面は更新されました。

ThinkPad X30, WinXP, cygwin + SDL 1.2.6
自作PC, Win2k, MinGW + SDL 1.2.6
自作PC, Linux2.4.22, SDL 1.2.5

# せめてコンパイル可能なプログラムを…
368: 362 [sage] 04/02/07 20:35 ID:O0CtMFQf(1) AAS
>>367
ありがとうございます。そんなにたくさんの環境で...
やっぱり環境固有の問題みたいですね。

# 途中省略ってのはまずかったみたいですね。
# いや、ソース読むだけで判断するかなと...
# 想像以上に親切で迷惑をかけてしまったようです。スイマセン
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.032s