2010-10-21 24 views

Répondre

0

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.

+0

Merci. Je l'ai résolu en réglant le gain sur chaque son assigné au buffer. – brigadir

1

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".