2016-07-05 97 views
0

從我調試,我發現,隨着128個像素長的1D紋理我要夾緊我的s座標傳給texture1D在GLSL片段着色器不是範圍[0,1],而是要像[0,1-1./257](增加257->258給神器回;通過平分到0.99610897獲得的數字)。否則,我會重複在s==0處獲得的值。紋理座標範圍是否在邊緣紋素的外邊緣結束?

當然,當我將紋理參數GL_TEXTURE_WRAP_T設置爲GL_CLAMP_TO_EDGE而不是默認的GL_REPEAT時,不會發生這種情況。

我得出的結論是紋理座標範圍的末端不在邊緣紋素的中心,而是在它們的外邊緣。

然後,它將有道理,假如我GL_TEXTURE_*_FILTERGL_NEAREST(在GL_REPEAT模式),它的工作原理如果採樣看紋理像素在指定s的權,而GL_LINEAR過濾花費的平均左,右texels爲s==1

我的結論是否正確?紋理座標範圍的末端在紋理像素的外邊緣,而不是在它們的中心?

+1

是的。這是真正有意義的唯一方法。由於[0,1]覆蓋了整個紋素範圍,因此s = 1必須是最右邊紋素的右邊緣。雖然不是同一個問題,但解釋與我在這裏的答案非常相似:http://stackoverflow.com/questions/31810822/opengl-3d-texture-shine-through。 –

回答

0

我得出結論,紋理座標範圍的末端不在邊緣紋素的中心,而是在它們的外邊緣。

正確。