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_*_FILTER
到GL_NEAREST
(在GL_REPEAT
模式),它的工作原理如果採樣看紋理像素在指定s
的權,而GL_LINEAR
過濾花費的平均左,右texels爲s==1
。
我的結論是否正確?紋理座標範圍的末端在紋理像素的外邊緣,而不是在它們的中心?
是的。這是真正有意義的唯一方法。由於[0,1]覆蓋了整個紋素範圍,因此s = 1必須是最右邊紋素的右邊緣。雖然不是同一個問題,但解釋與我在這裏的答案非常相似:http://stackoverflow.com/questions/31810822/opengl-3d-texture-shine-through。 –