2

GL_NEARESTmag および min フィルタリングを使用した 2D テクスチャ (ミップマッピングなし、つまり 1 つのレベルしか存在しない) が4 つのテクセルのちょうど真ん中でサンプリングされた場合、どのような値が返されますか?

残念ながら、公式ドキュメントにはそれに関する単一のメモはありません。

アップデート:

実際、十字架全体はかなりあいまいに見えます。次の図ではx、あいまいな点 (線) で描画しました。4 つのテクセルは で示されていoます。

o---x---o
|   x   |
x x x x x
|   x   |
o---x---o

では、テクスチャが でサンプリングされた場合、どの値が返されるxのでしょうか?

4

2 に答える 2

2

セクション 3.8.8 (175 ページ)を正しく読むfloor()と、両方の軸で使用されているように見えます。

o4--xA--o3
|   x   |
x x x x xB
|   x   |
o1--x---o2

したがって、すべてのxes は sample になりますo1。と を除いてxA、 とxBをサンプリングo4o2ます。

于 2013-07-16T17:07:46.340 に答える
1

選択した回答の仕様のセクションを読みましたが、選択した回答が間違っているようです。

GL_NEAREST を使用した場合の仕様によると、指定された (s,t,r) に対して返されるテクスチャ値は、i=floor(u)、j = floor(v) を持つテクセルの値です。テクセル (i,j) の値は、座標 (u,v)=(i+0.5, j+0.5) を持つ値であることに注意してください。図を参照してください。3.10 の 160 ページ。

これは、サンプル ポイントが与えられると、最も近いテクセルの値が使用されるという単純なルールに要約されます。2 つのテクセル センター間で正確にサンプリングする場合は、右側または上部にあるものが使用されます。たとえば、u=1 (テクセル 0 と 1 の中心の間の距離が等しい) でサンプリングする場合は、右側のテクセルである i=floor(1)=1 を選択します。テクセルの中心は u=1.5 です。

したがって、次のようになります。

o4----x3----o3
|     x3     |
x4 x4 x3 x3 x3
|     x2     |
o1----x2----o2

また、OpenGL ES を使用して、フラグメント シェーダー内から事前定義された s,t 座標で色分けされたテクスチャをサンプリングすることでテストを実行しましたが、期待どおりに動作しました。

于 2015-11-24T21:34:15.430 に答える