从我的调试开始,我发现对于长度为128像素的1D纹理,我必须将传递给GLSL片段着色器中的s
的{{1}}坐标钳位到范围{{1但是texture1D
之类的东西(增加[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
模式下),那么就有意义了,就好像采样会查看指定的{{右侧的纹素。 1}},而对于GL_NEAREST
过滤器,它需要GL_REPEAT
的左右纹素平均值。
我的结论是否正确?纹理的末端坐标是纹素的外边缘,而不是它们的中心?
答案 0 :(得分:0)
我得出结论,纹理坐标范围的末端不是在边缘纹理像素的中心,而是在它们的外边缘。
正确。