定義により、GL_TEXTURE_MIN_FILTERは、テクスチャ化されるピクセルが 1 つのテクスチャ要素よりも大きい領域にマップされる場合に使用されます。
解像度が 1024*768 のテクスチャがあり、それを長方形にマップしたいとします。射影行列は、次を使用して設定されます。
glOrtho(0, 1024, 0, 768, 0, 1);
長方形は次のように設定されます。
glTexCoord2f(0.0f, 0.0f); glVertex3f(0.0f, 0.0f, 0.0f);
glTexCoord2f(1.0f, 0.0f); glVertex3f(1024.0f, 0.0f, 0.0f);
glTexCoord2f(1.0f, 1.0f); glVertex3f(1024.0f, 768.0f, 0.0f);
glTexCoord2f(0.0f, 1.0f); glVertex3f(0.0f, 768.0f, 0.0f);
現在の構成では、長方形の各ピクセルがテクスチャ内の 1 つのピクセルにマップされていると理解しています。
しかし、テストの後、MIN_FILTERがこの構成で機能していることがわかりました。長方形のサイズを 2 倍、つまり 2048*1536 にしても、ビューポートに左下隅だけが表示されていても、機能しているのは MIN_FILTER です。
このような状況では、私の個人的な理解では、ビューポート内の各ピクセルはテクスチャ内の 4 分の 1 ピクセルにのみマップされます。なぜMIN_FILTERがまだ機能しているのでしょうか?
どのフィルターが機能しているかをテストするために、そのフィルターを設定する行をコメントアウトして、結果が間違っているかどうかを確認します。MIN_FILTER設定行をコメントアウトすると、結果は完全に黄色になります。これは、テクスチャの最大レベルをそのレベルと一致するように設定しなかったためです。しかし、 MAG_FILTER行をコメントアウトしても、結果は正しいままです。