2011-01-27 9 views
2

RGBAテクスチャが1024 x 1024で読み込まれています。オンメモリテクスチャサイズが1024 x 1024 x 4 => 4 MBになると予想しました。しかし、私がメモリ消費量を印刷しようとすると、テクスチャが約7 - 8 MB、ほぼ倍増していることがわかります。 IPadがすべてのチャンネルをバイトからハーフフロートに変換するかどうかは疑問だった すべてのピクセルが8バイトではなく4バイトをとるように指定する方法はありますか?iPad OpenGL ES:メモリテクスチャサイズ

+0

2048x1024のテクスチャを間違って読み込んだり(またはパディングアウトしていない)本当にありますか? – bobobobo

答えて

-1

あなたがタイプ内部形式あなたはglTexImage2Dを使用して作成し、あなたのテクスチャのを指定する必要があります。

あなたはおそらくGL_FLOATなどに設定されています。ここ

参照ドキュメント:私はこれらがESでサポートされているかはわからないが、http://www.opengl.org/sdk/docs/man/xhtml/glTexImage2D.xml

+0

glTexImage2Dのtype引数は、テクスチャデータを作成するCPU配列の型を指定します。内部フォーマットにのみ依存するGPUのデータには影響しません。 –

+0

さらに、GL_FLOATを指定しても、少なくとも16 MBになります。 –

0

それを指定する最も簡単な方法は、(代わりにGL_RGBAのGL_RGBA8など)サイズの内部フォーマットを使用しています。しかし、ESデバイスがチャンネルあたり8ビット以上の標準RGBAテクスチャを保存するなら、私は驚くでしょう。

どのようにGPUのメモリ消費量を決定しますか? VBOのような他の重要なGPUリソ​​ースや、フレームバッファ自体(レンダリングするメモリ)を忘れないように、追加のメモリが妥当な量のメモリを必要としていると推測します。また、ミップマップを使用する場合は、基本テクスチャのメモリの約33%が追加で必要になります。

あなたがテクスチャを作成するCPUデータのサイズについて言えば、これはテクスチャのサイズとは何の関係もなく、自分のデータのサイズにのみ依存します。

+0

@downvoter downvoteの理由は?確かに、私はESデバイスのハードウェアアーキテクチャに適合しないかもしれませんが、特に間違っていたことを知りたいと思います。それとも、私はその質問を誤解したでしょうか? –