1附近的纹理坐标表现异常

1附近的纹理坐标表现异常,第1张

1附近的纹理坐标表现异常 使用
GL_CLAMP_TO_EDGE
您的纹理的
GL_TEXTURE_WRAP_S

出现此问题的部分原因是纹理坐标 1.0 引用的位置超出了最后一个texel的中心。钳夹到边缘将使您的坐标沿该

S
方向被钳夹到边缘纹理像素的中心。

对纹理进行采样时,如果坐标不指向确切的纹理像素中心,则过滤器模式和环绕行为将指示从何处获取纹理像素。默认情况下,OpenGL使用重复模式,因此,接近
1.0
的纹理坐标的最近邻居(最近的纹理像素中心)可能来自纹理的另一侧(重复)。对于普通图像,您甚至可能没有注意到这种行为,但是当您将其环绕在查找表的另一侧时,不连续性可能非常明显。

这是说明此的图:

http://i.msdn.microsoft.com/dynimg/IC83860.gif

注意,纹理坐标 1.0 实际上是如何引用调色板条目 30 之间的边界的?

简短的版本是,如果您的范围是从 0.01.0,
则您的纹理坐标都没有参考texel中心,您可以轻松结束错误的texel采样。您需要调整坐标,以免每个调色板条目都使用纹理像素边界。


另外,由于您使用的GLSL≥130,因此可以

texelFetch(...)
完全忽略所有这些归一化的纹理坐标。如果要使用其
a
组件获取纹理的调色板条目,请尝试如下 *** 作:

gl_FragColor = texelFetch (palette, (int)(texture2D (texture, uv).a * 255.0), 0);

这将显式获取整数索引给定的纹理元素。您不必担心最近的邻居,包装模式,过滤等。



欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/5655128.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-12-16
下一篇2022-12-16

发表评论

登录后才能评论

评论列表(0条)

    保存