Como desabilito a filtragem de textura para o dimensionamento de sprites no XNA 4.0?


22

Eu tenho um sprite que estou tentando ampliar no XNA, mas o XNA está aplicando algum tipo de filtragem de textura que suaviza e faz com que pareça feia. Eu gostaria que apenas fizesse duplicação de pixels em vez de interpolação. Como eu conseguiria isso?

Respostas:


28

Você precisa definir o estado do amostrador. O padrão para SpriteBatch é SamplerState.LinearClamp(ou seja: interpolação linear - a suave / embaçada).

Escolha uma das SpriteBatch.Beginchamadas que recebe SamplerStatee passa SamplerState.PointClamp(seleciona o pixel no "ponto" do preço).


13

Caso alguém esteja se perguntando como fazer isso fora de um lote de sprites, você faria isso antes de renderizar suas primitivas:

this.GraphicsDevice.SamplerStates[0] = SamplerState.PointClamp;

Isso deve ser feito em todos os quadros, se houver outros itens em seu pipeline de renderização que alterem esse valor (como a SpriteBatch).


3
Sim! E, apenas por uma questão de completude, também há uma questão de SamplerState.PointWrapse você deseja que a quebra de textura ocorra (enquanto ainda desativa a filtragem de textura). Ou, se você precisar de seu próprio comportamento personalizado, poderá criar um novo SamplerStateobjeto para atender a quaisquer necessidades personalizadas e alterar a Filterpropriedade para TextureFilter.Point.
David Gouveia
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.