125 :
デフォルトの名無しさん:
悩んだ挙句にここで質問します
数々のサンプルで頻繁に使われる固定フレームレートのゲーム用のメッセージループ
(timeBeginPeriodで精度上げてPeekMessage使ってtimeGetTimeで空ループぶん回し時間調整。CPU使用率100%)
とDirect3D9のフルスクリーンモードについてなのですが…
この板内のどこぞの過去ログにCPU使用率を下げるためにtimeGetTime()空ループに
Sleep(1)を挟むと良いという話があったのでやってみたところ、確かに使用率は
下げつつそこそこの精度で固定フレームレートを実現できました。
…Windowモードだけでは。
D3D9でフルスクリーンモードにすると何故かタスクマネージャのCPU使用率が100%に張り付きます。
一応動作中にFullScreen表示とWindows表示を切り替えられるように書いていますが、
全く同じ処理をしてるのに、FullScreenにすると100%、Window表示にすると手持ちPCだと
8%前後になる状況です。
ぶっちゃけ原因が判りません。 orz
FullScreenにするとSleepが1ms待たずに制御を戻したりするんでしょうか?
126 :
125 :2006/03/10(金) 14:30:13
書き忘れ
Sleep(1)の精度に関してはキニシナイ方向で
128 :
125:2006/03/10(金) 15:40:37
切り分けてみた
一切描画しない完全空ループ 0〜1%
WindowモードでPresent()だけ回す 8%前後
FullScreenでPresent()だけ回す 100%張り付き
どうみてもPresentに渡すパラメータが問題のようです。
本当にありが(ry
…でもPresent(NULL,NULL,NULL,NULL);じゃ駄目なんだろうか?
それにWindowモード時でもPresent()だけで8%ってのも変…
>127
質問読んでないだろ