ฉันจะปิดการใช้งานการกรองพื้นผิวสำหรับสไปรท์สเกลใน XNA 4.0 ได้อย่างไร


22

ฉันมีเทพดาที่ฉันพยายามไต่ระดับขึ้นใน XNA แต่ XNA กำลังใช้การกรองพื้นผิวบางชนิดที่ทำให้มันเรียบและทำให้ดูน่าเกลียด ฉันต้องการให้พิกเซลเพิ่มเป็นสองเท่าแทนการแก้ไข ฉันจะทำให้สำเร็จได้อย่างไร

คำตอบ:


28

คุณต้องตั้งค่าสถานะตัวอย่าง ค่าเริ่มต้นสำหรับ SpriteBatch คือSamplerState.LinearClamp(เช่น: การแก้ไขเชิงเส้น - แบบเรียบ / พร่ามัว)

เลือกหนึ่งในSpriteBatch.Beginสายที่ใช้SamplerStateและผ่านSamplerState.PointClamp(เลือกพิกเซลที่ precice "จุด")


13

ในกรณีที่คนอื่นกำลังสงสัยว่าจะทำสิ่งนี้นอกแบทสไปรท์ได้อย่างไรคุณจะทำสิ่งนี้ก่อนที่จะแสดงผลดั้งเดิมของคุณ:

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

สิ่งนี้จะต้องทำในทุก ๆ เฟรมหากมีรายการอื่นในขั้นตอนการเรนเดอร์ของคุณที่จะเปลี่ยนค่านี้ (เหมือนกSpriteBatch)


3
อ้อ! และเพื่อความสมบูรณ์ก็มีSamplerState.PointWrapถ้าคุณต้องการให้การห่อพื้นผิวเกิดขึ้น (ในขณะที่ยังคงปิดการใช้งานการกรองพื้นผิว) หรือหากคุณต้องการพฤติกรรมของคุณเองคุณสามารถสร้างใหม่SamplerStateวัตถุเพื่อให้พอดีกับความต้องการที่กำหนดเองใด ๆ และเปลี่ยนคุณสมบัติการFilter TextureFilter.Point
David Gouveia
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.