トップページ > 過去ログ > 記事閲覧
全画面でロードが長くなる
名前:dixq 日時: 2008/05/29 20:38

ウィンドウ画面で起動させるとロードは早いのですが、 全画面で起動させるとロードが遅くなります。 この現象の原因は何が考えられますでしょうか? ロードは音楽ファイル、画像ファイルの読み込みを初め、GetRandの値の取得やfontの生成、音ボリュームの設定などを行っており、 スレッドプログラムを用いてロードしています。

Page: 1 |

Re: 全画面でロードが長くなる ( No.1 )
名前: 日時:2008/05/30 10:18

基本的にプログラムの動作は、画面モードに 影響するとは思えませんが、 お使いのグラフィックボードかディスプレイが 指定している画面モードに対応していない解像度 だとか、占有モードになった為に他のスレッドの 実行プライオリティが下がった可能性もあります。 >スレッドプログラムを用いてロードしています 蛇促ですが読み込み系関数はDXライブラリ自体が 排他をかけているようなのでスレッドにしても、 基本的にそれほど速度向上は望めないようです。 (自分で読み込む関数をつくったらな別のようですが)
Re: 全画面でロードが長くなる ( No.2 )
名前:dixq 日時:2008/05/31 13:29

ご回答ありがとうございます。 解像度はVGAなので問題ないはずなんですが・・、 他のPCでロードしてみると問題ないので、プログラムコードに不備があるわけではなさそうですね。 後、スレッドを2つ作ればデュアルコアCPUを有効に利用できると思ったのですが、そうはならないのですね; 今 int スレッド1(){ //音楽読み込み } int スレッド2(){ //画像読み込み } みたいに書いているのですが、 ではスレッド1の各音楽のロードが終わってから、スレッド2の各画像読み込みを行う・・を交互に繰り返すだけということでしょうか?
Re: 全画面でロードが長くなる ( No.3 )
名前:管理人 日時:2008/06/01 21:56

各スレッドでDXライブラリの読み込み関数を使用しているのでしょうか? 以前も申し上げましたが、DXライブラリは複数のスレッドを使って 同時に2つ以上の関数を呼ぶ、といったことはできないようになっています。 (例えば LoadGraph が呼ばれている間に他のスレッドで LoadSoundMem や DrawGraph を呼ぼうとしても LoadGraph が終了するまで待たされる) CPUコアの数は関係ありません。 > ではスレッド1の各音楽のロードが終わってから、スレッド2の各画像読み込みを行う・・を交互に繰り返すだけということでしょうか? はい、そうなります。  こちらも以前申し上げましたが、同時に呼ぶことができないのはあくまで DXライブラリの関数ですので、CreateFile , ReadFile や fopen, fread 等のAPIや関数を使って読み込む場合は並列に処理することができます。  なので、ファイルからの読み込みは fopen , fread を使用して、 DXライブラリのハンドルを作成する際に CreateGraphFromMem 等のメモリ からハンドルを作成する関数を使用する、といった方法をとることによって 並列読み込みを実現することができると思います。
Re: 全画面でロードが長くなる ( No.4 )
名前:dixq 日時:2008/06/04 04:22

管理人様ご回答ありがとう御座います。 そうでしたね・・、前回ご回答頂いた時の内容を忘れていました、すみません。 ではそちらの方法で試してみようと思います。 ありがとうございました。

Page: 1 |