超级模糊纹理 – XNA

当我近距离观察纹理时,我似乎得到了非常模糊的纹理。 我正在创建一个类似Minecraft的地形,我希望纹理像素化 – 就像它是制作而不是XNA试图为我平滑它。

以下是它的显示方式: http : //s1100.photobucket.com/albums/g420/darestium/?action = view&current = bluryminecraftterrain.png

任何建议都会受到很多限制。

它与抗锯齿无关……它与硬件如何对纹理中的纹素进行采样有关。 XNA中的默认filter通常是线性的,但要获得那些“块状”外观纹理,您必须使用Point。

在C#中,您可以将任何SamplerStates设置为使用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 = ; MipFilter = Point; MagFilter = Point; MinFilter = Point; AddressU = Wrap; AddressV = Wrap; }; 

您也可以在MipFilter设置为None时强制关闭mipmapping。