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
|