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ąć?
22
Musisz ustawić stan próbnika. Domyślna wartość dla SpriteBatch to SamplerState.LinearClamp
(tj .: interpolacja liniowa - gładka / rozmyta ).
Wybierz jedno z SpriteBatch.Begin
wywołań, które przyjmują SamplerState
i przekazują SamplerState.PointClamp
(wybiera piksel w tym „punkcie” poprzedniej części).
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
).
SamplerState.PointWrap
opcja, 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ć nowySamplerState
obiekt, który będzie pasował do dowolnych niestandardowych potrzeb i zmienićFilter
właściwość naTextureFilter.Point
.