2016-07-05 1 views
0

が、私は長さが128個のピクセルの1Dテクスチャーで、私は私のsない範囲[0,1]に、しかし[0,1-1./257]のようなものにGLSLフラグメントシェーダでtexture1Dに渡された座標をクランプする必要があることがわかりました(257->258が与える増加アーチファクトバック; 0.99610897に二等分して得られた数)。そうでなければ、私はs==0で得られた値の繰り返しを持っています。テクスチャ座標範囲は、エッジテクセルの外側のエッジで終了していますか?私のデバッグから

これはもちろん、GL_REPEATの代わりにをGL_CLAMP_TO_EDGEに設定すると発生しません。

テクスチャ座標範囲の端がエッジテクセルの中心ではなく、その外側のエッジにあるという結論に至りました。

それから、私は(GL_REPEATモードで)GL_NEARESTGL_TEXTURE_*_FILTERを設定した場合、サンプリングが指定さsの右にあるテクセルを見ているかのようGL_LINEARフィルタのために、それは、左右の平均をとりながら、それは、動作することを意味するだろうs==1のテクセル。

私の結論は正しいですか?テクスチャの両端は、テクスチャの中心ではなく、テクセルの外側の端にありますか?

+1

はい。それが本当に理にかなっている唯一の方法です。 [0、1]はテクセルの全範囲をカバーするので、s = 1は右端のテクセルの右端でなければならない。同じ質問ではありませんが、説明は私の答えと非常に似ています:http://stackoverflow.com/questions/31810822/opengl-3d-texture-shine-through。 –

答えて

0

テクスチャの座標範囲の端は、エッジテクセルの中心ではなく、その外側のエッジにあるという結論に至りました。

正しい。

関連する問題