XNA 4.0中Ani​​sotropicClamp和AnisotropicWrap之间的区别?

时间:2013-01-03 16:42:51

标签: c# xna

据我所知,两者都是纹理过滤的方法,但是夹子和包裹有什么区别?哪一个更好?

编辑:我尝试使用集成显卡,发现AnisotropicWrap显示的FPS低于AnisotropicClamp。 AnisotropicWrap是否真的呈现比AnisotropicClamp更好的纹理?

2 个答案:

答案 0 :(得分:4)

采样器状态负责告诉图形设备如何将纹理坐标转换为纹素。假设您有一个四边形多边形,其UV坐标排列如下:

(0, 0)     (1, 0) 
  o----------o
  |          |
  o----------o
(0, 1)     (1, 1)

纹理坐标的范围为[0,1]。渲染时,纹理的左上角将出现在多边形的左上角,纹理的右下角将出现在多边形的右下角,依此类推。 / p>

现在说你像这样安排你的紫外线坐标:

(-1, -1)    (2, -1) 
  o----------o
  |          |
  o----------o
(-1, 2)     (2, 2)

会发生什么?将这些坐标映射到纹理没有正确的方法,因为它们超出了我们的[0,1]范围!

答案是,您必须通过指定WRAPCLAMP采样器状态,告诉设备正确的方式。

CLAMP状态将纹理坐标钳位到[0,1]范围;坐标超出此范围的像素将显示最接近的有效纹理元素。

另一方面,WRAP状态假设纹理坐标是周期性的。坐标为1.5将被视为0.5,坐标-0.25将被视为0.75,依此类推。这会使纹理 wrap ,使其呈现平铺外观。

答案 1 :(得分:0)

我不是XNA开发人员,但他们看起来与我不同。

SamplerState.AnisotropicClamp

  

包含各向异性过滤和纹理的默认状态   协调钳制。

SamplerState.AnisotropicWrap

  

包含各向异性过滤和纹理的默认状态   协调包装。

也检查这些链接;