トップページ > 記事閲覧
解像度変更によるリフレッシュレートの低下
名前:LR 日時: 2016/02/18 00:57

ソフト内の設定で、解像度を変えられるようにしようと思ったのですが、 プログラムの途中でSetGraphModeを呼び出すとfpsが落ちました。 リフレッシュレート60Hzモニターで実行したところ、およそ44fpsに、また、75Hzモニターだと56fpsほどまで落ちました。 3つの異なるPCで試した結果、いずれの場合もfpsが落ちたので、PC依存による処理落ちではないと考えましたが、実際のところどうなのでしょうか。 以下に、fps落ちが確認されるテストコードを張ります。 -----ここからテストコード----- #include "DxLib.h" int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { //fps計測用 int NowTime = 0, PrevTime = GetNowCount(), LastMeasuredTime = 0, FrameNum = 0; float fps = 0; //解像度把握用 int WindowSize = 480; // ウインドウモードで起動 ChangeWindowMode(TRUE); // DXライブラリ初期化処理 if (DxLib_Init() == -1) return -1; // 描画先を裏画面にする SetDrawScreen(DX_SCREEN_BACK); // メインループ while (ProcessMessage() == 0 && CheckHitKey(KEY_INPUT_ESCAPE) == 0) { // 画面に描かれているものを一回全部消す ClearDrawScreen(); //フレーム数を数える FrameNum++; //ホイールのチェック int WheelNum = GetMouseWheelRotVol(); //解像度変更 if (WheelNum != 0){ WindowSize += WheelNum * 10; SetGraphMode(WindowSize * 4 / 3, WindowSize, 32); SetWindowSize(WindowSize * 4 / 3, WindowSize); } //1秒ごとにfps計測 if (LastMeasuredTime < GetNowCount() - 1000){ NowTime = GetNowCount(); fps = 1000.0f / (NowTime - PrevTime)*FrameNum; PrevTime = NowTime; LastMeasuredTime = NowTime; FrameNum = 0; } //fps描画 DrawNumberPlusToF(0, 0, "fps", fps, 1, GetColor(255, 255, 255)); //ウィンドウサイズ描画 DrawNumberPlusToI(0, 16, "WindowSize(Y)", WindowSize, 10, GetColor(255, 255, 255)); DrawString(0, 32, "マウスホイールの回転で解像度を変更します", GetColor(255, 255, 255)); // 裏画面の内容を表画面に反映させる ScreenFlip(); } // DXライブラリ使用の終了処理 DxLib_End(); // ソフトの終了 return 0; } -----ここまでテストコード----- DxLib_Init関数付近でSetGraphMode関数を呼び出す分には、fps落ちは確認されませんでした。
メンテ

Page: 1 |

Re: 解像度変更によるリフレッシュレートの低下 ( No.1 )
名前:管理人 日時:2016/02/21 04:31

載せて頂いたテストコードで SetGraphMode を呼んだ後にfpsが落ちてしまう原因は SetGraphMode の後に SetDrawScreen( DX_SCREEN_BACK ) ; を呼んでいないため、表画面に 対する描画になってしまっているからです( 表画面に対する描画は裏画面に対する描画よりも 負荷が高くなります ) SetGraphMode を呼ぶと SetDrawBlendMode や SetDrawMode、SetDrawScreen、SetDrawArea などの 描画関連の設定がリセットされてしまいますので、SetGraphMode を呼んだ後は SetDrawScreen などの 描画関連の設定を再度行うようにしてください m(_ _)m
メンテ
Re: 解像度変更によるリフレッシュレートの低下 ( No.2 )
名前:LR(解決) 日時:2016/02/21 18:13

朝早くからの返信、ありがとうございますm(_ _)m SetGraphModeを呼び出すと描画に関係する設定が初期化されることを見落としていました… SetDrawScreen( DX_SCREEN_BACK ) ;を呼び出したらリフレッシュレートの低下は見られなくなりました。。 ありがとうございましたorz
メンテ

Page: 1 |

題名
名前
コメント
パスワード (記事メンテ時に使用)

   クッキー保存