くだすれDirectX(超初心者用)

このエントリーをはてなブックマークに追加
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待たずに制御を戻したりするんでしょうか?
126125 :2006/03/10(金) 14:30:13
書き忘れ
Sleep(1)の精度に関してはキニシナイ方向で
127デフォルトの名無しさん:2006/03/10(金) 14:30:27
128125: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
質問読んでないだろ