纹理坐标范围是否在边缘纹素的外边缘结束?

Are texture coordinate range ends at the outer edges of edge texels?

从我的调试中,我发现对于长度为 128 像素的一维纹理,我必须将传递给 GLSL 片段着色器中的 texture1Ds 坐标限制在范围 [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 过滤器,它取 s==1 左右纹素的平均值。

我的结论正确吗?纹理坐标范围的末端是在纹素的外边缘,而不是在它们的中心吗?

I'm coming to a conclusion that the ends of texture coordinate range are not at the centers of edge texels, but at the outer edges of them.

正确。