このシナリオはOpenGL仕様で説明されていないため、これはドライバーの実装に依存する状況の1つであると感じています。ただし、MIPマップを生成せずにGL_(LINEAR / NEAREST)_ MIPMAP_ *を使用しても、GL_(LINEAR / NEAREST)を使用した場合と同じように扱われるかどうかを誰かが知ってくれることを期待しています。
2 に答える
「アクティブなMIPテクスチャなし」を定義しますか?「ミップテクスチャ」のようなものはないので、どうすればよいかわかりません(テクスチャにはミップマップが含まれていますが、ミップマップはテクスチャではありません)。
完全なミップマップピラミッドを作成しなかった場合は、GL_TEXTURE_BASE/MAX_LEVEL
の設定方法によって異なります。これらを適切に使用して、OpenGLにミップマップレベルが1つしかないことを伝えれば、問題はありません。以前glTexStorage
にテクスチャのストレージを作成していて、1つのミップマップを作成するように指示しただけの場合も、問題はありません。
しかし、それらのどれも当てはまらない場合、OpenGLはデフォルトで(通常のばかげた方法で)最も役に立たないものになります。GL_TEXTURE_MAX_LEVEL
レベルを1000に設定します。つまり、ミップマップが定義されていることが期待されます。
(デスクトップ)OpenGLによると、BASE/MAX_LEVEL
sが定義されていないミップマップを参照するミップマップフィルタリングを備えたテクスチャは「テクスチャ完全」ではありません。OpenGLは、不完全なテクスチャに対するテクスチャアクセスで取得する値は(0、0、0、1)であると定義しています。
つまり、BASE/MAX_LEVEL
適切に設定すれば、心配する必要はありません。常にこれを行います。
私の経験では、生成されていないすべてのミップマップレベルはデフォルトで黒になります。
したがって、テクスチャを1:1の解像度で表示し、徐々にズームアウトすると、最初のミップマップが使用されるとすぐに黒にフェードします。
これは少なくともNVIDIAとAMDでの動作だと思います。私はpowervrを試したことはありません(opengl-esについて言及しているため)。