मैं साउंड्स खेलने के लिए OpenAL का उपयोग कर रहा हूँ। मैं एक आग-और-भूल खेलने के कार्य को लागू करने की कोशिश कर रहा हूं जो एक बफर आईडी लेता है और इसे एक स्रोत से आवंटित करता है जिसे मैंने पहले आवंटित किया है, और इसे खेलता है। हालांकि, वस्तु जीवनकाल के साथ एक समस्या है।
ओपनजीएल में, फ़ंक्शंस को या तो स्वचालित रूप से चीजों को अनबाइंड (जैसे बनावट) हटा दें, या स्वचालित रूप से उस चीज़ को हटा देता है जब वह अंततः अनबाउंड (जैसे शेड्स) होता है और इसलिए आमतौर पर डिलीट को प्रबंधित करना आसान होता है। हालांकि alDeleteBuffers
इसके बजाय बस के साथ विफल रहता है AL_INVALID_OPERATION
अगर बफर अभी भी एक स्रोत के लिए बाध्य है।
क्या OpenAL बफ़र्स को "हटाने" का एक मुहावरेदार तरीका है जो उन्हें खेल खत्म करने की अनुमति देता है, और फिर स्वचालित रूप से उन्हें अंधा कर देता है और वास्तव में उन्हें? क्या मुझे बफर प्रबंधन को स्रोत पूल में अधिक गहराई से बाँधने की आवश्यकता है (उदाहरण के लिए एक बफर को हटाने के लिए सभी आवंटित स्रोतों की भी जाँच की आवश्यकता होती है)?
इसी तरह, बफ़र्स को अनबाइंड (लेकिन डिलीट नहीं) करने का एक मुहावरेदार तरीका है जब वे खेल खत्म कर रहे हैं? यह अच्छा होगा यदि, जब मैं एक मुक्त स्रोत की तलाश में था, तो मुझे केवल यह देखने की ज़रूरत थी कि क्या कोई बफर बिल्कुल जुड़ा हुआ है और स्रोत राज्य की जांच करने से परेशान नहीं है।
(मैं सी ++ का उपयोग कर रहा हूं, हालांकि सी के लिए दृष्टिकोण भी ठीक हैं। जीसीडी भाषा को मानने वाले दृष्टिकोण और फाइनल का उपयोग करना संभवतः लागू नहीं होता है।)