Супер размытые текстуры - XNA - PullRequest
2 голосов
/ 01 декабря 2011

Кажется, я получаю очень размытые текстуры, когда смотрю на свои текстуры близко. Я создаю объект, похожий на майнкрафт, и хотел бы, чтобы текстуры были пикселизированы - как будто они сделаны, а не XNA, чтобы попытаться сгладить их для меня.

Вот как это выглядит: http://s1100.photobucket.com/albums/g420/darestium/?action=view&current=bluryminecraftterrain.png

Любые предложения будут очень уместны.

1 Ответ

11 голосов
/ 01 декабря 2011

Это не связано с сглаживанием ... это связано с тем, как аппаратные средства сэмплируют тексели в текстуре. Фильтр по умолчанию в XNA обычно является линейным, но для получения таких «блочных» текстур вы должны использовать Point.

В C # вы можете настроить любое из ваших SamplerStates на использование PointWrap. Это комбинация точечной фильтрации с УФ-обертыванием.

// 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;
};

Вы также можете принудительно отключить отображение, если для MipFilter установлено значение Нет.

...