2

私は現在、ある種の仮想テクスチャの実装に取り​​組んでいます。mipmap レベルは、構造を制御する詳細レベルとして使用されます。(仮想テクスチャ内のすべてのテクセルは、「実際の」テクスチャ内のデータ ブロックに関連しています。)

データは複数の詳細レベルで存在し、仮想テクスチャのブロック数が異なります。

例:

level       size of data       number of blocks
0           60                 4
1           30                 2
2           15                 1

私のアイデアは、仮想テクスチャのすべての詳細レベルに対して glTexImage を呼び出して、さまざまなミップマップ レベルを作成することでした。

問題は、作成または更新/読み込み時にエラーは発生しませんが、テクスチャからデータを取得できないことです。ベース レベルのみを作成して glGenerateMipmap を呼び出すと問題なく動作しますが、一部のベース サイズではサイズが正しくありません。(技術的には正しいですが、私の場合はそうではありません)

ミップマップのレベル サイズは 2 (または 2 とフロア) で除算する必要があることをどこかで読みました。

質問:

  • 「カスタム」ミップマップ レベルをロードすることは可能ですか?
  • mipmap レベルのサイズに制約はありますか?
4

2 に答える 2

5

カスタム ミップマップ レベルを読み込むことはできますが、サイズを選択することはできません。OpenGL は、予想されるレベルの MipMap サイズを指定し、それからの逸脱を許可しません。

幅を例に取ると、ミップマップ レベルに必要な幅は です。ここで、w_b は最初のミップ レベル (ベース) の幅ですimax(1, floor(w_b / 2^i))他の次元についても同じです (GL 仕様 2.1、セクション 3.8.8、段落ミップマッピング)。

于 2010-10-11T13:53:40.317 に答える
0

ミップマップ レベルを 1x1 までロードしたことを確認してください。ここを参照してください。

于 2010-10-11T12:52:29.653 に答える