[リストへもどる]
一括表示
タイトルメモリの使用量
記事No9751
投稿日: 2011/09/12(Mon) 10:10
投稿者26℃
メモリについて考えもなしにつくっていたのですが
タスクマネージャーで使用量が500Mぐらいだったの、使用量を抑えようと思っています。

まず思ったのが、ゲームでしようするファイルサイズは70Mぐらいなのですがなぜ500M消費することになってしまったのか
ということです。
サウンド
テクスチャ
ポリゴン
モーション
などどのようにメモリが使われているのですか?

追記
画像のサイズはpngのもので考えていましたが
圧縮していないサイズで考えたほうがよかったですね、BMPのサイズだとかなりでかくなるはず(^^;)
でもテクスチャはビデオメモリのほうに作るようにしてるのでどうなんだろ。

追記
サウンドのoggとかも圧縮されてたなあ。

追記
圧縮されていると、展開後のサイズがわからないのでメモリの使用量をおおまかに推測するのに不便ですね

タイトルRe: メモリの使用量
記事No9756
投稿日: 2011/09/12(Mon) 13:56
投稿者おちゃっこ
圧縮を解凍した状態を展開状態と呼ぶことにします。

テクスチャは展開後のサイズ分メモリを使います。
oggは展開後サイズ×bufnum分のサイズを使います。
テクスチャはD3DPOOL_MANAGEDを使用しているため
システムメモリもビデオメモリと同じ量消費します。

MANAGEDメモリは削除してもすぐには減らないような現象も
確認されています。(ひょっとしたら未確認のバグのせいかもしれないのですが)

26℃さんの圧縮解除システムで
テクスチャをマテリアルに割り当てる際には注意したほうがいいです。

通常、複数のマテリアルで同じテクスチャを参照しますよね。
同じテクスチャに対して複数回セットの処理を行わないようにすることで
MANAGEDメモリの増大を抑えることが出来るかもしれません。

テクスチャをセットしたことを記録するフラグを作って
2回目同じテクスチャファイル名が出てきたときに
処理をスキップするといいでしょう。

あとはテクスチャサイズを小さくするのが有効だと思います。

タイトルRe^2: メモリの使用量
記事No9757
投稿日: 2011/09/12(Mon) 14:20
投稿者26℃
> oggは展開後サイズ×bufnum分のサイズを使います。
これで180Mぐらい喰ってたみたいです。

> テクスチャはD3DPOOL_MANAGEDを使用しているため
> システムメモリもビデオメモリと同じ量消費します。
両方消費していましたか。わかりました。

> テクスチャをセットしたことを記録するフラグを作って
> 2回目同じテクスチャファイル名が出てきたときに
> 処理をスキップするといいでしょう。
ためしてみます


もうひとつ質問しておきたいのですが、モデルデータの破棄ですが、これはテクスチャは破棄されないんですよね?

タイトルRe^3: メモリの使用量
記事No9758
投稿日: 2011/09/12(Mon) 16:26
投稿者おちゃっこ
> もうひとつ質問しておきたいのですが、モデルデータの破棄ですが、
> これはテクスチャは破棄されないんですよね?

モデルを破棄することによって
参照されなくなったテクスチャが出てきたときは
それは削除されます。

しかし先ほど書いたMANAGEDメモリの不可思議な挙動により
効果がすぐに現れるとは限りません。

タイトルRe^4: メモリの使用量 アンチエイリアスのかかったスクリーンショット
記事No9760
投稿日: 2011/09/12(Mon) 18:35
投稿者26℃
参照されなくなったテクスチャができたときに削除されますか。
調べるのに手間がかかってそうですね。
わかりました。

あと、話が変わるのですが
ttp://cgi.www5d.biglobe.ne.jp/~ochikko/board4/wforum.cgi?mode=allread&no=9479&pastlog=0014&act=past#9484
過去ログでアンチエイリアスがかかった状態でスクリーンショットを撮ることが可能らしいのですが
E3DWriteDisplay2BMPを使うとエラーが起こります。
なにかあたらしい関数を使わないといけないのでしょうか?

追記
e3dhsp3.asを見てそれらしきものを発見したので
E3DWriteBmpFromSurface path, scid1
このように引数1をパス、引数2をスワップチェインID
にして使うと撮ることができました。

タイトルRe^5: メモリの使用量 アンチエイリアスのかかったスクリーンショット
記事No9761
投稿日: 2011/09/12(Mon) 18:47
投稿者おちゃっこ
あ、まだ関数表を書いてませんでした。
以下の命令です。

E3DWriteBmpFromSurface filename, scid
[IN] filename : 書き出したいbmpファイル名
[IN] scid : キャプチャしたい画面を描画したスワップチェインのID

タイトルRe^6: メモリの使用量 アンチエイリアスのかかったスクリーンショット
記事No9762
投稿日: 2011/09/12(Mon) 18:50
投稿者26℃
どうもです、たすかります。