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