Jak wyłączyć filtrowanie tekstur dla skalowania ikonek w XNA 4.0?


22

Mam duszka, którego próbuję skalować w XNA, ale XNA stosuje filtrowanie tekstur, które wygładza go i sprawia, że ​​wygląda brzydko. Chciałbym, żeby po prostu podwajało piksele zamiast interpolacji. Jak mam to osiągnąć?

Odpowiedzi:


28

Musisz ustawić stan próbnika. Domyślna wartość dla SpriteBatch to SamplerState.LinearClamp(tj .: interpolacja liniowa - gładka / rozmyta ).

Wybierz jedno z SpriteBatch.Beginwywołań, które przyjmują SamplerStatei przekazują SamplerState.PointClamp(wybiera piksel w tym „punkcie” poprzedniej części).


13

Na wypadek, gdyby ktoś zastanawiał się, jak to zrobić poza partią duszka, zrób to tuż przed renderowaniem prymitywów:

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

Należy to zrobić w każdej ramce, jeśli w potoku renderowania znajdują się inne elementy, które zmieniłyby tę wartość (jak a SpriteBatch).


3
Tak! I tylko ze względu na kompletność, istnieje również SamplerState.PointWrapopcja, jeśli chcesz, aby zawijanie tekstur miało miejsce (jednocześnie wyłączając filtrowanie tekstur). Lub jeśli potrzebujesz własnego niestandardowego zachowania, możesz utworzyć nowy SamplerStateobiekt, który będzie pasował do dowolnych niestandardowych potrzeb i zmienić Filterwłaściwość na TextureFilter.Point.
David Gouveia,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.