質問: 正方形のテクスチャに長方形のテクスチャよりも同じ容量のビデオメモリが必要なのはなぜですか?OpenGL:正方形のテクスチャが少ないメモリを使用する理由
例: glTexImage2Dコマンドで360×4×16384サイズのテクスチャを作成しています。内部形式はGL_RGBAです。 ビデオメモリ:1328 MB。
同じデータで360×256×256のテクスチャを作成する場合、メモリ使用量は100MB未満です。
統合Intel HD4000 GPUを使用します。
質問: 正方形のテクスチャに長方形のテクスチャよりも同じ容量のビデオメモリが必要なのはなぜですか?OpenGL:正方形のテクスチャが少ないメモリを使用する理由
例: glTexImage2Dコマンドで360×4×16384サイズのテクスチャを作成しています。内部形式はGL_RGBAです。 ビデオメモリ:1328 MB。
同じデータで360×256×256のテクスチャを作成する場合、メモリ使用量は100MB未満です。
統合Intel HD4000 GPUを使用します。
テクスチャが長方形であるということではありません。それは極端に大きい次元の1つです。小です。
テクスチャから最適なテクセルを選択するために、ハードウェアはスウィズリングと呼ばれるものを採用します。一般的な考え方は、テクスチャ内のバイトを再構成して、2次元でお互いに隣り合うピクセルがメモリ内の隣接ピクセルになるようにすることです。しかし、これを行うには、テクスチャが両方の次元で特定の最小サイズであることが必要です。
ここで、テクスチャフィルタリングハードウェアはこの最小サイズを無視して、テクスチャの実際のサイズ内のピクセルからのみフェッチすることができます。しかし余分なストレージはまだそこにあり、スペースを取って有用な目的にはならない。
見ている通り、インテルのすばらしいハードウェアの基本最小サイズは32または64ピクセルです。
OpenGLでは、ここで行った以外の違和感を検出することはあまりありません。
私は100%確信していませんが、OpenGLがglTexture呼び出しでピクセルデータをどのように処理するかとは関係があります。イメージが正方形である場合、レンダリングの準備ができるようにバックバッファにデータを格納するとき、2の累乗と関係していると思います。 –
ミップマップを生成していますか?私はあなたがいないと思うが、確かに); – Mars
@Mars:そうだね、ミップマップを使っていないということを正確に忘れた。 – Szak1