XNA 4.0'da sprite ölçeklendirme için doku filtrelemeyi nasıl devre dışı bırakırım?


22

XNA'da ölçeklendirmeye çalıştığım bir sprite'ım var, ancak XNA düzgünleştiren ve çirkin görünmesini sağlayan bir çeşit doku filtrelemesi uyguluyor. Enterpolasyon yerine sadece piksel katlama yapmasını istiyorum. Bunu nasıl başarabilirim?

Yanıtlar:


28

Örnekleyici durumunu ayarlamanız gerekir. SpriteBatch için varsayılan SamplerState.LinearClamp(örn: doğrusal enterpolasyon - düz / bulanık olan).

Gelen ve gelen SpriteBatch.Beginaramalardan birini seçin (bu "nokta" daki pikseli seçer).SamplerStateSamplerState.PointClamp


13

Bir başkasının sprite partisinin dışında bunun nasıl yapıldığını merak etmesi durumunda, bunu ilkellerinizi yapmadan önce yaparsınız:

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

İşleme hattınızda bu değeri değiştirebilecek başka öğeler varsa (a gibi SpriteBatch) , bunun her karede yapılması gerekir .


3
Evet! Ve sadece tamlık uğruna, SamplerState.PointWrapdoku sarmalamanın yapılmasını istiyorsanız (doku filtrelemeyi hala devre dışı bırakırken) bir de var. Veya kendi özel davranışınıza ihtiyaç duyuyorsanız, SamplerStateözel gereksinimlerinize uyacak yeni bir nesne oluşturabilir ve Filterözelliği olarak değiştirebilirsiniz TextureFilter.Point.
David Gouveia
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.