ページ 1 / 1
画像ロードはどこに格納され、どれぐらいメモリを使用しているのか
Posted: 2012年8月18日(土) 23:26
by NAN-A
お世話になっております。
現在配布中のゲームにて、いろんな人にプレイしてもらったのですが、
その際に「ロード中に固まってゲームが始められない」という方が何人かいました。
いわゆるゲーム開始時に画像を一気にロードするタイプのゲームなのですが、
人によって様々なので「画像をロードしすぎて、メモリが足りないのかな?」と思いました。
そこで疑問が2つありまして
1.画像はメモリ・ビデオメモリのどちらにロードしているのか?
2.実際ロードしたものはどれぐらいメモリを使用しているのか調べるにはどうすればいいか?
以上の2つが不明なので質問させていただければと思います。
基本的なことですが、よろしくお願い致します。
Re: 画像ロードはどこに格納され、どれぐらいメモリを使用しているのか
Posted: 2012年8月19日(日) 00:14
by h2so5
使用しているライブラリや環境によります。
Re: 画像ロードはどこに格納され、どれぐらいメモリを使用しているのか
Posted: 2012年8月19日(日) 00:16
by NAN-A
h2so5 さんが書きました:使用しているライブラリや環境によります。
OSはWindowsで、DXライブラリを使用しています。
Re: 画像ロードはどこに格納され、どれぐらいメモリを使用しているのか
Posted: 2012年8月19日(日) 00:26
by へにっくす
とりあえず思いつきで回答。
間違いあったら指摘よろしく>識者さま (^^;ォィォィ
NAN-A さんが書きました:1.画像はメモリ・ビデオメモリのどちらにロードしているのか?
2.実際ロードしたものはどれぐらいメモリを使用しているのか調べるにはどうすればいいか?
1はメモリにしかロードできない
ビデオメモリとは、モニターに表示されている画面のイメージそのものだと思うので。
2は画像ファイルの画面サイズと色数によって決まる。
実際に画像を読むまえと後でそれぞれ以下のAPIを使って差分を求めるとか。
物理メモリ容量の取得
対処としては
ローディング画面を表示させて、別スレッドで読み込む関数を実行させるべきと思いますが。
Re: 画像ロードはどこに格納され、どれぐらいメモリを使用しているのか
Posted: 2012年8月19日(日) 00:38
by h2so5
NAN-A さんが書きました:1.画像はメモリ・ビデオメモリのどちらにロードしているのか?
LoadGraph系の関数を使用している場合は、基本的にはビデオメモリにロードされます。
3Dモデルのテクスチャも同様です。
ただし圧縮されている画像を読みこむ際には、一時的にメインメモリ上に展開されていると思われます。
LoadSoftImage系の関数を使った場合もメインメモリに読み込まれます。
NAN-A さんが書きました:2.実際ロードしたものはどれぐらいメモリを使用しているのか調べるにはどうすればいいか?
GetPcInfoという関数でビデオメモリの総容量と空き容量を知ることができます。
ただし、フリーズの原因がメモリ不足かどうかは分かりません。
Re: 画像ロードはどこに格納され、どれぐらいメモリを使用しているのか
Posted: 2012年8月19日(日) 02:31
by NAN-A
へにっくす様、h2so5様
お答えいただき、誠にありがとうございます。
参考のリンクや、関数などを参考に調べてみます。
とりあえず今回はこれにて解決とさせて頂きます。
誠にありがとうございました。
Re: 画像ロードはどこに格納され、どれぐらいメモリを使用しているのか
Posted: 2012年8月19日(日) 16:47
by ISLe
へにっくす さんが書きました:ビデオメモリとは、モニターに表示されている画面のイメージそのものだと思うので。
それは狭義ですね。
いまどきのグラフィックボード搭載のRAMには、モニターに表示されている画面のイメージ以外に
バックバッファ
テクスチャ
頂点バッファ
シェーダープログラム
などグラフィックボードで処理されるあらゆるデータ(や実行コード)が格納されます。