मैं XNA 4.0 में स्प्राइट स्केलिंग के लिए बनावट फ़िल्टरिंग को कैसे अक्षम करूं?


22

मेरे पास एक स्प्राइट है जिसे मैं एक्सएनए में स्केल करने की कोशिश कर रहा हूं, लेकिन एक्सएनए कुछ प्रकार की बनावट को छान रहा है जो इसे चिकना करता है और इसे बदसूरत दिखता है। मैं इसे सिर्फ प्रक्षेप के बजाय पिक्सेल दोहरीकरण करना चाहूंगा। मैं इसे कैसे पूरा करूंगा?

जवाबों:


28

आपको नमूना स्थिति सेट करने की आवश्यकता है। SpriteBatch के लिए डिफ़ॉल्ट है SamplerState.LinearClamp(यानी: रैखिक प्रक्षेप - चिकनी / धुंधली)।

उन SpriteBatch.Beginकॉलों में से एक चुनें, जो एक लेता है SamplerStateऔर पास होता है SamplerState.PointClamp(उस "बिंदु" पर पिक्सेल का चयन करता है)।


13

बस अगर कोई और सोच रहा है कि इसे स्प्राइट बैच के बाहर कैसे किया जाए, तो आप अपने आदिमों को प्रस्तुत करने से ठीक पहले ऐसा करेंगे:

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

यह हर फ्रेम पर किया जाना चाहिए, यदि आपके रेंडरिंग पाइपलाइन में अन्य आइटम हैं जो इस मान (जैसे SpriteBatch) को बदल देंगे ।


3
हां! और सिर्फ पूर्णता के लिए, SamplerState.PointWrapयदि आप टेक्सचर रैपिंग करना पसंद करते हैं (जबकि अभी भी टेक्सटाइल फ़िल्टरिंग को अक्षम कर रहे हैं) करना चाहते हैं। या यदि आपको अपने स्वयं के कस्टम व्यवहार की आवश्यकता है, तो आप SamplerStateकिसी भी कस्टम आवश्यकताओं को फिट करने के लिए एक नई वस्तु बना सकते हैं, और Filterसंपत्ति को बदल सकते हैं TextureFilter.Point
डेविड गोवेया
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.