Hat diese Frage auf SO gepostet, aber keine Antworten erhalten. Vielleicht kann mir hier jemand helfen.
Ich hatte kürzlich ein gut funktionierendes Programm, das WAV- und Ogg-Sounds mit OpenAL gestreamt hat. Ich habe mich dann entschlossen, die Quell- und Pufferobjekte in C ++ - Klassen zu abstrahieren. Ich bin bis zur Quellklasse gekommen. Meine Funktion, die die Anzahl der verarbeiteten Puffer zurückgibt, ändert die an übergebene Ganzzahl nicht 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;
}
Ich habe überprüft, dass error
das nie etwas anderes ist AL_NO_ERROR
. Ich generiere die Quelle im Konstruktor:
alGenSources(1, &source);
Dies gibt auch nie einen Fehler.
Das eigentliche Symptom dafür ist, dass processed
es deklariert, aber nicht initialisiert wird. Der endgültige Wert ist der anfängliche Junk-Wert, mit dem er beginnt. (Normalerweise so etwas wie -8834824334).
Wäre dies zu erwartendes Verhalten? Die OpenAL-Spezifikation besagt, dass der Wert von sein sollte, 0 - any
aber nicht wirklich spezifischer ist. Die Programmieranleitung ist dieselbe.