トップページ > 過去ログ > 記事閲覧
起動が遅い
名前:ask 日時: 2009/02/09 21:47

起動に5〜10秒ほど掛かります。前の記事を参考にバージョンを下げてみましたが、あまり効果があるとは思えませんでした。 また別の人が作ったフリーのゲームでも同じく時間が掛かります。 同じようなスペックの友人の環境ではちゃんと起動しました。 OSはvista ultimate CPU 2.53GHz メモリ 4GB 性能は関係ないと思います。

Page: 1 |

Re: 起動が遅い ( No.1 )
名前: 日時:2009/02/10 10:09

結局、どうして欲しいのかよく分かりませんが、 DXライブラリが使用しているDirectX7は、 かなりの年代物で互換性が保たれています。 Vistaなどの新しいOSでは互換機能を使用するために ある程度の時間がかかる可能性もあります。 #特に起動時 また、グラフィック性能の問題の可能性もありです DirectXを使用するために最適な設定を DXライブラリは内部でテストを行って順次 最適なものを探したりしていたはずなので、 グラフィックメモリの容量が多くても、 表現できる色や、作成できるテクスチャの 制限などとは全く別の問題でこのあたりの 制限を保つためにテストが数回行われたとか。 グラフィック性能云々は、 DXライブラリのログとか貼り付けてもらえると もう少し何か分かるかもしれませんね。 # たぶんテストした結果を出しているはずなので。 # これらはDxInitを呼び出したときに行われるので # 環境によっては仕様ということになりますが。 # マルチポストはあんまり関心しませんが。。。
Re: 起動が遅い ( No.2 )
名前:管理人 日時:2009/02/10 19:37

「別の人が作ったフリーのゲーム」とは、DXライブラリを使用して作成されたゲームでしょうか?
Re: 起動が遅い ( No.3 )
名前:ask 日時:2009/02/10 20:24

はい。 ちなみにDXライブラリを使用せず、directxを使用したゲームはちゃんと動きます。
Re: 起動が遅い ( No.4 )
名前:管理人 日時:2009/02/11 00:08

起動までに5〜10秒掛かるとのことですが、DxLib_Init が 終了するまでにそれだけ時間が掛かるということでしょうか? それとも LoadGraph 等を行い、すべての準備が整ってソフトの 画面が表示されるまでに5〜10秒かかるということでしょうか?
Re: 起動が遅い ( No.5 )
名前:ask 日時:2009/02/11 18:22

起動するとウィンドウが真っ黒の画面のまま 5〜10秒硬直します。そのあと画像の表示など、 ちゃんと表示してくれます。(ウィンドウモードでも一緒です) ちなみに画面の色を 32ビットから16ビットに変えると、多少時間が縮みます。
Re: 起動が遅い ( No.6 )
名前:管理人 日時:2009/02/11 21:27

以下のような初期化して直ぐ終了するようなプログラムでも5〜10秒掛かってしまうのでしょうか? #include "DxLib.h" int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { // DXライブラリの初期化 if( DxLib_Init() < 0 ) return -1; // DXライブラリの後始末 DxLib_End(); // ソフトの終了 return 0; }
Re: 起動が遅い ( No.7 )
名前:ask 日時:2009/02/12 20:07

掛かってしまいます。多分グラフィックボードが原因だと思います。(Geforce 9600M GS)
Re: 起動が遅い ( No.8 )
名前:管理人 日時:2009/02/12 20:50

うーん、何ででしょう ログの出力を止めたら起動が早くなるかもしれませんので、宜しければ DxLib_Init を呼ぶ前に ログを出力するかどうかを設定する SetOutApplicationLogValidFlag 関数に FALSE を渡して 呼んでみて下さい ↓こんな感じに・・・ SetOutApplicationLogValidFlag( FALSE ) ; if( DxLib_Init() < 0 ) return -1 ; 因みにUSBメモリ上のフォルダを起動時のカレントフォルダにして起動したら ログ出力の書き込みが原因で起動が遅かったということはあります それでも変化が無いようでしたら、DirectX が原因かどうかの確認の意味も含めて、 描画処理に DirectX を使用するかどうかを設定する SetUseDirectDrawFlag 関数に FALSE を渡して呼んで実行してみて下さい SetUseDirectDrawFlag( FALSE ) ; SetOutApplicationLogValidFlag( FALSE ) ; // ←一応ログ出力もOFF if( DxLib_Init() < 0 ) return -1 ;
Re: 起動が遅い ( No.9 )
名前:ask 日時:2009/02/13 15:44

SetUseDirectDrawFlag関数を使用したところ上手くいきました!! つまりこれはDirectXが原因ということなので、リカバリした方がいいのでしょうか?DirectXを再インストールしても無理だったので。。
Re: 起動が遅い ( No.10 )
名前:管理人 日時:2009/02/14 14:56

リカバリによって解消されるかどうかはわかりませんが、グラフィクスドライバの 更新など色々試されてみると良いかもしれません 私の手元にaskさんの環境が無いので改善は難しいとは思いますが、 askさんの環境で起動が遅くなってしまっている原因を知ることができるかもしれませんので 宜しければライブラリ実行時に作成されるログファイル( Log.txt )の内容をこちらの掲示板に 書き込んで頂けないでしょうか? ( Log.txt の各行の左端にある数値は初期化開始からの経過時間( ミリ秒単位 )なので、 どこで時間が掛かっているのか分かるのです )
Re: 起動が遅い ( No.11 )
名前:ask 日時:2009/02/14 20:09

0:システムの情報を出力します 1: DXライブラリ Ver2.25 2: OS WindowsVista ( Build 6001 Service Pack 1 ) 104: CPU動作速度:大体2.52GHz 105: MMX命令を使用します 105: SSE命令が使用可能です 106: SSE2命令が使用可能です 107: CPUベンダ:GenuineIntel 111: CPU名:Intel(R) Core(TM)2 Duo CPU T9400 @ 2.53GHz 112:COMの初期化... 成功しました 144:メモリ総量:2048.00MB 空きメモリ領域:1811.37MB 145:タイマーの精度を検査します 146:精度結果 更新回数 マルチメディアタイマー:0 パフォーマンスカウンター:60 147: パフォーマンスカウンターを使用します タイマー分解能 : 14318.180000 KHz 149: ソフトの二重起動検査... 二重起動はされていませんでした 152:ウインドウクラスを登録します... 登録に成功しました 153:ウインドウモード起動用のウインドウを作成します 274:IMEを無効にしました 476:ウインドウスタイルをウインドウモード用に変更します... 完了 479:DirectInput関係初期化処理 480: DirectInput7 の取得中... 成功 517: 引き続き初期化処理... 初期化成功 519: ジョイパッドの初期化... 524: ジョイパッドの初期化は正常に終了しました 525: マウスデバイスの初期化... 初期化成功 527: キーボードデバイスの初期化... 初期化成功 529:DirectInput 関連の初期化は正常に終了しました 530:DirectSound の初期化を行います 531:DirectSound インターフェースの取得を行います.... 成功 542:引き続きインターフェースの初期化処理... 成功 619: DirectSound デバイスを列挙します 620: モジュール名: ドライバ記述:プライマリ サウンド ドライバ 621: モジュール名:{0.0.0.00000000}.{c643042c-276f-4f9f-baa6-73636e5936e0} ドライバ記述:スピーカー (High Definition Audio デバイス) 622: モジュール名:{0.0.0.00000000}.{c176bfc8-90a7-403f-bc66-6b8a41881759} ドライバ記述:OUT (6- EDIROL UA-1EX) 623: 最大サンプリングレート:200.00KHz 最小サンプリングレート:0.10KHz 624: 総サウンドメモリ領域:0.00KB 空きサウンドメモリ領域:0.00KB 625: 利用可能サンプリング精度 626: プライマリ 16bit = OK 8bit = OK 627: セカンダリ 16bit = OK 8bit = OK 628: 利用可能チャンネル 629: プライマリ MONO = OK STEREO = OK 630: セカンダリ MONO = OK STEREO = OK 631:DirectSound の初期化は正常に終了しました 631:DirectDraw 関連の初期化を行います 632: DirectDraw オブジェクトの取得を行います.... 成功 645: 引き続き初期化処理... 初期化に成功しました 1435: ビデオカードの情報 1436: 画面モード変更処理を開始します 1497: 画面モードの変更処理を開始します 640 x 480 16 bit 1498: ウインドウモードにします 1499: 画面モードの変更は正常に終了しました 1501: カラー情報 1502: A:00000000 B:00ff0000 G:0000ff00 B:000000ff 1503: ウインドウスタイルをウインドウモード用に変更します... 完了 1505: 出力画面用の DirectDrawSurface を作成します 1525: 各スクリーンメモリの配置位置 1527: PrimaryBuffer : VIDEOMEMORY 1528: BaskBuffer : VIDEOMEMORY 1529: 出力画面用の DirectDrawSurface の作成は正常に終了しました 1530: Direct3D 関連の初期化を行います 1531: Direct3Dオブジェクトを取得します 1581: Direct3Dオブジェクトを取得しました 1583: HALデバイスを発見しました 1584: ハードウエアT&Lデバイスを発見しました 1586: 3Dデバイスを作成します... 3Dデバイスの作成に成功しました 1615: テクスチャ最大幅:8192 最小幅:1 1616: 描画制限: D_D3DPTEXTURECAPS_POW2 = 0 D_D3DPTEXTURECAPS_SQUAREONLY = 0 1618: 最大テクスチャステージ数 = 8 最大テクスチャブレンド数 = 8 1619: テクスチャピクセルフォーマット 1620: 通常グラフィック用 1621: BIT:16 RED:5 GREEN:5 BLUE:5 1622: RED:007c00 GREEN:0003e0 BLUE:00001f 1623: BIT:32 RED:8 GREEN:8 BLUE:8 1624: RED:ff0000 GREEN:00ff00 BLUE:0000ff 1625: アルファチャンネル付きグラフィック用 1626: BIT:16 ALPHA:4 RED:4 GREEN:4 BLUE:4 1627: ALPHA:0000f000 RED:00000f00 GREEN:000000f0 BLUE:0000000f 1628: BIT:32 ALPHA:8 RED:8 GREEN:8 BLUE:8 1629: ALPHA:ff000000 RED:00ff0000 GREEN:0000ff00 BLUE:000000ff 1630: Direct3D 関連の初期化は正常に終了しました 1631: グラフィック管理系の初期化を行います 1633: 3Dグラフィック描画機能を使用します 1646: フォントの初期化を行います 1684: フォントの初期化は正常に終了しました 1685: グラフィック管理系の初期化は正常に終了しました 17208: サーフェス間転送には BltFast を使用します 17209: BitBlt:15499742μs BltFast:18131μs 17210: スキャンラインの数:800 17341: 1フレーム当たりの時間は 17 msecです 17342: Tri00:17 msec 17343: Tri01:16 msec 17344: Tri02:17 msec 17345: Tri03:17 msec 17346: 画面モード変更処理は正常に終了しました 17367: DirectDraw 関連の初期化は正常に終了しました 17369: 文字コードバッファの初期化を行います... 完了しました 19863: DirectDraw 関連の終了処理をおこないます 19864: フォントの初期化を行います 19867: フォントの初期化は正常に終了しました 19868: グラフィック管理系の終了処理は正常に終了しました 19869: Direct3D 関連の終了処理を行います 19871: 3Dデバイスの削除は正常に終了しました 19872: Direct3D 関連の終了処理は正常に終了しました 19873: メインサーフェスを破棄をします... 完了しました 19875: DirectDrawオブジェクトを解放します 19911: DirectDrawオブジェクトを解放しました 19912: DirectDraw 関連の終了処理は正常に終了しました 19913: DirectInput 関連の終了処理... 完了 19919: DirectSound の終了処理は正常に終了しました 19920: ウインドウを閉じようとしています 19925: ウインドウが破棄されようとしています 19926: ソフトを終了する準備が整いました 20866: 20867: Alloc memory dump Total size:0(0.000kb) Alloc num:0 20869:
Re: 起動が遅い ( No.12 )
名前:管理人 日時:2009/02/15 12:26

ログを拝見する限りでは時間が掛かっている箇所は幾つかあるみたいです その中で一番時間が掛かっている処理は画像の転送に DirectDraw の BitBlt というAPIを 使用するのと、BltFast というのを使用するのではどちらが速いかの計測のようですので、 その計測処理を簡略化したバージョンを作成しました http://homepage2.nifty.com/natupaji/DxLib/DxLibVCTest.exe //VC用 http://homepage2.nifty.com/natupaji/DxLib/DxLibBCCTest.exe //BCC用 (中身を既存のライブラリのファイルに上書きして、BCCをお使いの 場合は『再構築』、VCをお使いの場合は『リビルド』をして下さい) 宜しければお試し下さい m(_ _)m もしかしたらこれで起動時間が短くなるかもしれません
Re: 起動が遅い ( No.13 )
名前:ask 日時:2009/02/15 14:22

迅速な対応ありがとうございました。 最初の時より大分速くなりました!

Page: 1 |