J'ai essayéComment régler le gain de canal dans OpenAL?
alBufferf (myChannelId, AL_MAX_GAIN (and AL_GAIN), volumeValue);
et a reçu l'erreur 0xA002.
J'ai essayéComment régler le gain de canal dans OpenAL?
alBufferf (myChannelId, AL_MAX_GAIN (and AL_GAIN), volumeValue);
et a reçu l'erreur 0xA002.
0xA002 est une erreur ILLÉGAL ENUM dans linux.
Vous avez obtenu que parce qu'il est impossible de modifier le gain d'un tampon. Il n'y a rien comme ça.
Ce que vous pouvez faire est de définir l'attribut AL_GAIN soit à l'auditeur (l'appliquer à toutes les sources dans le contexte actuel) ou à une source particulière.
Comme Isaac a dit, vous voulez probablement être réglage du gain sur vos une source:
alSourcef (sourceID, AL_GAIN, volume)
Pour éviter recieving codes d'erreur mystérieux à l'avenir, vous devriez prendre l'habitude du scrutin pour les erreurs après les appels que vous penser peut échouer/appelle que vous essayez de déboguer.
De cette façon, vous sauriez immédiatement que "0xA002" est "AL_INVALID_ENUM".
Pour ce faire, avec OpenAL vous appelez « alGetError() » qui efface et renvoie l'erreur la plus récente;
ALenum ALerror = AL_NO_ERROR;
ALerror = alGetError();
std::cout << getALErrorString(ALerror) << std::endl;
Vous aurez besoin d'écrire quelque chose comme ça pour prendre un code d'erreur et retourner/imprimer une chaîne
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;
};
}
Vous pouvez rechercher exactement ce que le code d'erreur pour un appel de fonction spécifique dans OpenAL Programmer's Guide .
Par exemple, à la page 39, vous pouvez voir AL_INVALID_ENUM sur alSourcef signifie "Le paramètre spécifié n'est pas valide".
Merci. Je l'ai résolu en réglant le gain sur chaque son assigné au buffer. – brigadir