トップページ > 記事閲覧
ScreenFlipとGPU使用率について
名前:たろう 日時: 2018/06/24 17:36

いつもすみません、たろうです またすみません、説明が難しいのですが、 visual studio 2015の「デバッグ無しで診断ツールを開始」をするとゲームを起動しながらCPU&GPU使用率の変遷が見られるのですが、 この機能を使いながら作ったゲームを起動(FPS60)して、同時にタスクマネージャー(※win 10)を起動すると ツールの表示及びタスクマネージャーの数値ともにGPU使用率が15パーセントほどになります。 それで、スペックの低いPCでも起動できるようにFPSを15でも起動できる仕組みを作り 4回に1回のみゲーム内の各描画とScreenFlip()を行うように出来る仕組みを組み込みました。 それで前述のツールのGPU使用率及びタスクマネージャーのGPU使用率ともに5%ほどになって安定するのですが(何度試しても安定します) ここで不思議なのは、前述のツールを使わず、タスクマネージャーのみで、普通にデバッグ無しで起動や、吐き出したexeでゲームを起動すると GPU使用率がどんどん上がって、一分弱で50%以上になります。ただここで、FPSを60にもどすと、15%ほどに戻ります。 そこでFPSを60のまま、ゲーム内の描画もClearDrawScreenも毎回行い、 ScreenFlip()だけ4回に1回だけ呼び出した所、やはり「デバッグ無しで診断ツールを開始」を使用せず起動すると タスクマネージャーのGPU使用率の表示が50%以上になりました。 というわけでまとめますと 「デバッグ無しで診断ツールを開始」を使用せず 「ScreenFlip()を秒間15回しか呼ばない」場合にこのような現象がおきているのですが なぜ診断ツールを起動しているとちゃんとGPU使用率が低いままで維持されるのか、関連性も見当もつきません。 ですが何度試してもこの結果が出るので困っています。 DXライブラリはホームページにある最新のもので試しました おいそがしいところすみませんが、アドバイスを頂けますでしょうか? よろしくお願い致しますm(_ _)m
メンテ

Page: 1 |

Re: ScreenFlipとGPU使用率について ( No.1 )
名前:管理人 日時:2018/06/25 01:46

うーん、すみません、現時点では何とも申し上げられません 診断ツールを起動している場合のみGPU使用率が下がるのだとしますと、 タスクマネージャのGPU使用率の表示に何か不具合があるのかもしれません 後は『スペックの低いPCでも起動できるようにFPSを15でも起動できる仕組みを作り』の実装の仕方に 何か原因があるのかもしれません 手元で現象を確認できれば原因を調べることができるかもしれませんので、もし可能でしたら ご製作中のゲームをメールでこちら BQE00322(あっとまーく)nifty.com ( (あっとまーく)を@に置き換えてください ) まで送っていただけないでしょうか? m(_ _)m ( ただ、こちらのメールアドレスには 10MB 程度までの容量しか送れないので、もしそれ以上の容量でしたら、  どこかのアップローダーにパスワードつきでアップしていただいて、上記のメールにダウンロード用URLと  ダウンロード用パスワードを送ってください m(_ _;m )
メンテ
Re: ScreenFlipとGPU使用率について ( No.2 )
名前:たろう 日時:2018/06/25 04:39

いつもすみませんたろうです。 以下のプログラムで再現できました。 画像は以下のものを使いました。 ttp://fast-uploader.com/file/7085422611385/ タブを押すたびにFPSが下がる仕組みです。 左上に0が表示されたら60で3で15になります。 「デバッグ無しで診断ツールを開始」を使用中だと 3の時「タスクマネージャー」のGPU使用率が下がるのに 普通にデバッグ無しで起動などではGPU使用率が下がるどころか0のときより高くなります。 ※ただし、初めは「デバッグ無しで診断ツールを開始」を使用したときと同様に低くなります。 それが一分弱すると急に高くなります。ツール使用中だと時間が経ってもずっと低いままです。 ※診断ツールのGPU使用率ではなく、win10付属の「タスクマネージャー」に表示されるGPU使用率を比較しています。 診断ツールを使用中は「タスクマネージャー」のGPU使用率は診断ツールに表示されるGPU使用率と揃います お忙しいところすみません。よろしくお願い致しますm(_ _)m -------------------------------------------------------------------------- #include "DxLib.h" #define FM初(文) static int 初=1;if(初){初=0;文} #define FMfor(値) for(int i=0;i<値;i++) #define DX背幕 SetDrawScreen( DX_SCREEN_BACK ); #define DX換混 SetDrawBlendMode #define PMAL DX_BLENDMODE_PMA_ALPHA #define DX幕消 ClearDrawScreen() char Key[256]; int 画01; int gAFPS入切=0; int gAFPS種類=0;// 0:60 1:30 2:20 int timer=0; int DX尻01() { static int 時=0;int 間=0; FM初(時=GetNowCount();); static int ii=0; if(ii==0){ScreenFlip();} 間 = GetNowCount()-時; if(間 < 16){ WaitTimer((int)(16-間)); } 時 = GetNowCount(); if(ProcessMessage()==-1 || DX幕消==-1){return 1;} ii++;if(ii>gAFPS種類){ii=0;gAFPS入切=1;}else{gAFPS入切=0;} return 0; } int DX頭01(){ if(GetHitKeyStateAll( Key )==-1 || (Key[KEY_INPUT_ESCAPE])){return 0;} return 1;} int WINAPI _tWinMain( HINSTANCE, HINSTANCE, LPTSTR, int ) { SetGraphMode(1920,1080,16); ChangeWindowMode(TRUE); SetWindowSizeChangeEnableFlag( FALSE ) ; SetUseDirectInputFlag( TRUE ) ; SetAlwaysRunFlag(TRUE); if(DxLib_Init()==-1)return -1; WaitTimer(10) ; SetMouseDispFlag(TRUE) ; SetDrawMode( DX_DRAWMODE_BILINEAR ) ; SetUsePremulAlphaConvertLoad( TRUE ) ; SetFontCacheUsePremulAlphaFlag( TRUE ) ; DX換混( PMAL, 255 ) ; WaitTimer(10) ; SetCreateSoundDataType( DX_SOUNDDATATYPE_MEMNOPRESS ) ; DX背幕 ; UnregisterTouchWindow(GetMainWindowHandle()); 画01= LoadGraph( _T("4100x4100.png") ) ; while(DX頭01()) { if(gAFPS入切) { FMfor(20){DrawRotaGraph2F( 0, 0, 0, 0, 1, 0, 画01 , TRUE, FALSE); } DrawFormatString( 0 , 0 , GetColor( 255 , 255 , 255 ) ,_T("%d") , gAFPS種類 ) ; } timer++; if(timer>60&&Key[KEY_INPUT_TAB]){gAFPS種類++;if(gAFPS種類>3)gAFPS種類=0;timer=0;} if(DX尻01()){return 0;} } DxLib_End() ; return 0 ; }
メンテ
Re: ScreenFlipとGPU使用率について ( No.3 )
名前:管理人 日時:2018/06/26 01:00

再現用のサンプルを載せていただきありがとうございます 手元のWin10環境で試してみましたが、『デバッグ無しで診断ツールを開始』で診断ツールを起動した状態の場合も、 診断ツール無しで普通に『デバッグ無しで起動』した場合も、FPS15のときのタスクマネージャーのGPU使用率は 何分経過しても63%程度で安定していました プログラムを拝見する限りでは、ただ待っているだけで急にGPU使用率が上がる原因となりそうな所もありませんので、 原因は分かりませんがDXライブラリやたろうさんが組まれたプログラムに因る現象ではなく、お試しの環境に依存した 現象の可能性が高いと思います
メンテ
Re: ScreenFlipとGPU使用率について ( No.4 )
名前:たろう 日時:2018/06/26 01:24

ありがとうございます。たろうです お忙しい中ご確認いただきありがとうございました。 原因は分かりませんが、確かに環境に由来するものである可能性が高いかもしれません。 一点だけお聞きしたいのですが、FPS60のときもGPU使用率は63%前後だったでしょうか? FPS15だと、かなり軽くなるはずなので63%は高すぎる気がします。 もしどちらにしても63%ほどだったとすれば、そもそもタスクマネージャーのGPU使用率は 正確な値が出ないものなのかもしれません。 よろしくお願い致しますm(_ _)m
メンテ
Re: ScreenFlipとGPU使用率について ( No.5 )
名前:たろう(解決) 日時:2018/06/26 01:37

すみません、よく考えたら「デバッグ無しで診断ツールを開始」でも63%ということは タスクマネージャーは関係なしに、 パソコンのスペック的に妥当な数値ということになりますね。 とりあえずゲームを改造して、動作が重い時だけ自動でフレームを飛ばす機能をつけた見た所 手持ちの低スペックPCで、自作のゲームを動かせるようになりましたので、このPCを元に 動作に必要なスペックを提出することができそうです。 正確な原因は分かりませんが、環境由来の謎現象である可能性が高いので、解決をつけさせていただきます。 お忙しいところお手数をおかけいたしました。ありがとうございました。
メンテ
Re: ScreenFlipとGPU使用率について ( No.6 )
名前:管理人(解決) 日時:2018/06/26 01:52

解決とされていますが一応ご返信を・・・ FPS60のときはGPU使用率は100%です なのでFPS60設定のときは実際には60FPSは出ておらず、実測では26FPSでした FPS30設定のときもGPU使用率は100%で実測では25FPSでした 手元のWin10環境であるSurfaceでは26FPSが限界のようです
メンテ
Re: ScreenFlipとGPU使用率について ( No.7 )
名前:たろう(解決) 日時:2018/06/26 02:14

ありがとうございます そうなりますともう完全に私の環境由来ですね。 セキュリティーソフトを止めたり、いろいろやったのですが 結局どうやっても謎現象が発生するので、この件は諦めるほか無いようです。 ゲーム制作は、そういうのが多くて本当に辛いです^^; 結果的にまた、DXライブラリと関係のない所で お手数をおかけしてしまいました。 すみませんm(_ _)m
メンテ

Page: 1 |

題名
名前
コメント
パスワード (記事メンテ時に使用)

   クッキー保存