Как сказал Исаак, вы, вероятно, хотите установить усиление для своих источников:
alSourcef (sourceID, AL_GAIN, volume)
Чтобы избежать получения загадочных кодов ошибок в будущем, вы должны привыкнуть к опросу на наличие ошибок после вызовов, которые, по вашему мнению, могут быть неудачными / вызовов, которые вы пытаетесь отладить.
Таким образом, вы сразу узнаете, что "0xA002" равно " AL_INVALID_ENUM ".
Чтобы сделать это с OpenAL, вы вызываете «alGetError ()», который очищает и возвращает самую последнюю ошибку;
ALenum ALerror = AL_NO_ERROR;
ALerror = alGetError();
std::cout << getALErrorString(ALerror) << std::endl;
Вам нужно написать что-то вроде этого, чтобы взять код ошибки и вернуть / напечатать строку
std::string getALErrorString(ALenum err) {
switch(err) {
case AL_NO_ERROR: return std::string("AL_NO_ERROR - (No error)."); break;
case AL_INVALID_NAME: return std::string("AL_INVALID_NAME - Invalid Name paramater passed to AL call."); break;
case AL_INVALID_ENUM: return std::string("AL_INVALID_ENUM - Invalid parameter passed to AL call."); break;
case AL_INVALID_VALUE: return std::string("AL_INVALID_VALUE - Invalid enum parameter value."); break;
case AL_INVALID_OPERATION: return std::string("AL_INVALID_OPERATION"); break;
case AL_OUT_OF_MEMORY: return std::string("AL_OUT_OF_MEMORY"); break;
default: return std::string("AL Unknown Error."); break;
};
}
Вы можете точно узнать, что означает код ошибки для вызова определенной функции, в Руководство программиста OpenAL .
Например, на странице 39 вы можете увидеть AL_INVALID_ENUM, что в alSourcef означает « Указанный недопустимый параметр ».