2011-12-01 88 views

回答

11

这与抗锯齿无关......它与硬件如何在纹理中采样纹理相关。 XNA中的默认过滤器通常是线性的,但要获得那些“块状”外观纹理,您必须使用Point。

在C#中,您可以设置任何SamplerState以使用PointWrap。这是点过滤与UV包装的组合。

// any state index from 0 to 15, textures usually take 0 first  
GraphicsDevice.SamplerStates[0] = SamplerState.PointWrap; 

但是它必须被指派到与SamplerState相同的寄存器。例如。寄存器s0通常是SamplerStates [0]。 另外,您可以在着色器执行采样的状态,并在其中设置您的寄存器:

sampler2D textureSampler : register(s0) = sampler_state 
{ 
    Texture = <Texture>; 
    MipFilter = Point; 
    MagFilter = Point; 
    MinFilter = Point; 
    AddressU = Wrap; 
    AddressV = Wrap; 
}; 

您还可以强制关闭mipmapping贴图与MipFilter设置为无。

+4

+1,因为这是正确的答案。 –

+0

应该过滤器不是最接近而不是线性? –

+0

@FelixK。你是对的,我做了这个改正。该过滤器实际上称为点,它与最近邻过滤器相同。 –