मैं पूछना चाहता हूं कि क्या Effect
XNA में पैरामीटर सेट करने के लिए सबसे अच्छा अभ्यास है । या दूसरे शब्दों में, जब मैं कहता हूं तो वास्तव में क्या होता है pass.Apply()
। मैं कई परिदृश्यों की कल्पना कर सकता हूं:
- प्रत्येक बार
Apply
कहा जाता है, सभी प्रभाव मापदंडों को GPU में स्थानांतरित कर दिया जाता है और इसके बाद इसका कोई वास्तविक प्रभाव नहीं होता है कि मैं कितनी बार एक पैरामीटर सेट करता हूं। - हर बार
Apply
कॉल किया जाता है, केवल उन मापदंडों को स्थानांतरित किया जाता है जिन्हें रीसेट किया गया था। इसलिए सेट-ऑपरेशन को कैशिंग करना जो वास्तव में एक नया मूल्य निर्धारित नहीं करता है, से बचा जाना चाहिए। - हर बार
Apply
कॉल किया जाता है, केवल जो पैरामीटर बदले गए हैं वे स्थानांतरित किए जाते हैं। इसलिए सेट-ऑपरेशन को कैशिंग करना बेकार है। - यह पूरा सवाल बूटलेस है क्योंकि उल्लेख के किसी भी तरीके का खेल के प्रदर्शन पर कोई उल्लेखनीय प्रभाव नहीं है।
तो अंतिम सवाल: क्या सेट ऑपरेशन के कुछ कैशिंग को लागू करना उपयोगी है जैसे:
private Matrix _world;
public Matrix World
{
get{ return _world; }
set
{
if (value == world) return;
_effect.Parameters["xWorld"].SetValue(value);
_world = value;
}
}
आपका धन्यवाद।