diff --git a/CrystalJohan.vcxproj b/CrystalJohan.vcxproj index 1b7f959..2372055 100644 --- a/CrystalJohan.vcxproj +++ b/CrystalJohan.vcxproj @@ -103,12 +103,13 @@ Disabled _DEBUG;_CONSOLE;%(PreprocessorDefinitions) - freeglut/include + freeglut/include;C:\Program Files (x86)\OpenAL 1.1 SDK\include Console true - freeglut/lib + freeglut/lib;C:\Program Files (x86)\OpenAL 1.1 SDK\libs\Win32 + kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;OpenAL32.lib;%(AdditionalDependencies) @@ -127,7 +128,8 @@ true true true - freeglut/lib; openAL/libs + freeglut/lib; openAL/libs/Win32 + kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;OpenAL32.lib;%(AdditionalDependencies) diff --git a/OpenAL.cpp b/OpenAL.cpp index 36073c9..fd95666 100644 --- a/OpenAL.cpp +++ b/OpenAL.cpp @@ -2,33 +2,29 @@ #include #include #include -#include -#include +#include "al.h" +#include "alc.h" -int OpenAL::endWithError(char* msg, int error = 0) +OpenAL::OpenAL() +{ + Test(); +} + +bool OpenAL::EndWithError(char* msg) { //Display error message in console + bool error = false; std::cout << msg << "\n"; system("PAUSE"); return error; } -OpenAL::OpenAL() -{ - Test(); - -} - -OpenAL::~OpenAL() -{ -} - -boolean OpenAL::Test() +bool OpenAL::Test() { //Loading of the WAVE file FILE *fp = NULL; //Create FILE pointer for the WAVE file fp = fopen("WAVE/Sound.wav", "rb"); //Open the WAVE file - if (!fp) return endWithError("Failed to open file"); //Could not open file + if (!fp) return EndWithError("Failed to open file"); //Could not open file //Variables to store info about the WAVE file (all of them is not needed for OpenAL) char type[4]; @@ -41,16 +37,16 @@ boolean OpenAL::Test() //Check that the WAVE file is OK fread(type, sizeof(char), 4, fp); //Reads the first bytes in the file if (type[0] != 'R' || type[1] != 'I' || type[2] != 'F' || type[3] != 'F') //Should be "RIFF" - return endWithError("No RIFF"); //Not RIFF + return EndWithError("No RIFF"); //Not RIFF fread(&size, sizeof(DWORD), 1, fp); //Continue to read the file fread(type, sizeof(char), 4, fp); //Continue to read the file if (type[0] != 'W' || type[1] != 'A' || type[2] != 'V' || type[3] != 'E') //This part should be "WAVE" - return endWithError("not WAVE"); //Not WAVE + return EndWithError("not WAVE"); //Not WAVE fread(type, sizeof(char), 4, fp); //Continue to read the file if (type[0] != 'f' || type[1] != 'm' || type[2] != 't' || type[3] != ' ') //This part should be "fmt " - return endWithError("not fmt "); //Not fmt + return EndWithError("not fmt "); //Not fmt //Now we know that the file is a acceptable WAVE file //Info about the WAVE data is now read and stored @@ -64,7 +60,7 @@ boolean OpenAL::Test() fread(type, sizeof(char), 4, fp); if (type[0] != 'd' || type[1] != 'a' || type[2] != 't' || type[3] != 'a') //This part should be "data" - return endWithError("Missing DATA"); //not data + return EndWithError("Missing DATA"); //not data fread(&dataSize, sizeof(DWORD), 1, fp); //The size of the sound data is read @@ -80,18 +76,18 @@ boolean OpenAL::Test() unsigned char* buf = new unsigned char[dataSize]; //Allocate memory for the sound data std::cout << fread(buf, sizeof(BYTE), dataSize, fp) << " bytes loaded\n"; //Read the sound data and display the - //number of bytes loaded. - //Should be the same as the Data Size if OK + //number of bytes loaded. + //Should be the same as the Data Size if OK - //Now OpenAL needs to be initialized + //Now OpenAL needs to be initialized ALCdevice *device; //Create an OpenAL Device ALCcontext *context; //And an OpenAL Context device = alcOpenDevice(NULL); //Open the device - if (!device) return endWithError("no sound device"); //Error during device oening + if (!device) return EndWithError("no sound device"); //Error during device oening context = alcCreateContext(device, NULL); //Give the device a context alcMakeContextCurrent(context); //Make the context the current - if (!context) return endWithError("no sound context"); //Error during context handeling + if (!context) return EndWithError("no sound context"); //Error during context handeling ALuint source; //Is the name of source (where the sound come from) ALuint buffer; //Stores the sound data @@ -100,7 +96,7 @@ boolean OpenAL::Test() alGenBuffers(1, &buffer); //Generate one OpenAL Buffer and link to "buffer" alGenSources(1, &source); //Generate one OpenAL Source and link to "source" - if (alGetError() != AL_NO_ERROR) return endWithError("Error GenSource"); //Error during buffer/source generation + if (alGetError() != AL_NO_ERROR) return EndWithError("Error GenSource"); //Error during buffer/source generation //Figure out the format of the WAVE file if (bitsPerSample == 8) @@ -117,11 +113,11 @@ boolean OpenAL::Test() else if (channels == 2) format = AL_FORMAT_STEREO16; } - if (!format) return endWithError("Wrong BitPerSample"); //Not valid format + if (!format) return EndWithError("Wrong BitPerSample"); //Not valid format alBufferData(buffer, format, buf, dataSize, frequency); //Store the sound data in the OpenAL Buffer if (alGetError() != AL_NO_ERROR) - return endWithError("Error loading ALBuffer"); //Error during buffer loading + return EndWithError("Error loading ALBuffer"); //Error during buffer loading //Sound setting variables ALfloat SourcePos[] = { 0.0, 0.0, 0.0 }; //Position of the source sound @@ -145,7 +141,7 @@ boolean OpenAL::Test() //PLAY alSourcePlay(source); //Play the sound buffer linked to the source - if (alGetError() != AL_NO_ERROR) return endWithError("Error playing sound"); //Error when playing sound + if (alGetError() != AL_NO_ERROR) return EndWithError("Error playing sound"); //Error when playing sound system("PAUSE"); //Pause to let the sound play //Clean-up @@ -158,4 +154,9 @@ boolean OpenAL::Test() alcCloseDevice(device); //Close the OpenAL Device return EXIT_SUCCESS; +} + + +OpenAL::~OpenAL() +{ } \ No newline at end of file diff --git a/OpenAL.h b/OpenAL.h index fdf32ae..39b7e30 100644 --- a/OpenAL.h +++ b/OpenAL.h @@ -2,9 +2,8 @@ class OpenAL { public: - int endWithError(char* msg, int error = 0); OpenAL(); + bool EndWithError(char* msg); + bool Test(); ~OpenAL(); - boolean Test(); - };