ฉันใช้ OpenAL เพื่อเล่นเสียง ฉันพยายามที่จะใช้ฟังก์ชั่นการเล่นแบบไฟและลืมที่ใช้บัฟเฟอร์ ID และกำหนดให้กับแหล่งที่มาจากพูลที่ฉันได้จัดสรรไว้ก่อนหน้านี้และเล่นมัน อย่างไรก็ตามมีปัญหาเกี่ยวกับอายุการใช้งานของวัตถุ
ใน OpenGL ให้ลบฟังก์ชั่นทั้งยกเลิกการผูกสิ่งต่าง ๆ โดยอัตโนมัติ (เช่นพื้นผิว) หรือลบสิ่งโดยอัตโนมัติเมื่อในที่สุดมันก็ไม่ได้ถูกผูก (เช่นตัวแปลง) และดังนั้นจึงเป็นเรื่องง่ายที่จะจัดการการลบ อย่างไรก็ตามalDeleteBuffers
แทนที่จะล้มเหลวAL_INVALID_OPERATION
หากบัฟเฟอร์ยังคงถูกผูกไว้กับแหล่งที่มา
มีวิธีการ "ลบ" บัฟเฟอร์แบบเปิดที่ทำให้พวกเขาเล่นจนจบแล้วยกเลิกการผูกและโดยอัตโนมัติหรือไม่? ฉันจำเป็นต้องผูกการจัดการบัฟเฟอร์อย่างลึกซึ้งยิ่งขึ้นลงในพูลแหล่งที่มาหรือไม่ (เช่นการลบบัฟเฟอร์จำเป็นต้องตรวจสอบแหล่งที่ปันส่วนทั้งหมดด้วย)
ในทำนองเดียวกันมีวิธีใช้สำนวนเพื่อแยกบัฟเฟอร์ (แต่ไม่ลบ) เมื่อเล่นเสร็จหรือไม่ มันจะดีถ้าเมื่อฉันกำลังมองหาแหล่งฟรีฉันเพียงต้องการดูว่าบัฟเฟอร์ถูกแนบเลยและไม่ต้องตรวจสอบสถานะของแหล่งที่มา
(ฉันใช้ C ++ แม้ว่าวิธีการสำหรับ C ก็ใช้ได้เช่นกันวิธีคิดว่าเป็นภาษา GCd และการใช้ finalizers อาจไม่สามารถใช้ได้)