Đăng câu hỏi này trên SO nhưng không có câu trả lời. Có lẽ ai đó có thể giúp tôi ở đây.
Gần đây tôi đã có một chương trình hoạt động tốt, phát trực tiếp âm thanh WAV và Ogg với OpenAL. Sau đó tôi quyết định trừu tượng hóa các đối tượng nguồn và bộ đệm thành các lớp C ++. Tôi đã đi xa như lớp nguồn. Hàm của tôi trả về số lượng bộ đệm đã xử lý không làm thay đổi số nguyên được truyền cho alGetSourcei
.
int ALSource::GetBuffersProcessed() const {
ALint processed;
alGetSourcei(this->source, AL_BUFFERS_PROCESSED, &processed);
int error = alGetError();
if(error != AL_NO_ERROR)
return -1;
return processed;
}
Tôi đã kiểm tra đó error
không bao giờ là bất cứ điều gì nhưng AL_NO_ERROR
. Tôi tạo nguồn trong hàm tạo:
alGenSources(1, &source);
Điều này cũng không bao giờ đưa ra bất kỳ lỗi nào.
Triệu chứng thực tế của điều này là processed
được khai báo nhưng không được khởi tạo. Giá trị cuối cùng của nó là giá trị rác ban đầu mà nó bắt đầu. (Thường là một cái gì đó như -8834824334).
Đây sẽ là hành vi dự kiến? Đặc tả OpenAL nói rằng giá trị nên từ 0 - any
nhưng không thực sự cụ thể hơn giá trị đó. Hướng dẫn của các lập trình viên là như nhau.