通过调试,我发现,在长度为128个像素的一维纹理中,我必须在GLSL片段着色器中将我的s坐标夹紧到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设置为GL_NEAREST (在GL_REPEAT模式下),它的工作方式就像在指定的s的右侧查看纹理一样,而对于GL_LINEAR过滤器,则需要为s==1取左纹理和右纹理的平均值。
我的结论正确吗?纹理坐标的末端是在纹理的外部边缘,而不是在它们的中心?
发布于 2016-07-05 08:33:03
我得出的结论是,纹理坐标范围的末端不是在边缘纹理的中心,而是在它们的外部边缘。
对,是这样。
https://stackoverflow.com/questions/38196694
复制相似问题