WaitVSync関数を用いた垂直同期についての質問です。
SetWaitVSyncFlag(FALSE);
を実行して, 描画の際には
WaitVSync(1);
ScreenFlip();
という手順を踏んでいるのですが, 画面がカクついてしまいます。
SetWaitVSyncFlag(TRUE);
の場合と, 上のような場合では, どのような違いがあるのでしょうか?
DxLib_Init の後でも垂直同期信号を待つかどうかを変更する必要が出てきたので,
以下のページを参考にしました。
ttp://hpcgi2.nifty.com/natupaji/bbs/patio.cgi?mode=past&no=1445
ここではこの方法を用いると一部の環境では上手く動作しないとありますが,
"グラフィックスに弱い環境" と書いてあったので,
何か別の原因があるのではないかと思っています。
グラフィックボードは, nVIDIA の GeForce GTX 580 を使用しています。
以下のコードでも, SetWaitVSyncFlag関数を使用するときに
TRUEにするかFALSEにするかでカクつき具合がかなり変わりました。
FALSEにすると右に動く線が時々引っかかるようなイメージです。
int tmpx = 0;
while (ProcessMessage() == 0 && CheckHitKey(KEY_INPUT_ESCAPE) == 0) {
if (GetWindowUserCloseFlag(TRUE)) break;
ClearDrawScreen();
tmpx = (tmpx+2)%640;
DrawBox(tmpx, 0, tmpx+30, 480, GetColor(255, 0, 0), 1);
WaitVSync(1);
ScreenFlip();
}
このコードでは確認出来ませんでしたが,
実際に作ろうとしているプログラムでは, WaitVSync(1); を ScreenFlip(); の後に書くことで
カクつきは軽減 (もしくは無くなっている?) されているように感じました。
よろしくお願いします。