C# XNA 4.0中各向异性夹钳和各向异性包裹的区别?

C# XNA 4.0中各向异性夹钳和各向异性包裹的区别?,c#,xna,C#,Xna,我知道这两种方法都是纹理过滤的方法,但是夹持和包裹有什么区别?哪一个更好 编辑:我用集成显卡尝试了这两种方法,发现各向异性缠绕显示出比各向异性夹紧更低的FPS。“各向异性包裹”比“各向异性夹钳”渲染出更好的纹理,这是真的吗?我不是XNA开发人员,但对我来说,它们看起来不同 包含各向异性过滤和纹理的默认状态 配合夹紧 包含各向异性过滤和纹理的默认状态 协调包装 同时检查这些链接 我不是XNA开发人员,但它们对我来说看起来不同 包含各向异性过滤和纹理的默认状态 配合夹紧 包含各向异性过

我知道这两种方法都是纹理过滤的方法,但是夹持和包裹有什么区别?哪一个更好


编辑:我用集成显卡尝试了这两种方法,发现各向异性缠绕显示出比各向异性夹紧更低的FPS。“各向异性包裹”比“各向异性夹钳”渲染出更好的纹理,这是真的吗?

我不是XNA开发人员,但对我来说,它们看起来不同

包含各向异性过滤和纹理的默认状态 配合夹紧

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

同时检查这些链接


我不是XNA开发人员,但它们对我来说看起来不同

包含各向异性过滤和纹理的默认状态 配合夹紧

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

同时检查这些链接


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

(0, 0)     (1, 0) 
  o----------o
  |          |
  o----------o
(0, 1)     (1, 1)
(-1, -1)    (2, -1) 
  o----------o
  |          |
  o----------o
(-1, 2)     (2, 2)
纹理坐标的范围为[0,1]。渲染时,纹理的左上角将显示在多边形的左上角,纹理的右下角将显示在多边形的右下角,依此类推

现在,假设您按如下方式排列UV坐标:

(0, 0)     (1, 0) 
  o----------o
  |          |
  o----------o
(0, 1)     (1, 1)
(-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,依此类推。这会导致纹理包裹,使其呈现平铺外观。

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

(0, 0)     (1, 0) 
  o----------o
  |          |
  o----------o
(0, 1)     (1, 1)
(-1, -1)    (2, -1) 
  o----------o
  |          |
  o----------o
(-1, 2)     (2, 2)
纹理坐标的范围为[0,1]。渲染时,纹理的左上角将显示在多边形的左上角,纹理的右下角将显示在多边形的右下角,依此类推

现在,假设您按如下方式排列UV坐标:

(0, 0)     (1, 0) 
  o----------o
  |          |
  o----------o
(0, 1)     (1, 1)
(-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,依此类推。这会导致纹理缠绕,使其呈现平铺的外观。

OP还询问了哪种模式“更好”,虽然我不是OP,但我觉得问题的特定部分没有得到真正解决(而你在回答其余问题时做得很好!)。在什么情况下,我希望使用一种采样状态而不是另一种?虽然我可以使用
WRAP
状态并期望纹理在外观上平铺,但如果我使用
CLAMP
状态,我可以期望纹理看起来是什么样子?你不能真的说一个比另一个“更好”。如果指定的纹理坐标超过[0,1]范围,则在钳制状态下,纹理将在边缘周围显示“拉伸”。只要你把坐标保持在这个范围内,它们就会看起来一模一样。在某些情况下需要指定钳制,例如,在Reach配置文件下的两种纹理的非幂次。OP还询问哪种模式“更好”,虽然我不是OP,但我觉得问题的特定部分没有得到真正解决(而你在回答其余问题时做得很好!)。在什么情况下,我希望使用一种采样状态而不是另一种?虽然我可以使用
WRAP
状态并期望纹理在外观上平铺,但如果我使用
CLAMP
状态,我可以期望纹理看起来是什么样子?你不能真的说一个比另一个“更好”。如果指定的纹理坐标超过[0,1]范围,则在钳制状态下,纹理将在边缘周围显示“拉伸”。只要你把坐标保持在这个范围内,它们就会看起来一模一样。在某些情况下,需要指定“钳制”,例如,在“到达”轮廓下使用非幂次的两种纹理。