2010-10-30 12 views
8

मैं इंटरफ़ेस और डायरेक्टएक्स नामक इस चीज़ के साथ नया हूं। मैं एक निश्चित गेम से डायरेक्टएक्स इंटरफेस को जोड़ रहा हूं और मैं डायरेक्टएक्स का उपयोग कर अपने स्वयं के सामान, जैसे बनावट और फ़ॉन्ट्स का उपयोग कर रहा हूं। मेरी समस्या यह है कि: जब प्रोग्राम डिवाइस के हुक किए गए रीसेट फ़ंक्शन को कॉल करता है, तो मुझे अपनी सभी चीजों को स्मृति, कॉम इंटरफेस से साफ़ करने की आवश्यकता होती है। अगर मैं साफ़ नहीं करता, रीसेट ईवेंट कहने के बाद, गेम बस कोशिश करें एक नई सतह कॉलिंग d3dDierctx9Create बनाएं लेकिन इसकी असफल हो और बस एक त्रुटि करें और गेम को बंद करें।इंटरफेस कैसे मुक्त करें?

मुझे लगता है कि मुझे रीसेट ईवेंट से पहले सभी चीजों को साफ़ करने की आवश्यकता है, इसे एमएसडीएन पर समझाया गया है।

उत्तर

19

आप एक इंटरफ़ेस मुक्त नहीं करते हैं। यह संकलक द्वारा संदर्भित और प्रबंधित किया गया है। इसे दायरे से बाहर जाने दें, चर के लिए एक अलग इंटरफ़ेस असाइन करें, या शून्य को असाइन करें, और संकलक स्वचालित रूप से _Release विधि को कॉल जेनरेट करेगा ताकि इसकी संदर्भ संख्या 0.

पर हो जाए,
+0

तो डायरेक्टएक्स संसाधनों के साथ, यदि आप इसका समर्थन करते हैं, तो आप आमतौर पर 'ऑनसेटसेट' पर कॉल करते हैं, या उन्हें फिर से बनाते हैं और उन्हें डेल्फी चर में पुन: असाइन करते हैं। यह मूल संसाधन को स्वचालित रूप से मुक्त कर देगा, जैसे मेसन ने कहा ... _ आपको बस किसी अन्य चर में संसाधन को बनाए रखने के लिए वास्तव में सावधान रहना होगा, क्योंकि इससे संसाधन को freed_ (यानी संदर्भ गणना> 0) से रोका जा सकेगा। आम तौर पर संसाधनों का प्रबंधन करने वाले कुछ प्रकार के रैपर ऑब्जेक्ट्स का उपयोग करना थोड़ा आसान बनाता है। –

संबंधित मुद्दे