動画作成ツール「Crystel Engine」ブログ

動画作成ツール「Crystel Engine」の開発日誌です。良かったら「CE」と略して下さい。現在はMAD動画を作るためのツールとして稼動中。MADデビューしたい方は、ぜひどうぞ!ロマンはどこだ!?を胸に日々開発中

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

PageTop

フレームレートが著しく遅延を起きてしまうバグを潰し

バグで困ったので・・・

開発関係を書くのはひさしぶり。
同じような事で困っている人がいればなぁ~自分も苦しんだので書いてみようと思いました。

64ビット環境やWindow7環境を整えたので、それ用にコンパイルしてみたら
まともにフレームレートが出なくて困りました。

ソースは、こんな感じです。

while( msg.message!=WM_QUIT )
 {
  if( PeekMessage( &msg, NULL, 0U, 0U, PM_REMOVE ) )
  {
   if(!m_pd3dDev->Run(fps)){
    return false;
   }
  }
  Sleep(1);
}

64ビット環境に持っていった所、フレームレートが急激に落ちました。
理由がわからん!と悩み、色々な部分で処理時間の計測を取りました。

問題は・・・

Sleep(1)

こいつが犯人でした。1mmsec止まってほしいのに、16mmsec止まっていました。
もっと、わけがわからないのは、FireFoxを立ち上げていると、問題が起きなくなりました。

まさか、1mmsecと指定している所に16mmsecが経過しているとは思わなく、
他を疑っていたので、問題の解決に苦労をしました。

不思議すぎて、ツイッター上で発言してたら、みんなが助けてくれました。ありがたやー

どうやら
timeBeginPeriod(1);
この関数を呼んで、Sleep関数の精度をあげなければいけないようです。

FPS固定のプログラムを書いていて、フレームレートが出ない!
ような事があったら、
Sleep関数の精度を疑ってみれば良いかもしれません。

いつか、誰かが同じ問題でここにたどり着いてもらえれば、幸いです。

PageTop

コメント


管理者にだけ表示を許可する
 

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。