ฉันมีเทพดาที่ฉันพยายามไต่ระดับขึ้นใน XNA แต่ XNA กำลังใช้การกรองพื้นผิวบางชนิดที่ทำให้มันเรียบและทำให้ดูน่าเกลียด ฉันต้องการให้พิกเซลเพิ่มเป็นสองเท่าแทนการแก้ไข ฉันจะทำให้สำเร็จได้อย่างไร
ฉันมีเทพดาที่ฉันพยายามไต่ระดับขึ้นใน XNA แต่ XNA กำลังใช้การกรองพื้นผิวบางชนิดที่ทำให้มันเรียบและทำให้ดูน่าเกลียด ฉันต้องการให้พิกเซลเพิ่มเป็นสองเท่าแทนการแก้ไข ฉันจะทำให้สำเร็จได้อย่างไร
คำตอบ:
คุณต้องตั้งค่าสถานะตัวอย่าง ค่าเริ่มต้นสำหรับ SpriteBatch คือSamplerState.LinearClamp
(เช่น: การแก้ไขเชิงเส้น - แบบเรียบ / พร่ามัว)
เลือกหนึ่งในSpriteBatch.Begin
สายที่ใช้SamplerState
และผ่านSamplerState.PointClamp
(เลือกพิกเซลที่ precice "จุด")
ในกรณีที่คนอื่นกำลังสงสัยว่าจะทำสิ่งนี้นอกแบทสไปรท์ได้อย่างไรคุณจะทำสิ่งนี้ก่อนที่จะแสดงผลดั้งเดิมของคุณ:
this.GraphicsDevice.SamplerStates[0] = SamplerState.PointClamp;
สิ่งนี้จะต้องทำในทุก ๆ เฟรมหากมีรายการอื่นในขั้นตอนการเรนเดอร์ของคุณที่จะเปลี่ยนค่านี้ (เหมือนกSpriteBatch
)
SamplerState.PointWrap
ถ้าคุณต้องการให้การห่อพื้นผิวเกิดขึ้น (ในขณะที่ยังคงปิดการใช้งานการกรองพื้นผิว) หรือหากคุณต้องการพฤติกรรมของคุณเองคุณสามารถสร้างใหม่SamplerState
วัตถุเพื่อให้พอดีกับความต้องการที่กำหนดเองใด ๆ และเปลี่ยนคุณสมบัติการFilter
TextureFilter.Point