トップページ > 記事閲覧
SetUseDirect3DVersion(DX_DIREC
名前:もっち 日時: 2017/02/11 21:06

制作しているゲームでDXライブラリとEffekseerを最新版にした所、 ステージの読み込み時間が増えてしまいました。 色々と原因を探っていたのですが、 どうやら「SetUseDirect3DVersion(DX_DIRECT3D_9);」を設定すると、 「LoadSoundMem();}」に掛かる時間が増えているのかなという気がしました。 下の様な処理で28.9KB程度のoggを読み込んだところ、 「SetUseDirect3DVersion(DX_DIRECT3D_9);」をコメントアウトした状態では16秒程度、 「SetUseDirect3DVersion(DX_DIRECT3D_9);」がある状態では45秒程度掛かる結果となりました。 Effekseerを使用するには「SetUseDirect3DVersion(DX_DIRECT3D_9);」の設定が必要みたいなのですが、 何か解決策はありますでしょうか? #include "DxLib.h" #define AAA 3000 int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { ChangeWindowMode(true);//ウィンドウモード SetUseDirect3DVersion(DX_DIRECT3D_9);// DirectX9を使用するようにする。 // DXライブラリの初期化 if(DxLib_Init()<0)return -1;//エラーが発生したら直ちに終了 DATEDATA time0,time1; int sh[AAA]; GetDateTime(&time0); DrawFormatString(0,0,0xFF0000,"%d時 %d分 %d秒",time0.Hour,time0.Min,time0.Sec); for(int i=0;i<AAA;i++){sh[i]=LoadSoundMem("atk0.ogg");} GetDateTime(&time1); DrawFormatString(0,20,0xFF0000,"%d時 %d分 %d秒",time1.Hour,time1.Min,time1.Sec); // キー入力待ち WaitKey() ; // DXライブラリの後始末 DxLib_End() ; // ソフトの終了 return 0 ; }
メンテ

Page: 1 |

Re: SetUseDirect3DVersion(DX_DIREC ( No.1 )
名前:管理人 日時:2017/02/12 05:28

oggファイル 3000回の LoadSoundMem ですか… 手元でも試してみたいと思いますので、atk0.ogg のファイルサイズや再生時間が どのくらいか教えていただけないでしょうか? m(_ _)m > Effekseerを使用するには「SetUseDirect3DVersion(DX_DIRECT3D_9);」の設定が必要みたいなのですが、 > 何か解決策はありますでしょうか? 原因が分かり、それが修正可能なバグであれば DX_DIRECT3D_9 でも LoadSoundMem に掛かる時間が DX_DIRECT3D_9 を指定していない場合と同じにすることができると思いますので、 まずは原因を究明してみたいと思います
メンテ
Re: SetUseDirect3DVersion(DX_DIREC ( No.2 )
名前:もっち 日時:2017/02/12 16:20

>管理人様 ご返信ありがとうございます。 今回使用したoggファイルは28.9KB、再生時間は1秒程度のものです。 こちらに実際のものをアップさせて頂きました。 http://www.mokyusoft.net/data/atk0.ogg (エラーが出てしまったため全角文字とさせて頂きました) ちなみに、2.15MBで再生時間2分20秒程度のoggファイルを40回ずつ読み込んだ場合は、 SetUseDirect3DVersion(DX_DIRECT3D_9);のありなしに関わらず、どちらも15秒程度でした。 (DX_DIRECT3D_9を設定した方が1〜2秒早いくらいでした) 何かわかりましたら教えて頂けたら幸いです。
メンテ
Re: SetUseDirect3DVersion(DX_DIREC ( No.3 )
名前:管理人 日時:2017/02/13 01:38

oggファイルをアップしていただきありがとうございます 手元でもっちさんの検証用プログラムを実行してみたところ、以下のような結果になりました 32bitビルド  DirectX 9 12.02秒  DirectX 11 12.18秒 64bitビルド  DirectX 9 11.13秒  DirectX 11 11.29秒 というわけで、DirectX 9 が 11 に比べて異常に遅いということはありませんでした ( 寧ろ私の環境では 11 の方が若干遅い? ) 原因は分かりませんが、もっちさんがテストされているPCに搭載されている グラフィックスデバイスのドライバなどが関係しているかもしれません どのくらいの環境でもっちさんの環境と同じように『DirectX 9 を使用すると LoadSoundMem が遅い』と なるかは色々な環境で試してみないと分かりませんが、とりあえず 『どんな環境でも DirectX 9 を使用すると LoadSoundMem が遅い』ということは無いのではないかと思います
メンテ
Re: SetUseDirect3DVersion(DX_DIREC ( No.4 )
名前:もっち 日時:2017/02/14 00:09

>管理人様 ご確認頂いてありがとうございます。 そちらの環境では変化がありませんでしたか。 特定の環境でのみ起こると分っただけでも大きな前進となりました。 また何か分ればご報告させて頂きたいと思います。
メンテ

Page: 1 |

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

   クッキー保存