Tôi đang sử dụng OpenAL để phát âm thanh. Tôi đang cố gắng thực hiện một chức năng chơi lửa và quên lấy ID bộ đệm và gán nó cho một nguồn từ một nhóm mà tôi đã phân bổ trước đó và chơi nó. Tuy nhiên, có một vấn đề với tuổi thọ đối tượng.
Trong OpenGL, xóa các chức năng tự động hủy liên kết mọi thứ (ví dụ như kết cấu) hoặc tự động xóa nội dung khi cuối cùng không bị ràng buộc (ví dụ: trình đổ bóng) và do đó thường dễ quản lý việc xóa. Tuy nhiên, alDeleteBuffers
thay vào đó chỉ đơn giản là thất bại với AL_INVALID_OPERATION
nếu bộ đệm vẫn bị ràng buộc với một nguồn.
Có một cách thành ngữ để "xóa" bộ đệm OpenAL cho phép họ chơi xong, sau đó tự động hủy liên kết và thực sự chúng? Tôi có cần buộc quản lý bộ đệm sâu hơn vào nhóm nguồn không (ví dụ: xóa bộ đệm yêu cầu kiểm tra tất cả các nguồn được phân bổ)?
Tương tự, có một cách thành ngữ để hủy liên kết (nhưng không xóa) bộ đệm khi chúng chơi xong? Sẽ thật tuyệt nếu, khi tôi đang tìm kiếm một nguồn miễn phí, tôi chỉ cần xem liệu bộ đệm có được đính kèm hay không và không cần kiểm tra trạng thái nguồn.
(Tôi đang sử dụng C ++, mặc dù các cách tiếp cận cho C cũng tốt. Cách tiếp cận giả sử ngôn ngữ GCd và sử dụng công cụ hoàn thiện có thể không áp dụng được.)