タイマーの作り方について・・・
Posted: 2011年5月09日(月) 23:55
タイマーをつくろうと思うのですがどのように作れば良いのかわからず困っております・・・
どなたかわかる方がいらっしゃったら教えていただきたいのですが・・・
よろしくお願いします
どなたかわかる方がいらっしゃったら教えていただきたいのですが・・・
よろしくお願いします
タイマーと言っても色々な種類があるのでどういったものかを明確にしていただかないと、答えようがないので、もう少々詳しく教えてくださいね。ノノノ さんが書きました:タイマーをつくろうと思うのですがどのように作れば良いのかわからず困っております・・・
struct TIMER
{
void Start()
{
::QueryPerformanceFrequency( &Freq );
::QueryPerformanceCounter( &Begin );
}
void End()
{
::QueryPerformanceCounter( &End );
}
// ミリ秒で取得
float GetTimeMilliSeconds()
{
return static_cast< float>( End.QuadPart - Begin.QuadPart ) * 1000.0f / static_cast< float>( Freq.QuadPart );
}
LARGE_INTEGER Begin;
LARGE_INTEGER End;
LARGE_INTEGER Freq;
};
TIMER Timer;
while( 1 )
{
// timer start
Timer.Start();
/*
計りたい処理
*/
Timer.End();
printf( "%f\n", Timer.GetTimeMilliSeconds() );
}
int FrameCnt = 0;
while( 1 )
{
int WaitBeginTime = ::timeGetTime();
if( FrameCnt == 60 )
{
printf( "60fpsにあわせているので、60フレに達したとき約一秒\n" );
FrameCnt = 0;
}
else
{
FrameCnt += 1;
}
/*
Wait、この場合は60fps
*/
int DiffTime = ::timeGetTime() - WaitBeginTime;
long WaitTime = ( 1000 / 60 ) - DiffTime;
if( 0 < WaitTime )
{
::Sleep( WaitTime );
}
}
前回具体的な質問をせずにいたので・・・ノノノ さんが書きました:タイマーをつくろうと思うのですがどのように作れば良いのかわからず困っております・・・
どなたかわかる方がいらっしゃったら教えていただきたいのですが・・・
よろしくお願いします
一応ゲーム作る過程で勉強したのでDXLibraryが一番身近ですsoftya(ソフト屋) さんが書きました:C言語を使うなら幾つか提案があります。
・コンソールアプリとして作る。beep音ぐらいしか使えない。
・Win32APIを使いGUIアプリとして作成する。かなり勉強が必要。
・DXライブラリを使いゲーム的な操作方法のタイマを作成する。Win32APIよりは楽。
・C言語をやめてjavascriptなどでブラウザで動くものを作る。 ← 比較的難度は低いです。
さて、どれにしましょう?
それであれば、ノノノ さんが書きました:一応ゲーム作る過程で勉強したのでDXLibraryが一番身近です
なので出来ればDXLibraryで作れればなぁと思います。
ウィンドウがフォーカスから外れるとはどういう意味ですか?softya(ソフト屋) さんが書きました: なお、ウィンドウがフォーカスから外れるとタイマーが停止するのでSetAlwaysRunFlag(TRUE);で動き続けるよう初期化してください。
DXライブラリのプログラムを動かしている最中に別のウィンドウを使いだす(例えばブラウザなど)とDXライブラリのプログラムは一時停止します。ノノノ さんが書きました:ウィンドウがフォーカスから外れるとはどういう意味ですか?softya(ソフト屋) さんが書きました: なお、ウィンドウがフォーカスから外れるとタイマーが停止するのでSetAlwaysRunFlag(TRUE);で動き続けるよう初期化してください。
よろしくおねがいします。