我知道这两种方法都是纹理过滤的方法,但是clamp和wrap有什么区别?哪一个更好?
编辑:我尝试使用集成显卡,发现 AnisotropicWrap 显示的 FPS 低于 AnisotropicClamp。AnisotropicWrap 渲染的纹理是否真的比 AnisotropicClamp 更好?
采样器状态负责告诉图形设备如何将纹理坐标转换为纹素。假设您有一个四边形多边形,其 UV 坐标排列如下:
(0, 0) (1, 0)
o----------o
| |
o----------o
(0, 1) (1, 1)
纹理坐标的范围是 [0, 1]。渲染时,纹理的左上角将出现在多边形的左上角,纹理的右下角将出现在多边形的右下角,以此类推。
现在假设你像这样安排你的 UV 坐标:
(-1, -1) (2, -1)
o----------o
| |
o----------o
(-1, 2) (2, 2)
怎么了?没有正确的方法将这些坐标映射到纹理,因为它们超出了我们的 [0, 1] 范围!
答案是您必须通过指定采样器状态或采样器状态来告诉设备正确的方法是什么。 WRAP
CLAMP
一个CLAMP
状态将纹理坐标钳制在 [0, 1] 范围内;坐标超出此范围的像素将显示最接近的有效纹素。
WRAP
另一方面,状态假定纹理坐标是循环的。1.5 的坐标将被视为 0.5,-0.25 的坐标将被视为 0.75,依此类推。这会导致纹理wrap,使其具有平铺外观。
我不是 XNA 开发人员,但它们对我来说看起来不同。
包含各向异性过滤和纹理坐标钳制的默认状态。
包含各向异性过滤和纹理坐标环绕的默认状态。
还要检查这些链接;