[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Java3Djp:01213] Re: テクスチャーの張り替え時に関する問題
◆◇ ◆◇ ◆◇ MagicalCastβ(ベータ版) ◆◇ ◆◇ ◆◇
┌──┐ ┌──┐
│\/│ DNSの新MLシステム誕生です!│\/│
└──┘ └──┘
これまでの簡単・快適そのままで高機能に
いえいえもっと高速に。βテストにご協力下さい
※ fmlでもmajordomoでもありません
◆◇ ◆◇ ◆◇ http://mx7.dns-ml.co.jp/ ◆◇ ◆◇ ◆◇
こんにちは、沼倉@xxxxxxxxxxです。
現在、3Dから遠いところにいますが...
> こんにちは.藤原です.
>
> 問題に対する対処法がわかりましたので報告します.
> # 詳しい経緯は,以前の投稿を参照してください.m(__)m
>
>
> はじめに以下のように *1枚の* テクスチャーを複数のプリミティブに指定し,
> これを繰り返し実行していましたが,この方法だとメモリー消費が増加しつづけ,
> 最終的に OutOfMemoryError となります.
> Texture2D tex1 = TextureLoader#getTexture();
> Sphere#getAppearance()#setTexture(tex1); // 1つめの球
> Sphere#getAppearance()#setTexture(tex1); // 2つめの球
>
>
> これを防ぐためには,以下のようにします.
> Texture2D tex1 = TextureLoader#getTexture();
> Texture2D tex2 = (Texture2D)tex1.cloneNodeComponent();
> Sphere#getAppearance()#setTexture(tex1); // 1つめの球
> Sphere#getAppearance()#setTexture(tex2); // 2つめの球
>
> わかってしまえば,どうということはないのですが・・(泣)
> # 対処法はわかったのですが,はじめの方法だと
> 何故消費メモリーが増加しつづけるのでしょう?
どうみても、最初の方法が自然なように思います。cloneNodeComponent()
の説明には”Creates a new Texture2D object”と書いてあるので、
こっちの方法のほうがメモリを食いそうな気がします。
対処法がわかったとはいえ、原因がわからないのは気持ち悪いなあ。
_/_/_/ E-mail : numakura@xxxxxxxxxx _/_/_/