画像の書き出し?がやたらと遅いのですが対処法などはないでしょうか?

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
名無

画像の書き出し?がやたらと遅いのですが対処法などはないでしょうか?

#1

投稿記事 by 名無 » 11年前

コードは以下の通りです。

コード:

#include "DxLib.h"

int WINAPI WinMain(HINSTANCE,HINSTANCE,LPSTR,int){
ChangeWindowMode(TRUE),DxLib_Init(),SetDrawScreen(DX_SCREEN_BACK);
	
        int music=LoadSoundMem("ファイル//music.mp3");
	int picture=LoadGraph("ファイル//picture.bmp");
	int count=0;
	int gray=GetColor(128,128,128);
	
	PlaySoundMem(music,DX_PLAYTYPE_BACK);


	while( ScreenFlip()==0 && ProcessMessage()==0 && ClearDrawScreen()==0 ){

		DrawGraph(0,0,picture,FALSE);

		for(int i=0;i<100;i++)DrawLine(241,460-225*i+count*225/60,640,460-225*i+count*225/60,gray);
		
		count++;

		if(CheckHitKey(KEY_INPUT_ESCAPE)==1)break;

	}

	DxLib_End(); 
	return 0;
}
一度、PlaySoundMemの前にDrawGraphを書いて実行したのですがそれでも音が先に鳴ってタイムラグがあってから画像が表示されました。
メモリも足りているとは思うのですが…
DrawLineの方も表示が遅いです

アバター
みけCAT
記事: 6734
登録日時: 15年前
住所: 千葉県
連絡を取る:

Re: 画像の書き出し?がやたらと遅いのですが対処法などはないでしょうか?

#2

投稿記事 by みけCAT » 11年前

このようにしたら実行結果はどうなりますか?

コード:

#include "DxLib.h"

int WINAPI WinMain(HINSTANCE,HINSTANCE,LPSTR,int){
ChangeWindowMode(TRUE),DxLib_Init(),SetDrawScreen(DX_SCREEN_BACK);
	
        int music=LoadSoundMem("ファイル//music.mp3");
	int picture=LoadGraph("ファイル//picture.bmp");
	int count=0;
	int gray=GetColor(128,128,128);
	
	PlaySoundMem(music,DX_PLAYTYPE_BACK);


	do{

		DrawGraph(0,0,picture,FALSE);

		for(int i=0;i<100;i++)DrawLine(241,460-225*i+count*225/60,640,460-225*i+count*225/60,gray);
		
		count++;

		if(CheckHitKey(KEY_INPUT_ESCAPE)==1)break;

	}while( ScreenFlip()==0 && ProcessMessage()==0 && ClearDrawScreen()==0 );

	DxLib_End(); 
	return 0;
}
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

名無

Re: 画像の書き出し?がやたらと遅いのですが対処法などはないでしょうか?

#3

投稿記事 by 名無 » 11年前

>>2
do~whileも試したけど無理でした
相変わらず0.5秒程度はずれてます…

アバター
みけCAT
記事: 6734
登録日時: 15年前
住所: 千葉県
連絡を取る:

Re: 画像の書き出し?がやたらと遅いのですが対処法などはないでしょうか?

#4

投稿記事 by みけCAT » 11年前

画像の大きさはどのくらいですか?
DXライブラリを使用しているなら、念のためLog.txtの内容を貼っていただけますか?
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

名無

Re: 画像の書き出し?がやたらと遅いのですが対処法などはないでしょうか?

#5

投稿記事 by 名無 » 11年前

画像は640*480で、黒ベースに何本か単色の線が入っているだけのものです。

logは以下のようになっていました。


1:システムの情報を出力します
6: DXライブラリ Ver3.11f
10: 論理プロセッサの数 : 2
13: OS Windows7 ( Build 7601 Service Pack 1 )
289: CPU動作速度:大体2.52GHz
292: MMX命令を使用します
303: SSE命令が使用可能です
304: SSE2命令が使用可能です
306: CPUベンダ:GenuineIntel
316: CPU名:Intel(R) Core(TM)2 Duo CPU P8700 @ 2.53GHz
318:COMの初期化... 成功しました
336:メモリ総量:3004.86MB 空きメモリ領域:1474.85MB
338:タイマーの精度を検査します
340:精度結果 更新回数 マルチメディアタイマー:0 パフォーマンスカウンター:60
341: パフォーマンスカウンターを使用します タイマー精度 : 2468.095000 KHz
350: ソフトの二重起動検査... 二重起動はされていませんでした
353:ウインドウクラスを登録します... 登録に成功しました
355:ウインドウモード起動用のウインドウを作成します
431:ウインドウの作成に成功しました
435:ウインドウを表示します
603:IMEを無効にしました
605:ウインドウスタイルをウインドウモード用に変更します... 完了
633:DirectInput関係初期化処理
639: XInput DLL の読み込み中... 成功
742: DirectInput7 の取得中... 成功
1537: 引き続き初期化処理... 初期化成功
1543: ジョイパッドの初期化...
1548: ジョイパッドの初期化は正常に終了しました
1550: マウスデバイスの初期化... 初期化成功
1553: キーボードデバイスの初期化... 初期化成功
1557:DirectInput 関連の初期化は正常に終了しました
1567:XAudio2 の初期化を行います
1569: XAudio2 インターフェースの取得を行います.... 成功 Ver2.7

1580: 引き続きインターフェースの初期化処理... 成功
1583: X3DAudio.DLL の読み込み中... 失敗、X3DAudio、XAudio2は使用しません
1587: DirectSound の初期化を行います
1589: DirectSound インターフェースの取得を行います.... 成功
1606: 引き続きインターフェースの初期化処理... 成功
1711: DirectSound デバイスを列挙します
1719: モジュール名: ドライバ記述:プライマリ サウンド ドライバー
1721: モジュール名:{0.0.0.00000000}.{a24af45c-195c-4d21-bbe9-158e5f64f782} ドライバ記述:スピーカー (Realtek High Definition Audio)
1723: 最大サンプリングレート:200.00KHz 最小サンプリングレート:0.10KHz
1724: 総サウンドメモリ領域:0.00KB 空きサウンドメモリ領域:0.00KB

1726: 利用可能サンプリング精度
1729: プライマリ 16bit = OK 8bit = OK
1731: セカンダリ 16bit = OK 8bit = OK

1733: 利用可能チャンネル
1734: プライマリ MONO = OK STEREO = OK
1736: セカンダリ MONO = OK STEREO = OK

1739: DirectSound の初期化は正常に終了しました
1754: DirectDraw オブジェクトの取得を行います.... 成功
1776: 引き続き初期化処理... 初期化に成功しました
1873: IDirect3D9Ex オブジェクトを取得します.... 成功
1878: IDirect3DDevice9Ex オブジェクトを取得します.... ハードウエア頂点演算を使用します
2215: 成功
2217: Driver:igdumdx32.dll Description:Mobile Intel(R) 4 Series Express Chipset Family
2219: 画面のフォーマットは D3DFMT_X8R8G8B8 です
2221: 16bit Zバッファフォーマットは D3DFMT_D16 です
2223: 24bit Zバッファフォーマットは D3DFMT_D24X8 です
2224: 32bit Zバッファフォーマットは D3DFMT_D24X8 です
2226: 16bit カラーフォーマットは D3DFMT_R5G6B5 です
2228: 32bit カラーフォーマットは D3DFMT_X8R8G8B8 です
2230: アルファ付き 16bit カラーフォーマットは D3DFMT_A4R4G4B4 です
2231: アルファ付き 32bit カラーフォーマットは D3DFMT_A8R8G8B8 です
2233: アルファテスト用 16bit カラーフォーマットは D3DFMT_A1R5G5B5 です
2235: アルファテスト用 32bit カラーフォーマットは D3DFMT_A8R8G8B8 です
2237: DXT1テクスチャフォーマットはD3DFMT_DXT1 です
2239: DXT2テクスチャフォーマットはD3DFMT_DXT2 です
2241: DXT3テクスチャフォーマットはD3DFMT_DXT3 です
2243: DXT4テクスチャフォーマットはD3DFMT_DXT4 です
2245: DXT5テクスチャフォーマットはD3DFMT_DXT5 です
2247: 描画用 16bit カラーフォーマットは D3DFMT_R5G6B5 です
2249: 描画用 32bit カラーフォーマットは D3DFMT_X8R8G8B8 です
2250: 描画用アルファ付き 32bit カラーフォーマットは D3DFMT_A8R8G8B8 です
2252: 描画用ABGR整数16ビット型カラーフォーマットは D3DFMT_A16B16G16R16 です
2254: 描画用ABGR浮動小数点16ビット型カラーフォーマットは D3DFMT_A16B16G16R16F です
2256: 描画用ABGR浮動小数点32ビット型カラーフォーマットは D3DFMT_A32B32G32R32F です
2257: 描画用1チャンネル整数8ビット型カラーフォーマットは D3DFMT_A8R8G8B8 です
2259: 描画用1チャンネル整数16ビット型カラーフォーマットは D3DFMT_G16R16 です
2261: 描画用1チャンネル浮動小数点16ビット型カラーフォーマットは D3DFMT_R16F です
2263: 描画用1チャンネル浮動小数点32ビット型カラーフォーマットは D3DFMT_R32F です
2264: 描画用2チャンネル整数8ビット型カラーフォーマットは D3DFMT_A8B8G8R8 です
2267: 描画用2チャンネル整数16ビット型カラーフォーマットは D3DFMT_G16R16 です
2268: 描画用2チャンネル浮動小数点16ビット型カラーフォーマットは D3DFMT_G16R16F です
2270: 描画用2チャンネル浮動小数点32ビット型カラーフォーマットは D3DFMT_G32R32F です
2272: 一度に描画できるプリミティブの最大数:1048575
2274: 対応している最大頂点インデックス:16777215
2276: 同時にレンダリングできるバッファの数:4
2277: 最大テクスチャサイズ 幅:4096 高さ:4096
2279: テクスチャステージテンポラリレジスタ:使用可
2280: 減算合成のハードウェア対応:ネイティブ
2282: ハードウェア頂点シェーダーバージョンコード:300
2284: エミュレーション頂点シェーダーバージョンコード:エミュレーション無し
2286: ピクセルシェーダーバージョンコード:300
2332: バックバッファロック転送の時間:2831nsec 一時的な描画可能バッファを使用した転送の時間:1317nsec
2334: バックバッファロックを使用しません
2336: Zバッファを作成します.... 成功
2517: プログラマブルシェーダーを使用します

2618: フォントの初期化を行います
2624: フォントの初期化は正常に終了しました
3311: 文字コードバッファの初期化を行います... 完了しました
6681: ウインドウを閉じようとしています
6711: ウインドウが破棄されようとしています
6718: ソフトを終了する準備が整いました
6735: フォントの初期化を行います
6740: フォントの初期化は正常に終了しました
6770: Direct3DDevice9 の解放 2
6834: Direct3D9 DLL の解放 1
6843: DirectInput 関連の終了処理... 完了
6886: DirectSound の終了処理は正常に終了しました
6922:
6924: Alloc memory dump
6927: Total size:0(0.000kb) Alloc num:0
6928:

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: 画像の書き出し?がやたらと遅いのですが対処法などはないでしょうか?

#6

投稿記事 by softya(ソフト屋) » 11年前

こちらにある素材で動かしてみたところ問題なく動いていると思います。特に音と画の遅延もありません。
素材を変えても同じことが起こりますでしょうか?
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

名無

Re: 画像の書き出し?がやたらと遅いのですが対処法などはないでしょうか?

#7

投稿記事 by 名無 » 11年前

音楽、画像どちらも変えてみましたがまだずれてます。
あと、プログラムを実行する際のロードも異様に長いです

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: 画像の書き出し?がやたらと遅いのですが対処法などはないでしょうか?

#8

投稿記事 by softya(ソフト屋) » 11年前

私のところと初期化を比較してみました。
名無さん。 2517: プログラマブルシェーダーを使用します
 ↓
私。1083:プログラマブルシェーダーを使用します
表示されている数値は時間(ms)で確かに遅いですね。
ウィルス対策ソフトとかなにか邪魔していませんか?
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

名無

Re: 画像の書き出し?がやたらと遅いのですが対処法などはないでしょうか?

#9

投稿記事 by 名無 » 11年前

ウイルスソフトはウイルスバスタークラウドのみです
邪魔しているかどうかはどう確かめればよいのでしょうか?

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: 画像の書き出し?がやたらと遅いのですが対処法などはないでしょうか?

#10

投稿記事 by softya(ソフト屋) » 11年前

ネット回線と切り離して、ウイルスバスタークラウドを停止させてみるという手があります。一時停止の機能はあると思いますよ。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

名無

Re: 画像の書き出し?がやたらと遅いのですが対処法などはないでしょうか?

#11

投稿記事 by 名無 » 11年前

ウイルスバスターの機能を一時停止してみましたが画像の表示は遅いままでした

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: 画像の書き出し?がやたらと遅いのですが対処法などはないでしょうか?

#12

投稿記事 by softya(ソフト屋) » 11年前

あとはパソコンのパワー不足とか、メモリが足らないとか、重いソフトが裏で走っているとかですが、CPUの使用率は常に高い状態ですか?
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

名無

Re: 画像の書き出し?がやたらと遅いのですが対処法などはないでしょうか?

#13

投稿記事 by 名無 » 11年前

CPU使用率はちょくちょく高くなりますが基本的には20%は下回ってると思います

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: 画像の書き出し?がやたらと遅いのですが対処法などはないでしょうか?

#14

投稿記事 by softya(ソフト屋) » 11年前

全体的になにか遅いですね。もう少し何かありそうか考えてみます。

ちなみに私のlogです。
0:システムの情報を出力します
3: DXライブラリ Ver3.10c
6: 論理プロセッサの数 : 4
9: OS Windows7 ( Build 7601 Service Pack 1 )
119: CPU動作速度:大体2.81GHz
122: MMX命令を使用します
124: SSE命令が使用可能です
127: SSE2命令が使用可能です
129: CPUベンダ:AuthenticAMD
141: CPU名:AMD Athlon(tm) II X4 630 Processor
144:COMの初期化... 成功しました
149:メモリ総量:12287.24MB 空きメモリ領域:5616.05MB
157:タイマーの精度を検査します
159:精度結果 更新回数 マルチメディアタイマー:0 パフォーマンスカウンター:60
162: パフォーマンスカウンターを使用します タイマー精度 : 2728.417000 KHz
167: ソフトの二重起動検査... 二重起動はされていませんでした
173:ウインドウクラスを登録します... 登録に成功しました
178:ウインドウモード起動用のウインドウを作成します
225:ウインドウの作成に成功しました
227:ウインドウを表示します
257:IMEを無効にしました
263:ウインドウスタイルをウインドウモード用に変更します... 完了
303:DirectInput関係初期化処理
305: XInput DLL の読み込み中... 成功
327: DirectInput7 の取得中... 成功
368: 引き続き初期化処理... 初期化成功
374: ジョイパッドの初期化...
392: ジョイパッドの初期化は正常に終了しました
396: マウスデバイスの初期化... 初期化成功
406: キーボードデバイスの初期化... 初期化成功
416:DirectInput 関連の初期化は正常に終了しました
424:XAudio2 の初期化を行います
429: XAudio2 インターフェースの取得を行います.... 成功 Ver2.7

442: 引き続きインターフェースの初期化処理... 成功
452: X3DAudio.DLL の読み込み中... 成功
514: デバイス名:スピーカー (3- USB AUDIO DAC)
517: チャンネル数:2
520: ビット精度:16bit
523: サンプリングレート:44100Hz
526:XAudio2 の初期化は正常に終了しました
545:DirectDraw オブジェクトの取得を行います.... 成功
563:引き続き初期化処理... 初期化に成功しました
613:IDirect3D9Ex オブジェクトを取得します.... 成功
626:IDirect3DDevice9Ex オブジェクトを取得します.... ハードウエア頂点演算を使用します
911:成功
915:Driver:nvd3dum.dll Description:NVIDIA GeForce GTS 250
918:画面のフォーマットは D3DFMT_X8R8G8B8 です
920:Zバッファのフォーマットは D3DFMT_D16 です
923:16bit カラーフォーマットは D3DFMT_R5G6B5 です
925:32bit カラーフォーマットは D3DFMT_X8R8G8B8 です
928:アルファ付き 16bit カラーフォーマットは D3DFMT_A4R4G4B4 です
930:アルファ付き 32bit カラーフォーマットは D3DFMT_A8R8G8B8 です
932:アルファテスト用 16bit カラーフォーマットは D3DFMT_A1R5G5B5 です
934:アルファテスト用 32bit カラーフォーマットは D3DFMT_A8R8G8B8 です
936:DXT1テクスチャフォーマットはD3DFMT_DXT1 です
939:DXT2テクスチャフォーマットはD3DFMT_DXT2 です
941:DXT3テクスチャフォーマットはD3DFMT_DXT3 です
943:DXT4テクスチャフォーマットはD3DFMT_DXT4 です
946:DXT5テクスチャフォーマットはD3DFMT_DXT5 です
949:描画用 16bit カラーフォーマットは D3DFMT_R5G5B5 です
951:描画用 32bit カラーフォーマットは D3DFMT_X8R8G8B8 です
954:描画用アルファ付き 32bit カラーフォーマットは D3DFMT_A8R8G8B8 です
956:描画用ABGR整数16ビット型カラーフォーマットは D3DFMT_A16B16G16R16 です
958:描画用ABGR浮動小数点16ビット型カラーフォーマットは D3DFMT_A16B16G16R16F です
961:描画用ABGR浮動小数点32ビット型カラーフォーマットは D3DFMT_A32B32G32R32F です
963:描画用1チャンネル整数8ビット型カラーフォーマットは D3DFMT_L8 です
966:描画用1チャンネル整数16ビット型カラーフォーマットは D3DFMT_L16 です
968:描画用1チャンネル浮動小数点16ビット型カラーフォーマットは D3DFMT_R16F です
971:描画用1チャンネル浮動小数点32ビット型カラーフォーマットは D3DFMT_R32F です
973:描画用2チャンネル整数8ビット型カラーフォーマットは D3DFMT_A8B8G8R8 です
975:描画用2チャンネル整数16ビット型カラーフォーマットは D3DFMT_G16R16 です
978:描画用2チャンネル浮動小数点16ビット型カラーフォーマットは D3DFMT_G16R16F です
980:描画用2チャンネル浮動小数点32ビット型カラーフォーマットは D3DFMT_G32R32F です
982:一度に描画できるプリミティブの最大数:8388607
984:対応している最大頂点インデックス:16777215
985:同時にレンダリングできるバッファの数:4
988:最大テクスチャサイズ 幅:8192 高さ:8192
991:テクスチャステージテンポラリレジスタ:使用可
995:減算合成のハードウェア対応:ネイティブ
1003:ハードウェア頂点シェーダーバージョンコード:300
1013:エミュレーション頂点シェーダーバージョンコード:エミュレーション無し
1020:ピクセルシェーダーバージョンコード:300
1036:バックバッファロック転送の時間:164nsec 一時的な描画可能バッファを使用した転送の時間:887nsec
1042:バックバッファロックを使用します
1048:Zバッファを作成します.... 成功
1083:プログラマブルシェーダーを使用します

1198:フォントの初期化を行います
1202:フォントの初期化は正常に終了しました
1219:文字コードバッファの初期化を行います... 完了しました
3199:ウインドウを閉じようとしています
3205:ウインドウが破棄されようとしています
3209:ソフトを終了する準備が整いました
3217:フォントの初期化を行います
3220:フォントの初期化は正常に終了しました
3227:Direct3DDevice9 の解放 2
3280:Direct3D9 DLL の解放 1
3285:DirectInput 関連の終了処理... 完了
3386:
3391:Alloc memory dump
3403: Total size:0(0.000kb) Alloc num:0
3407:
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

名無

Re: 画像の書き出し?がやたらと遅いのですが対処法などはないでしょうか?

#15

投稿記事 by 名無 » 11年前

一度パソコンを再セットアップしましたがそれでも変わりませんでした

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: 画像の書き出し?がやたらと遅いのですが対処法などはないでしょうか?

#16

投稿記事 by softya(ソフト屋) » 11年前

そうなると、あとはサウンドとディスプレイのドライバを最新にしてもらうぐらいしか残っていません。
私の2.5倍ぐらい遅いわけですが、CPUだけで見ると1.3から1.4倍ぐらいの性能差しか無いはずです。
http://maximums.gatt.nobody.jp/cpu.html
ただ、ノート用のCPUだと思いますので、何らかの性能制限機能が動作しているのかもしれません。

そういえば、こちらで配布されている四聖龍神録とかは遅くないのでしょうか?
http://dixq.net/sr/
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

milla

Re: 画像の書き出し?がやたらと遅いのですが対処法などはないでしょうか?

#17

投稿記事 by milla » 11年前

c2d世代とci世代ってかなりメモリレイテンシに差があった気がする
メモコンが内蔵されて、直結じゃなかったけ?ci世代

milla

Re: 画像の書き出し?がやたらと遅いのですが対処法などはないでしょうか?

#18

投稿記事 by milla » 11年前

ごめん、Athlonやった。
が、AMDが元々メモコン内蔵してたはずなので、早いかもしれない。
転送速度くらべないと分からんね

あと原因としてはドライブの差かなぁ

名無

Re: 画像の書き出し?がやたらと遅いのですが対処法などはないでしょうか?

#19

投稿記事 by 名無 » 11年前

四聖龍神録をとりあえず1面だけプレイしてみましたがまったく問題なかったです

milla

Re: 画像の書き出し?がやたらと遅いのですが対処法などはないでしょうか?

#20

投稿記事 by milla » 11年前

2217: Driver:igdumdx32.dll Description:Mobile Intel(R) 4 Series Express Chipset Family

Intel モバイルチップセット内蔵GMA 4500 MHD らしいです。

オンボードですね。
さらにこの状態でDrawLineを100本しています。
遅い原因はこれじゃないでしょうか?

milla

Re: 画像の書き出し?がやたらと遅いのですが対処法などはないでしょうか?

#21

投稿記事 by milla » 11年前

ちょっと日本語がおかしいですね。
DrawLineにて100本描画しています。ですね。

名無

Re: 画像の書き出し?がやたらと遅いのですが対処法などはないでしょうか?

#22

投稿記事 by 名無 » 11年前

DrawLineの処理を消して実行しましたが若干早くなったかな?ってくらいでいまだに画像の描写は遅いままです…
一応ですが、パソコンの型番はPC-LL550VJ1CBです。
モニターのドライバは汎用PnPモニターで、最新のものでした。

milla

Re: 画像の書き出し?がやたらと遅いのですが対処法などはないでしょうか?

#23

投稿記事 by milla » 11年前

グラフィック機能自体が古いだけでなく、オンボードなので根本的に遅いんです。
2009年発売のパソコンですし、IntelがCPU内臓GPUに手を出す前のものですね。
本当にウィンドウズの最低限の描画レベルにとどまってます。
ゲームなんぞ眼中にいれてないはずです。

竜神録でのFPSはいくら出てます?


milla

Re: 画像の書き出し?がやたらと遅いのですが対処法などはないでしょうか?

#25

投稿記事 by milla » 11年前

そうなると、原因は画像ファイルぐらいしかないはずです。
画像ファイルのサイズはいくつですか?

またclock()を用いて、あやしい行間の処理時間の計測をお願いします。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: 画像の書き出し?がやたらと遅いのですが対処法などはないでしょうか?

#26

投稿記事 by softya(ソフト屋) » 11年前

音が遅れる原因として、そもそも0.5秒間無音ということはないのでしょうか?
波形エディタ等でタイミングは確認されましたか?
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

milla

Re: 画像の書き出し?がやたらと遅いのですが対処法などはないでしょうか?

#27

投稿記事 by milla » 11年前

>soft屋さん
失礼。遅れるのは音ではなく、描画かと。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: 画像の書き出し?がやたらと遅いのですが対処法などはないでしょうか?

#28

投稿記事 by softya(ソフト屋) » 11年前

milla さんが書きました:>soft屋さん
失礼。遅れるのは音ではなく、描画かと。
あっと申しわけないです。
ずっと誤解していました。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

名無

Re: 画像の書き出し?がやたらと遅いのですが対処法などはないでしょうか?

#29

投稿記事 by 名無 » 11年前

画像形式はPNGで12KBです
ちなみに音楽は再生と同時に音がなるよう編集してあります

名無

Re: 画像の書き出し?がやたらと遅いのですが対処法などはないでしょうか?

#30

投稿記事 by 名無 » 11年前

>またclock()を用いて、あやしい行間の処理時間の計測をお願いします。
怪しい行間とはどのあたりでしょうか?

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: 画像の書き出し?がやたらと遅いのですが対処法などはないでしょうか?

#31

投稿記事 by softya(ソフト屋) » 11年前

描画(CPU)で遅い場合、clock()で計測できないんですよね。計測出来るのはCPUの速度だけなので。
Direct3Dの初期化にも成功しているので、GPUは動作しているものと思われます。

for(int i=0;i<100;i++)DrawLine(241,460-225*i+count*225/60,640,460-225*i+count*225/60,gray);
前後で計測してみてもらえますか。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

名無

Re: 画像の書き出し?がやたらと遅いのですが対処法などはないでしょうか?

#32

投稿記事 by 名無 » 11年前

すいません、clock()を一度も使ったことがないので使い方がわかりません…
他のサイトをいくつか見てやってみたのですがうまくいかなかったのでどのようにすればよいのか教えていただけないでしょうか?

milla

Re: 画像の書き出し?がやたらと遅いのですが対処法などはないでしょうか?

#33

投稿記事 by milla » 11年前

たしかに、GPUをclockでは計測できないですね。失礼。

DirectX 描画 計測でぐぐってみたらこういうのが出てきました。
Direct3D レンダリング シーケンスの正確なプロファイリング方法の項です。
http://msdn.microsoft.com/ja-jp/library ... 85%29.aspx

流し読みしかしてないですが、これを実装すればGPUも含めて計測できそうです。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: 画像の書き出し?がやたらと遅いのですが対処法などはないでしょうか?

#34

投稿記事 by softya(ソフト屋) » 11年前

clock()ではなくtimeGetTime();で計測をお願いします。
while()直後とwhile()の{}の閉じる直前で計測してもらうと大体の情報は取れると思います。
ずっとは必要ないので開始から3フレームの情報が頂ければ。
情報は

コード:

    char str[1024];;
    sprintf(str,"while直後 %d",timeGetTime());
    OutputDebugString(str);
    
    	省略
    
    sprintf(str,"while最後 %d",timeGetTime());
    OutputDebugString(str);
    
動作確認していないのでバグが出たらお知らせください。
情報はVisualStudio側に表示されます。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

milla

Re: 画像の書き出し?がやたらと遅いのですが対処法などはないでしょうか?

#35

投稿記事 by milla » 11年前

clockがわからないなら、mmsystemのtimeGetTimeはよけいに分からないんじゃないんでしょうか?
Dxlib内でライブラリとヘッダーインクルードされてましたっけ?

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: 画像の書き出し?がやたらと遅いのですが対処法などはないでしょうか?

#36

投稿記事 by softya(ソフト屋) » 11年前

milla さんが書きました:clockがわからないなら、mmsystemのtimeGetTimeはよけいに分からないんじゃないんでしょうか?
Dxlib内でライブラリとヘッダーインクルードされてましたっけ?
またやらかしました。
GetNowCount();を使ってください。DxLibの関数です。
今日はダメかもしれません。

コード:

    char str[1024];;
    sprintf(str,"while直後 %u",GetNowCount());
    OutputDebugString(str);
    
        省略
    
    sprintf(str,"while最後 %u",GetNowCount());
    OutputDebugString(str);
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

名無

Re: 画像の書き出し?がやたらと遅いのですが対処法などはないでしょうか?

#37

投稿記事 by 名無 » 11年前

指定されたとおりにやってみたのですがうまくいかなかったので、勝手に自分なりに解釈して計ってみました。間違っている可能性大です。

コード:

 while( ScreenFlip()==0 && ProcessMessage()==0 && ClearDrawScreen()==0 ){
 
        S=GetNowCount();
		
		DrawGraph(0,0,picture,FALSE);

        for(int i=0;i<100;i++)DrawLine(241,460-225*i+count*225/60,640,460-225*i+count*225/60,gray);

        count++;
 
        if(CheckHitKey(KEY_INPUT_ESCAPE)==1)break;

		E=GetNowCount();     

		T=E-S;

		DrawFormatString(0,0,gray,"%d",T);
	}
これで計ったところ、基本0でちょっと1が混ざる?みたいな感じになりました

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: 画像の書き出し?がやたらと遅いのですが対処法などはないでしょうか?

#38

投稿記事 by softya(ソフト屋) » 11年前

それだとCPU時間の差分なので、CPUはほとんど食っていないって事ですね。
GPUはT=S-Eを測りたいので、 S=GetNowCount();直後にT=S-E;で計算してDrawFormatString(0,0,gray,"GPU %d",T);してください。
ただ、最初の1フレーム目は計算がおかしくなるので、2フレーム目からが勝負です。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: 画像の書き出し?がやたらと遅いのですが対処法などはないでしょうか?

#39

投稿記事 by softya(ソフト屋) » 11年前

ちなみに、OutputDebugStringA(str);でもダメででしょうか?
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

名無

Re: 画像の書き出し?がやたらと遅いのですが対処法などはないでしょうか?

#40

投稿記事 by 名無 » 11年前

画像の座標は少しずらしましたが、指定されたとおりに実行すると16と17がでました(17の方が多め?)

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: 画像の書き出し?がやたらと遅いのですが対処法などはないでしょうか?

#41

投稿記事 by softya(ソフト屋) » 11年前

その数値だと遅延していないです。
ただ、最初の2から3フレーム目だけ遅延している可能性があるので、その値がほしいですよね。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

名無

Re: 画像の書き出し?がやたらと遅いのですが対処法などはないでしょうか?

#42

投稿記事 by 名無 » 11年前

ClearDrawScreenを消してGPUを書き出す座標をずらしていって確認すると2個目から844,8,19,14,18,18…となりました。

Mana

Re: 画像の書き出し?がやたらと遅いのですが対処法などはないでしょうか?

#43

投稿記事 by Mana » 11年前

本体メモリが少なくてスワップが収まるのに時間がかかっているとか?

そもそも起動直後に同期しなければいけない理由は何でしょうね。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: 画像の書き出し?がやたらと遅いのですが対処法などはないでしょうか?

#44

投稿記事 by softya(ソフト屋) » 11年前

初回だけ極端に遅いですね。0.84秒程度かかっている計算になります。
Manaさんの言うように、いっその事遅れる前提にしてしまうと言う手がありますね。音楽の開始を2フレーム遅れさせるわけです。
ただ、音楽が原因で遅れている可能性はあります。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

閉鎖

“C言語何でも質問掲示板” へ戻る