私はネイティブのAndroidアプリケーションでテクスチャのメモリ消費を最適化しようとしています。最初に呼ばれるたびにTexImageをインクリメントいる私自身です:テクスチャ場合OpenGL ESテクスチャメモリ
g_cbTextureMemory += ImageLineBytes(Format, width) * height;
あなたは、現在の画像サイズの減少は、新規に追加するよりも、そこにある私の実際のコードでは、TexImageはテクスチャに1回呼び出さことを前提としていて私は2つのカウンタを持っています再割り当てされますが、実際には再割り当ては行われません。
第二には、システムから次のとおりです。
adb shell dumpsys meminfo my.app.name
それはこのような何か与える:私は次のようにします。その後
** MEMINFO in pid 3269 [my.app.name] **
native dalvik other total
size: 39320[*] 6663 N/A 45983
allocated: 21453 3945 N/A 25398
free: 34 2718 N/A 2752
(Pss): 6281 3078 40643 50002
(shared dirty): 2240 4968 12108 19316
(priv dirty): 6232 2684 17948 26864
を:私はダミーの1x1を送信することにより、(1×1ですべてのテクスチャを置き換えますimageからglTexImageへ)。私はmeminfoが別の結果をもたらし、22Mbでセル[*]の違いが変わったことを知っています。しかし私のカウンターは25Mbのテクスチャを持っていることを示しているので、25Mbを期待しています。
ダンプテクスチャメモリの消費量が隠されていますか?クリアするには、1x1のテクスチャダンプは
** MEMINFO in pid 3269 [my.app.name] **
native dalvik other total
size: 16892 5575 N/A 22467
allocated: 13211 3574 N/A 16785
free: 208 2001 N/A 2209
(Pss): 6273 3122 17016 26411
(shared dirty): 2252 5032 10756 18040
(priv dirty): 6224 2588 5848 14660
私は25Mbを得られませんでしたか?は統計的な誤差ですか?ネイティブヒープにはテクスチャメモリが含まれていますか?あるいは、Androidの内部フォーマットがいくつかのフォーマットに異なる場合がありますか?例えば、R8G8B8はもっと最適なものに変換されました(それはそうではないようです)?それはすべて大丈夫、合理的な説明がありますか?