Probleme bei OpenAl...
-
hi
ich versuche in einem Winapi Programm mit OpenAl eine wav datei abzuspielen...
So, dass WinApi programm funktioniert fehlerfrei, also geh ich da nicht weiter drauf ein.Ich habe noch keine Erfahrung mit OpenAl, daher habe ich mir erstmal einen Code aus dem Internet kopiert und in das Winapi Programm gesetzt. Nun wollte ich das daran erlernen. Beim Compilieren kommt kein Fehler, also startet er das Windows Programm udn ich drücke den Button, dieser soll die Funktion "int OpenAl()" starten und so die Sounddatei, die im gleichen Ordner wie die exe liegt, starten, aber kein sound kommt.
Wahrscheinlich übersehe ich was einfaches... Kann mir jemand da helfen?
Hier ist der OpenAl teil (beim compilieren kommt kein fehler)
// Buffers hold sound data. ALuint Buffer; // Sources are points of emitting sound ALuint Source; // Position of the source sound. ALfloat SourcePos[] = { 0.0, 0.0, 0.0 }; // Velocity of the source sound. ALfloat SourceVel[] = { 0.0, 0.0, 0.0 }; // Position of the listener. ALfloat ListenerPos[] = { 0.0, 0.0, 0.0 }; // Velocity of the listener. ALfloat ListenerVel[] = { 0.0, 0.0, 0.0 }; // Orientation of the Listener. (first 3 elements are "at", second 3 are "up". // Also note that these should be units of '1'. ALfloat ListenerOri[] = { 0.0, 0.0, -1.0, 0.0, 1.0, 0.0 }; ALboolean LoadALData() { // Variables to load into. ALenum format; ALsizei size; ALvoid* data; ALsizei freq; ALboolean loop; // Load wav data into a buffer. alGenBuffers( 1, &Buffer ); if ( alGetError() != AL_NO_ERROR ) return AL_FALSE; alutLoadWAVFile( "ts.wav", &format, &data, &size, &freq, &loop ); alBufferData( Buffer, format, data, size, freq ); alutUnloadWAV( format, data, size, freq ); // Bind buffer with a source. alGenSources( 1, &Source ); if ( alGetError() != AL_NO_ERROR ) return AL_FALSE; alSourcei ( Source, AL_BUFFER, Buffer ); alSourcef ( Source, AL_PITCH, 1.0f ); alSourcef ( Source, AL_GAIN, 1.0f ); alSourcefv( Source, AL_POSITION, SourcePos ); alSourcefv( Source, AL_VELOCITY, SourceVel ); //alSourcei ( Source, AL_LOOPING, loop); // Do another error check and return. if ( alGetError() == AL_NO_ERROR ) return AL_TRUE; return AL_FALSE; } void SetListenerValues() { alListenerfv( AL_POSITION, ListenerPos ); alListenerfv( AL_VELOCITY, ListenerVel ); alListenerfv( AL_ORIENTATION, ListenerOri ); } void KillALData() { alDeleteSources( 1, &Source ); alDeleteBuffers( 1, &Buffer ); alutExit(); } //alSourcei ( Source, AL_LOOPING, loop); int OpenAl() { // Initialize OpenAL and clear the error bit. //alutInit( *argc, argv[1] ); alutInit(0,NULL); alGetError(); // Setup an exit procedure. atexit( KillALData ); // Load the wav data. if ( LoadALData() == AL_FALSE ) return -1; SetListenerValues(); alSourcePlay( Source ); return 0; }
-
Ganz einfach: er fängt an zu spielen und beendet sich dann gleich.
füg einfach vor return 0:
int tempvar = 0; cin >> tempvar;ein und es sollte funktionieren. Zum beenden dann einfach eine Taste drücken.
-
hi
danke bloodycross

lag zwar nicht an dem fehlenden cin, weil ich das ja in einem windows programm laufen lasse und dies ja dauer offen bleibt, aber deine lösung hat mir beim problem geholfen
ist zwar ein bisschen dumm von mir gewesen, aber in der wav gab es die ersten 10 sec keinen sound, also habe ich immer gedacht es läuft nicht...

danke nochmal