トップページ > 過去ログ > 記事閲覧
垂直同期について
名前:タカトゥ 日時: 2011/09/23 20:36

DxLib_Init();でDXライブラリの初期化を行う前にSetWaitVSyncFlag( FALSE );で垂直同期をとらない設定にすると その後に垂直同期をとる設定にしてもうまくいかないようです。SetWaitVSyncFlag( FALSE );を初期化後に移動させると正常に動作します。 これはDXライブラリの仕様でしょうか。そこまで重要なことではないと思いましたが念の為に報告させて頂きます。 環境はWin7 64bit VC2010です。 #include "DxLib.h" int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { short int fps_count = 0;//60フレームカウント LONGLONG fps_t = 0;//時間取得 int fps_num = 0;//fpsの数値 ChangeWindowMode(TRUE); SetWaitVSyncFlag( FALSE );//垂直同期をとらない // DXライブラリの初期化 if( DxLib_Init() < 0 ) { // エラーが発生したら直ちに終了 return -1 ; } //ここに移動させると正常に動作する。 SetWaitVSyncFlag( TRUE );//垂直同期をとる SetDrawScreen( DX_SCREEN_BACK ); while( ScreenFlip()==0 && ProcessMessage()==0 && ClearDrawScreen()==0 ){ if(fps_count % 60 == 0){//fps計算 if(fps_count) fps_num = int(GetNowHiPerformanceCount() - fps_t) / 60; fps_t = GetNowHiPerformanceCount(); fps_count = 0; } fps_count++; if(fps_num)//fps描画 DrawFormatString( 0 , 0 , GetColor(255,255,255) , "%.2ffps" , 1000000.00/(double)fps_num ); } // DXライブラリの後始末 DxLib_End() ; // ソフトの終了 return 0 ; }

Page: 1 |

Re: 垂直同期について ( No.1 )
名前:タカトゥ 日時:2011/09/23 22:42

申し訳ありません。 int SetWaitVSyncFlag( int Flag ); 自体がDxLib_Init();の前でないと効果がなかったようですね。 ちなみにこれは仕様なのでしょうか?
Re: 垂直同期について ( No.2 )
名前:管理人 日時:2011/10/02 23:33

はい、仕様となります すいません、Ver3.0以降から DirectX9 の仕様に引きずられてこのようになったのですが、 そのとき追加した注意事項を一時期自前の VSYNC処理に変えたときに注意事項部分を コメントアウトしてしまっていました( 環境によって自前 VSYNC処理が正常に動作 しないことが分かったので、結局 DirectX9 標準の VSYNC処理に戻しました ) 現在はコメントアウトを外しました http://homepage2.nifty.com/natupaji/DxLib/function/dxfunc_other.html#R15N5
Re: 垂直同期について ( No.3 )
名前:タカトゥ(解決) 日時:2011/10/03 22:45

そうでしたか どうもありがとうございました

Page: 1 |