/* Method for starting this service */ bool SoundService::start() { S_LOG_INFO("Sound Service starting"); if (EmberServices::getSingleton().getConfigService().hasItem("audio", "enabled") && static_cast<bool>(EmberServices::getSingleton().getConfigService().getValue("audio", "enabled")) == false) { S_LOG_INFO("Sound disabled."); } else { if (isEnabled()) { S_LOG_FAILURE("Can't start the sound system if it's already started."); } else { #ifndef _MSC_VER mEnabled = alutInit(nullptr, nullptr) == ALC_TRUE; #else mDevice = alcOpenDevice("DirectSound3D"); if (!mDevice) { mEnabled = false; S_LOG_FAILURE("Sound Service failed to start, sound device not found 'DirectSound3D'"); return false; } mContext = alcCreateContext(mDevice, nullptr); if (!mContext) { mEnabled = false; S_LOG_FAILURE("Sound Service failed to start, sound device not found 'DirectSound3D'"); return false; } mEnabled = alcMakeContextCurrent(mContext) == ALC_TRUE; #endif SoundGeneral::checkAlError(); } } setRunning(true); return true; }
Sound::Sound() { // Init openAL alutInit(0, NULL); // Clear Error Code (so we can catch any new errors) if (alGetError() != AL_NO_ERROR) std::cerr << "Error in Sound class!\n"; alGenBuffers(NUM_SOUNDS, buffers_); alGenSources(NUM_SOUNDS, source_); if (alGetError() != AL_NO_ERROR) std::cerr << "Error in Sound class!\n"; std::cout << "Loading sound files"; float zeros[3] = {0.0f, 0.0f, 0.0f}; for (unsigned int i = 0; i < NUM_SOUNDS; ++i) { ALenum format; ALsizei size; ALfloat freq; ALvoid* data = alutLoadMemoryFromFile( SoundFiles[i].c_str(), &format, &size, &freq); alBufferData(buffers_[i],format,data,size,freq); //free(data); if (alGetError() != AL_NO_ERROR) std::cerr << "Error in Sound class!\n"; alSourcei(source_[i], AL_BUFFER, buffers_[i]); alSourcefv (source_[i], AL_VELOCITY, zeros); alSourcefv (source_[i], AL_DIRECTION, zeros); std::cout << ".."; } std::cout << "done." << std::endl; alListenerfv(AL_POSITION,zeros); alListenerfv(AL_VELOCITY,zeros); float orientation[6] = { 1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f }; alListenerfv(AL_ORIENTATION,orientation); }
VALUE method_init_player(VALUE self) { VALUE tick_wav, tock_wav; char *tick_wav_str, *tock_wav_str; alutInit (NULL, NULL); tick_wav = rb_const_get(lolrbmet_class, rb_intern("TickFile")); tick_wav_str = rb_string_value_cstr(&tick_wav); tock_wav = rb_const_get(lolrbmet_class, rb_intern("TockFile")); tock_wav_str = rb_string_value_cstr(&tock_wav); tickBuffer = alutCreateBufferFromFile (tick_wav_str); tockBuffer = alutCreateBufferFromFile (tock_wav_str); alGenSources (1, &tickSource); alGenSources (1, &tockSource); alSourcei (tickSource, AL_BUFFER, tickBuffer); alSourcei (tockSource, AL_BUFFER, tockBuffer); }
int main(int argc, char** argv) { glutInit(&argc, argv); alutInit (&argc, argv); glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE | GLUT_DEPTH | GLUT_MULTISAMPLE); glutInitWindowSize (1200, 1000); glutInitWindowPosition (100,100); glutCreateWindow ("3D-Tetris"); glutDisplayFunc(display); glutReshapeFunc(reshape); glutKeyboardFunc(keypressed); glutSpecialFunc(keypressSpecial); glutMouseFunc(mouseButton); glutMotionFunc(mouseMove); glutTimerFunc(0,timer,0); init(); glutMainLoop(); end(); return 0; }
bool Audio::init(){ logs().audio.write("[Audio] init"); if(!alutInit(NULL, 0)){ hardware.audio=false; return false; } ALenum error=alGetError(); if(error != AL_NO_ERROR){ logs().audio.write("[AudioObject] init error '"+String(alGetString(error))+"' "); console().write(String("audio init error '"+String(alGetString(error))+"' ")); return false; } alDistanceModel(AL_LINEAR_DISTANCE_CLAMPED); //NONE for none, AL_INVERSE_DISTANCE for other + //AL_INVERSE_DISTANCE_CLAMPED alDopplerFactor ( dopplerFactor ); error=alGetError(); active=true; //handle:play(); //handle:volume //default=1 (out of 1) //handle:range //default=0 (no range=play everywhere) //handle:directional //defaut=false //handle:loop //default=true //handle:id //handle id, internal error=alGetError(); if(error != AL_NO_ERROR){ return false; } return true; }
bool CSoundManager::Init() { CLogManager::Instance()->LogMessage("Initializing sound manager."); ALenum error; alutInit(0, NULL); if ((error = alGetError()) != AL_NO_ERROR) { CLogManager::Instance()->LogMessage("Error initializing sound: alutInit : " + GetSoundError(error)); return false; } alGenBuffers(NUM_SOUNDS, m_iBuffers); if ((error = alGetError()) != AL_NO_ERROR) { CLogManager::Instance()->LogMessage("Error initializing sound: alGenBuffers : " + GetSoundError(error) ); return false; } m_iSampleSet = 0; m_iSoundCount = 0; return true; }
int main(int argc, char **argv) { /* Initialise ALUT and eat any ALUT-specific commandline flags. */ if (!alutInit(&argc, argv)) { ALenum error = alutGetError(); fprintf(stderr, "%s\n", alutGetErrorString(error)); exit(EXIT_FAILURE); } /* If everything is OK, play the sound files and exit when finished. */ playFile("file1.wav"); if (!alutExit()) { ALenum error = alutGetError(); fprintf(stderr, "%s\n", alutGetErrorString(error)); exit(EXIT_FAILURE); } return EXIT_SUCCESS; }
// virtual bool LLAudioEngine_OpenAL::init(const S32 num_channels, void* userdata) { mWindGen = NULL; LLAudioEngine::init(num_channels, userdata); if(!alutInit(NULL, NULL)) { LL_WARNS("OpenAL") << "LLAudioEngine_OpenAL::init() ALUT initialization failed: " << alutGetErrorString (alutGetError ()) << LL_ENDL; return false; } LL_INFOS("OpenAL") << "LLAudioEngine_OpenAL::init() OpenAL successfully initialized" << LL_ENDL; LL_INFOS("OpenAL") << "OpenAL version: " << ll_safe_string(alGetString(AL_VERSION)) << LL_ENDL; LL_INFOS("OpenAL") << "OpenAL vendor: " << ll_safe_string(alGetString(AL_VENDOR)) << LL_ENDL; LL_INFOS("OpenAL") << "OpenAL renderer: " << ll_safe_string(alGetString(AL_RENDERER)) << LL_ENDL; ALint major = alutGetMajorVersion (); ALint minor = alutGetMinorVersion (); LL_INFOS("OpenAL") << "ALUT version: " << major << "." << minor << LL_ENDL; ALCdevice *device = alcGetContextsDevice(alcGetCurrentContext()); alcGetIntegerv(device, ALC_MAJOR_VERSION, 1, &major); alcGetIntegerv(device, ALC_MAJOR_VERSION, 1, &minor); LL_INFOS("OpenAL") << "ALC version: " << major << "." << minor << LL_ENDL; LL_INFOS("OpenAL") << "ALC default device: " << ll_safe_string(alcGetString(device, ALC_DEFAULT_DEVICE_SPECIFIER)) << LL_ENDL; return true; }
void playSound() { char * sound [] = {"scale-a6.wav", "scale-c6.wav", "scale-c7.wav" , "scale-d6.wav", "scale-e6.wav", "scale-f6.wav", "scale-g6.wav", "scale-h6.wav"}; int index = rand() % 8; ALuint buffer, source; ALuint state; // Initialize the environment alutInit(0, NULL); // Capture errors alGetError(); // Load pcm data into buffer buffer = alutCreateBufferFromFile(sound[index]); // Create sound source (use buffer to fill source) alGenSources(1, &source); alSourcei(source, AL_BUFFER, buffer); // Play alSourcePlay(source); // Wait for the song to complete do { alGetSourcei(source, AL_SOURCE_STATE, &state); } while (state == AL_PLAYING); // Clean up sources and buffers alDeleteSources(1, &source); alDeleteBuffers(1, &buffer); // Exit everything alutExit(); }
SoundManager::SoundManager(QString soundDirectory) { QString applicationDirectory; QString completeSoundDirectory; char cwd[PATH_MAX]; // Initialize ALUT. if (alutInit(NULL, NULL) == false) { reportALUTError(alutGetError()); } // Get the complete application directory in which we will load sounds from. // We convert to QString since it is more convenient when working with directories. getcwd(cwd, PATH_MAX); applicationDirectory = QString(cwd); // Append the assets directory and the actual sounds directory name. completeSoundDirectory = applicationDirectory .append("/app/native/assets/") .append(soundDirectory); // Create OpenAL buffers from all files in the sound directory. QDir dir(completeSoundDirectory); if (!dir.exists()) { qDebug() << "Cannot find the sounds directory." << completeSoundDirectory; } else { // Set a filter for file listing, only files should be listed. dir.setFilter(QDir::Files | QDir::NoSymLinks | QDir::NoDotAndDotDot); // Get a directory listing. QFileInfoList list = dir.entryInfoList(); // Traverse and load all the audio files into buffers. for (int i = 0; i < list.size(); ++i) { // Create a file info for each audio file. QFileInfo fileInfo = list.at(i); const char* path = fileInfo.absoluteFilePath().toStdString().c_str(); ALenum error; // Generate buffers to hold audio data. alGenBuffers(1, &mSoundBuffers[fileInfo.fileName()]); error = alGetError(); if (error != AL_NO_ERROR) { reportOpenALError(error); break; } // Load sound file. FILE* file = fopen(path, "rb"); if (!file) { qDebug() << "Failed to load audio file " << path; break; } // Read the file header char header[12]; ALuint bufferId = mSoundBuffers[fileInfo.fileName()]; if (fread(header, 1, 12, file) != 12) { qDebug() << "Invalid header for audio file " << path; alDeleteBuffers(1, &bufferId); goto cleanup; } // Check the file format & load the buffer with audio data. if (memcmp(header, "RIFF", 4) == 0) { if (!loadWav(file, bufferId)) { qDebug() << "Invalid wav file: " << path; alDeleteBuffers(1, &bufferId); goto cleanup; } } else if (memcmp(header, "OggS", 4) == 0) { if (!loadOgg(file, bufferId)) { qDebug() << "Invalid ogg file: " << path; alDeleteBuffers(1, &bufferId); goto cleanup; } } else { qDebug() << "Unsupported audio file: " << path; goto cleanup; } cleanup: if (file) { fclose(file); } } } // Generate a number of sources used to attach buffers and play. alGenSources(SOUNDMANAGER_MAX_NBR_OF_SOURCES, mSoundSources); ALenum error = alGetError(); if (error != AL_NO_ERROR) { reportOpenALError(error); } }
//initalize and add source of sound int Openal::initopenal() { alutInit(0, NULL); if (alGetError() != AL_NO_ERROR) { printf("ERROR: alutInit()\n"); return 0; } alGetError(); float vec[6] = {0.0f,0.0f,1.0f, 0.0f,1.0f,0.0f}; alListener3f(AL_POSITION, 0.0f, 0.0f, 0.0f); alListenerfv(AL_ORIENTATION, vec); alListenerf(AL_GAIN, 1.0f); //load sound file into buffer alBuffer0 = alutCreateBufferFromFile("./sounds/sblast.wav"); alBuffer1 = alutCreateBufferFromFile("./sounds/50.wav"); alBuffer2 = alutCreateBufferFromFile("./sounds/gunshot.wav"); alBuffer3 = alutCreateBufferFromFile("./sounds/test.wav"); alBuffer4 = alutCreateBufferFromFile("./sounds/raptor.wav"); alBuffer5 = alutCreateBufferFromFile("./sounds/bite.wav"); alGenSources(1, &alSource[0]); alGenSources(1, &alSource[1]); alGenSources(1, &alSource[2]); alGenSources(1, &alSource[3]); alGenSources(1, &alSource[4]); alGenSources(1, &alSource[5]); for (int i = 0; i < 5; i++) { dinoBuff[i] = alutCreateBufferFromFile("./sounds/gunshot.wav"); alGenSources(1, &dinoSour[i]); alSourcei(dinoSour[i], AL_BUFFER, dinoBuff[i]); alSourcef(dinoSour[i], AL_GAIN, 0.75f); alSourcef(dinoSour[i], AL_PITCH, 1.0f); alSourcei(dinoSour[i], AL_LOOPING, AL_FALSE); } //setting for first sound alSourcei(alSource[0], AL_BUFFER, alBuffer0); alSourcef(alSource[0], AL_GAIN, 1.0f); alSourcef(alSource[0], AL_PITCH, 1.0f); alSourcei(alSource[0], AL_LOOPING, AL_FALSE); //setting for second sound alSourcei(alSource[1], AL_BUFFER, alBuffer1); alSourcef(alSource[1], AL_GAIN, 2.0f); alSourcef(alSource[1], AL_PITCH, 1.0f); alSourcei(alSource[1], AL_LOOPING, AL_FALSE); //setting for third sound alSourcei(alSource[2], AL_BUFFER, alBuffer2); alSourcef(alSource[2], AL_GAIN, 1.0f); alSourcef(alSource[2], AL_PITCH, 1.0f); alSourcei(alSource[2], AL_LOOPING, AL_FALSE); //setting for fourth sound alSourcei(alSource[3], AL_BUFFER, alBuffer3); alSourcef(alSource[3], AL_GAIN, 1.0f); alSourcef(alSource[3], AL_PITCH, 1.0f); alSourcei(alSource[3], AL_LOOPING, AL_FALSE); //setting for fourth sound alSourcei(alSource[4], AL_BUFFER, alBuffer4); alSourcef(alSource[4], AL_GAIN, 1.0f); alSourcef(alSource[4], AL_PITCH, 1.0f); alSourcei(alSource[4], AL_LOOPING, AL_FALSE); //setting for fourth sound alSourcei(alSource[5], AL_BUFFER, alBuffer5); alSourcef(alSource[5], AL_GAIN, 1.0f); alSourcef(alSource[5], AL_PITCH, 1.0f); alSourcei(alSource[5], AL_LOOPING, AL_FALSE); if (alGetError() != AL_NO_ERROR) { printf("ERROR: setting source\n"); return 0; } return 0; }
bool init() { return alutInit(NULL, NULL); }
OpenALSampler::OpenALSampler() { ALenum error; // Inicializar OpenAL alutInit(0, NULL); // Clear Error Code (so we can catch any new errors) if ((error = alGetError()) != AL_NO_ERROR) this->displayOpenALError("alutInit : ", error); // Gerar buffers alGenBuffers(NUM_BUFFERS, buffers); if ((error = alGetError()) != AL_NO_ERROR) printf("\nalGenBuffers : %d", error); // Carregar arquivos e armazená-los nos buffers if (!this->loadWaveBuffer("/dados/data/jabahpureza/audio_samples/sample_papa_fala.wav", buffers[0])) alDeleteBuffers(NUM_BUFFERS, buffers); if (!this->loadWaveBuffer("/dados/data/jabahpureza/audio_samples/sample_papa_brass02.wav", buffers[1])) alDeleteBuffers(NUM_BUFFERS, buffers); if (!this->loadWaveBuffer("/dados/data/jabahpureza/audio_samples/cold_sweat_01.wav", buffers[2])) alDeleteBuffers(NUM_BUFFERS, buffers); if (!this->loadWaveBuffer("/dados/data/jabahpureza/audio_samples/funky_drummer_01.wav", buffers[3])) alDeleteBuffers(NUM_BUFFERS, buffers); if (!this->loadWaveBuffer("/dados/data/jabahpureza/audio_samples/do_it_to_death_01.wav", buffers[4])) alDeleteBuffers(NUM_BUFFERS, buffers); if (!this->loadWaveBuffer("/dados/data/jabahpureza/audio_samples/make_it_funky_01.wav", buffers[5])) alDeleteBuffers(NUM_BUFFERS, buffers); if (!this->loadWaveBuffer("/dados/data/jabahpureza/audio_samples/tony_1.wav", buffers[6])) alDeleteBuffers(NUM_BUFFERS, buffers); if (!this->loadWaveBuffer("/dados/data/jabahpureza/audio_samples/tony_2.wav", buffers[7])) alDeleteBuffers(NUM_BUFFERS, buffers); if (!this->loadWaveBuffer("/dados/data/jabahpureza/audio_samples/tony_3.wav", buffers[8])) alDeleteBuffers(NUM_BUFFERS, buffers); if (!this->loadWaveBuffer("/dados/data/jabahpureza/audio_samples/tony_4.wav", buffers[9])) alDeleteBuffers(NUM_BUFFERS, buffers); if (!this->loadWaveBuffer("/dados/data/jabahpureza/audio_samples/tony_5.wav", buffers[10])) alDeleteBuffers(NUM_BUFFERS, buffers); if (!this->loadWaveBuffer("/dados/data/jabahpureza/audio_samples/tony_6.wav", buffers[11])) alDeleteBuffers(NUM_BUFFERS, buffers); if (!this->loadWaveBuffer("/dados/data/jabahpureza/audio_samples/tony_7.wav", buffers[12])) alDeleteBuffers(NUM_BUFFERS, buffers); if (!this->loadWaveBuffer("/dados/data/jabahpureza/audio_samples/tony_8.wav", buffers[13])) alDeleteBuffers(NUM_BUFFERS, buffers); // Generate the sources alGenSources(NUM_SOURCES, source); if ((error = alGetError()) != AL_NO_ERROR) { this->displayOpenALError("alGenSources : ", error); } for (int i=0; i<NUM_SOURCES; i++) { alSourcei(source[i], AL_BUFFER, buffers[i]); if ((error = alGetError()) != AL_NO_ERROR) this->displayOpenALError("alSourcei : ", error); } }
int main() { Context m; m.running = true; // Register all formats and codecs av_register_all(); #ifdef SOUND_OPENAL // signal handler if (signal(SIGINT, handle_sigint) == SIG_ERR) { fprintf(stderr, "Unable to set handler for SIGINT!\n"); return -1; } // audio temp buffer m._abData = (ALbyte *)malloc(BUFFER_SIZE); if (!m._abData) { fprintf(stderr, "Out of memory allocating temp buffer!\n"); return -1; } // Initialize ALUT with default settings if (alutInit(NULL, NULL) == AL_FALSE) { free(m._abData); fprintf(stderr, "Could not initialize ALUT (%s)!\n", alutGetErrorString(alutGetError())); return -1; } #endif // Event Receiver EventReceiver receiver; // start up the engine m.device = createDevice(video::EDT_OPENGL, core::dimension2d<u32>(1680,1050), 16, true, // fullscreen // core::dimension2d<u32>(1280,800), 16, true, // fullscreen // core::dimension2d<u32>(800,600), 16, false, false, false, &receiver); m.driver = m.device->getVideoDriver(); m.scenemgr = m.device->getSceneManager(); // add a first person shooter style user controlled camera m.camera = m.scenemgr->addCameraSceneNodeFPS(0, 100.0f, .3f, -1, 0, 0, true, 3.f); // add terrain scene node TerrainSceneNode* terrain = new TerrainSceneNode(&m); m.origin = terrain->getTerrainCenter(); resetCamera(&m); // File manager listing m.filemgr = new FileManagerSceneNode(&m); m.filemgr->drop(); // disable mouse cursor m.device->getCursorControl()->setVisible(false); u32 frames = 0; // draw everything while(m.device->run() && m.driver && m.running) { if (receiver.IsKeyDown(KEY_KEY_Q)) m.running = false; if (receiver.IsKeyDown(KEY_ESCAPE)) resetCamera(&m); core::stringw caption =(L"FPS: "); caption += m.driver->getFPS(); m.device->setWindowCaption(caption.c_str()); m.driver->beginScene(true, true, video::SColor(255,133,133,133)); m.scenemgr->drawAll(); for (u32 i = 0; i != m.cleanup.size(); i++) { m.camera->removeAnimator(m.cleanup[i]->anim); m.cleanup[i]->anim->drop(); m.cleanup[i]->drop(); } m.cleanup.clear(); for (u32 i = 0; i != m.videos.size(); i++) { if (m.videos[i]->videoPlayer->psVideostate == Playing) { // play active if (!m.videos[i]->videoPlayer->refresh()) { // no more AV m.videos[i]->videoPlayer->goToFrame(0); } else { m.videos[i]->videoPlayer->drawVideoTexture(); } } } m.driver->endScene(); terrain->shift(m.camera); } // delete device m.device->drop(); #ifdef SOUND_OPENAL alutExit(); free(m._abData); #endif return 0; }
int main (int argc, char **argv){ #pragma region // --- my init --- float pitchnow = 1.0; alListener3f(AL_POSITION, 0.0, 0.0, 0.0); #pragma endregion #pragma region // --- al init --- // alut の初期化 alutInit (&argc, argv); // Hello World としゃべる音声の作成 ALuint helloBuffer = alutCreateBufferHelloWorld(); ALuint MusicBuffer = alutCreateBufferFromFile(FILENAME); if(AL_NONE == helloBuffer){std::cerr<<"error:nofile"<<std::endl;exit(1);} // ソースの作成 ALuint helloSource; alGenSources (1, &helloSource); ALuint MusicSource; alGenSources (1, &MusicSource); // ソースにバッファをバインド alSourcei (helloSource, AL_BUFFER, helloBuffer); alSourcei (MusicSource, AL_BUFFER, MusicBuffer); #pragma endregion cv::namedWindow("hoge"); alSourcePlay(MusicSource); alSource3f(MusicSource, AL_POSITION, 100.0, 0.0, 0.0); alSource3f(MusicSource, AL_VELOCITY, 10.0, 0.0, 0.0); while(1){ char key = cv::waitKey(1); if(key=='s'){ alSourcePlay(helloSource); //alutSleep(1); } if(key == 'p'){ int state; alGetSourcei(MusicSource, AL_SOURCE_STATE, &state); if(state ==AL_PAUSED)alSourcePlay(MusicSource); else alSourcePause(MusicSource); } else if(key == 'q'){ std::cout<<"good bye"<<std::endl; break; } else if(key == 'u'){ pitchnow *= 2; alSourcef(MusicSource, AL_PITCH, pitchnow); } else if(key == 'd'){ pitchnow /= 2; alSourcef(MusicSource, AL_PITCH, pitchnow); } // roop int state; alGetSourcei(MusicSource, AL_SOURCE_STATE, &state); if(state != AL_PLAYING) alSourcePlay(MusicSource); } #pragma region --- release --- // リソースを開放 alSourceStop(helloSource); alDeleteSources( 1, &helloSource ); alDeleteBuffers( 1, &helloBuffer ); alSourceStop(MusicSource); alDeleteSources( 1, &MusicSource ); alDeleteBuffers( 1, &MusicBuffer ); alutExit (); #pragma endregion return 0; }
void boot_init(int* argc, char** argv) { int error; fail_if(glfwInit() == false); // OpenGL version 3 glfwOpenWindowHint(GLFW_OPENGL_VERSION_MAJOR, 3); glfwOpenWindowHint(GLFW_OPENGL_VERSION_MINOR, 0); // No window resize glfwOpenWindowHint(GLFW_WINDOW_NO_RESIZE, true); // 400% gameboy scale, 5 bit rgb with 1 bit alpha, 8 bit z buffer fail_if(glfwOpenWindow(160 * 4, 144 * 4, 5, 5, 5, 1, 8, 0, GLFW_WINDOW) == false); glfwSetWindowTitle(""); glfwEnable(GLFW_AUTO_POLL_EVENTS); // Automatically poll input on swap glfwSwapInterval(1); // 0: vsync off, 1: vsync on printf("Renderer: %s\n", glGetString(GL_RENDERER)); printf("GL Version: %s\n", glGetString(GL_VERSION)); printf("Using GLSL: %s\n", glGetString(GL_SHADING_LANGUAGE_VERSION)); error = glewInit(); if (error != GLEW_OK) { fprintf(stderr, "GLEW error: %s\n", glewGetErrorString(error)); } printf("GL Extension Wrangler: %s\n", glewGetString(GLEW_VERSION)); // Load audio fail_if(alutInit(argc, argv) == false); glClearColor(206.0/255.0, 230.0/255.0, 165.0/255.0, 1.0f); glEnable(GL_SCISSOR_TEST); // For geom culling // transparency glEnable(GL_BLEND); glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); // z-buffer glEnable(GL_DEPTH_TEST); glDepthFunc(GL_LEQUAL); // Set up perspective glOrtho(0, 160, 144, 0, -1.0, 1.0); glDepthRange(-1.0f, 1.0f); glViewport(0, 0, 160 * 4, 144 * 4); // This is where Ill put the logo thing unsigned logo = bitmap_load("bmp/logo.bmp"); unsigned logo_vbo; float t0, t1, dt; float logo_x = 16, logo_y = -80; float logo_v[] = { 0, 0, 0, 1.0 - 0, 0, 128, 0, 1.0 - 1, 128, 128, 1, 1.0 - 1, 128, 0, 1, 1.0 - 0, }; glGenBuffers(1, &logo_vbo); glBindBuffer(GL_ARRAY_BUFFER, logo_vbo); glBufferData(GL_ARRAY_BUFFER, sizeof(logo_v)*sizeof(float), logo_v, GL_STATIC_DRAW); Pipeline* logo_program = pipeline_new( shader_new(SHADER_VERTEX, "shader/logo.vert"), shader_new(SHADER_FRAGMENT, "shader/logo.frag")); pipeline_attribute(logo_program, "coord", 0); pipeline_attribute(logo_program, "st", 1); pipeline_uniform(logo_program, "pos", 0); pipeline_uniform(logo_program, "tex", 1); glUseProgram(logo_program->id); // Bind the logo to texture 0 glActiveTexture(GL_TEXTURE0); glBindTexture(GL_TEXTURE_2D, logo); glUniform1i(logo_program->uniform[1], 0); // Bind logo vbo glBindBuffer(GL_ARRAY_BUFFER, logo_vbo); glEnableVertexAttribArray(logo_program->attribute[0]); glVertexAttribPointer(logo_program->attribute[0], 2, GL_FLOAT, false, 4*sizeof(float), (void*)0); glEnableVertexAttribArray(logo_program->attribute[1]); glVertexAttribPointer(logo_program->attribute[1], 2, GL_FLOAT, false, 4*sizeof(float), (void*)(2 * sizeof(float))); // load sound unsigned sound_source; alGenSources(1, &sound_source); Sound* ding = sound_load("sound/ding.ogg"); alSourcei(sound_source, AL_BUFFER, ding->buffer); glClear(GL_DEPTH_BUFFER_BIT | GL_COLOR_BUFFER_BIT); glfwSwapBuffers(); sleep(1); t0 = glfwGetTime(); while (logo_y < 8) { t1 = glfwGetTime(); dt = t1 - t0; t0 = t1; logo_y += 50 * dt; glClear(GL_DEPTH_BUFFER_BIT | GL_COLOR_BUFFER_BIT); glUniform2f(logo_program->uniform[0], roundf(logo_x), roundf(logo_y)); // Render logo glDrawArrays(GL_TRIANGLE_FAN, 0, 4); glfwSwapBuffers(); } alSourcePlay(sound_source); glDisableVertexAttribArray(logo_program->attribute[0]); glDisableVertexAttribArray(logo_program->attribute[1]); sleep(1); }
void GLApplication::initialize() { if (!windowManager || !windowManager->initialize(800, 700, "Window GLFW", false)) { this->destroy(); exit(-1); } glViewport(0, 0, WindowManager::screenWidth, WindowManager::screenHeight); glClearColor(0.2f, 0.2f, 0.2f, 0.0f); glEnable(GL_CULL_FACE); glEnable(GL_DEPTH_TEST); shader.initialize("Shaders/lightingSpecularMap.vs", "Shaders/lightingSpecularMap.fs"); sphere.init(); sphere.load(); textureDifuse.load(); textureSpecular.load(); alutInit(0, NULL); alListenerfv(AL_POSITION, listenerPos); alListenerfv(AL_VELOCITY, listenerVel); alListenerfv(AL_ORIENTATION, listenerOri); alGetError(); // clear any error messages if (alGetError() != AL_NO_ERROR) { printf("- Error creating buffers !!\n"); exit(1); } else { printf("init() - No errors yet."); } // Generate buffers, or else no sound will happen! alGenBuffers(NUM_BUFFERS, buffer); buffer[0] = alutCreateBufferFromFile("sounds/lawyer1.wav"); //buffer[0] = alutCreateBufferHelloWorld(); alGetError(); /* clear error */ alGenSources(NUM_SOURCES, source); if (alGetError() != AL_NO_ERROR) { printf("- Error creating sources !!\n"); exit(2); } else { printf("init - no errors after alGenSources\n"); } alSourcef(source[0], AL_PITCH, 1.0f); alSourcef(source[0], AL_GAIN, 1.0f); alSourcefv(source[0], AL_POSITION, source0Pos); alSourcefv(source[0], AL_VELOCITY, source0Vel); alSourcei(source[0], AL_BUFFER, buffer[0]); alSourcei(source[0], AL_LOOPING, AL_TRUE); alSourcef(source[0], AL_MAX_DISTANCE, 1200); objModel.loadModel("objects/nanosuit/nanosuit.obj"); /*alSourcef(source[1], AL_PITCH, 1.0f); alSourcef(source[1], AL_GAIN, 1.0f); alSourcefv(source[1], AL_POSITION, source1Pos); alSourcefv(source[1], AL_VELOCITY, source1Vel); alSourcei(source[1], AL_BUFFER, buffer[1]); alSourcei(source[1], AL_LOOPING, AL_TRUE); alSourcef(source[2], AL_PITCH, 1.0f); alSourcef(source[2], AL_GAIN, 1.0f); alSourcefv(source[2], AL_POSITION, source2Pos); alSourcefv(source[2], AL_VELOCITY, source2Vel); alSourcei(source[2], AL_BUFFER, buffer[2]); alSourcei(source[2], AL_LOOPING, AL_TRUE);*/ }
int main(int argc, char *argv[]) { ALuint buffer[kNumBuffers], source[kNumSources]; ALuint freq; ALenum format; ALvoid *data; ALsizei i, size; /* listener parameters */ ALfloat listenerOrientation[] = { 0.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f }; ALfloat listenerPosition[] = { 0.0f, 0.0f, 0.0f }; ALfloat listenerVelocity[] = { 0.0f, 0.0f, 0.0f }; /* source parameters */ ALfloat sourcePosition[] = { 0.0f, 0.0f, 1.0f }; ALfloat sourceVelocity[] = { 0.0f, 0.0f, 0.0f }; ALfloat sourcePitch = 1.0f; ALfloat sourceGain = 1.0f; /* initialize */ alutInit(&argc, argv); /* create buffers and sources */ if (alGenBuffers(kNumBuffers, buffer) != kNumBuffers) quit("Can't create buffers"); if (alGenSources(kNumSources, source) != kNumSources) quit("Can't create sources"); /* load buffers with data */ alutLoadWAV(kWaveFileName, &format, &data, &size, &freq); for (i = 0; i < kNumBuffers; i++) { alBufferData(buffer[i], format, data, size, freq); } free(data); /* initialize listener */ alListenerfv(AL_POSITION, listenerPosition); alListenerfv(AL_VELOCITY, listenerVelocity); alListenerfv(AL_ORIENTATION, listenerOrientation); /* initialize sources */ for (i = 0; i < kNumSources; i++) { alSourcefv(source[i], AL_POSITION, sourcePosition); alSourcefv(source[i], AL_VELOCITY, sourceVelocity); alSourcef(source[i], AL_PITCH, sourcePitch); alSourcef(source[i], AL_GAIN, sourceGain); alSourcei(source[i], AL_BUFFER, buffer[i % kNumBuffers]); alSourcei(source[i], AL_LOOPING, AL_TRUE); } /* test pitch range [0.5, 2.0] */ printf("Test range\n"); for (sourcePitch = -1.0f; sourcePitch < 3.0f; sourcePitch += 0.1f) { for (i = 0; i < kNumSources; i++) { alSourcef(source[i], AL_PITCH, sourcePitch); if (alGetError() != AL_NO_ERROR) { if (sourcePitch >= 0.5f && sourcePitch <= 2.0f) quit("Pitch change failed"); } else { if (!(sourcePitch >= 0.5f && sourcePitch <= 2.0f)) quit("Pitch out of range accepted"); } } } /* start the sources, pitch shift up, down and stop all */ printf("Play\n"); for (i = 0; i < kNumSources; i++) { alSourcePlay(source[i]); } printf("Pitch Up "); for (sourcePitch = 0.5f; sourcePitch < 2.0f; sourcePitch += 0.005f) { for (i = 0; i < kNumSources; i++) alSourcef(source[i], AL_PITCH, sourcePitch); printf("."); fflush(stdout); delay(20); } delay(2000); printf("\n"); printf("Pitch Down "); for (sourcePitch = 2.0f; sourcePitch > 0.5f; sourcePitch -= 0.005f) { for (i = 0; i < kNumSources; i++) alSourcef(source[i], AL_PITCH, sourcePitch); printf("."); fflush(stdout); delay(20); } delay(2000); printf("\n"); printf("Stop\n"); for (i = 0; i < kNumSources; i++) alSourceStop(source[i]); /* delete buffers and sources */ alDeleteSources(kNumSources, source); alDeleteBuffers(kNumBuffers, buffer); /* shutdown */ alutExit(); return 0; }
OpenALSampler::OpenALSampler() { ALenum error; // Inicializar OpenAL alutInit(0, NULL); // Clear Error Code (so we can catch any new errors) if ((error = alGetError()) != AL_NO_ERROR) this->displayOpenALError("alutInit : ", error); // Gerar buffers alGenBuffers(NUM_BUFFERS, buffers); if ((error = alGetError()) != AL_NO_ERROR) printf("\nalGenBuffers : %d", error); // Carregar arquivos e armazená-los nos buffers if (!this->loadWaveBuffer("/dados/jabahpureza/audio_samples/sample_papa_fala.wav", buffers[0])) alDeleteBuffers(NUM_BUFFERS, buffers); if (!this->loadWaveBuffer("/dados/jabahpureza/audio_samples/sample_papa_brass02.wav", buffers[1])) alDeleteBuffers(NUM_BUFFERS, buffers); if (!this->loadWaveBuffer("/dados/jabahpureza/audio_samples/cold_sweat_02.wav", buffers[2])) alDeleteBuffers(NUM_BUFFERS, buffers); if (!this->loadWaveBuffer("/dados/jabahpureza/audio_samples/cold_sweat_01.wav", buffers[3])) alDeleteBuffers(NUM_BUFFERS, buffers); if (!this->loadWaveBuffer("/dados/jabahpureza/audio_samples/funky_drummer_01.wav", buffers[4])) alDeleteBuffers(NUM_BUFFERS, buffers); if (!this->loadWaveBuffer("/dados/jabahpureza/audio_samples/do_it_to_death_01.wav", buffers[5])) alDeleteBuffers(NUM_BUFFERS, buffers); if (!this->loadWaveBuffer("/dados/jabahpureza/audio_samples/give_it_up_or_turnit_a_loose_01.wav", buffers[6])) alDeleteBuffers(NUM_BUFFERS, buffers); if (!this->loadWaveBuffer("/dados/jabahpureza/audio_samples/i_dont_want_nobody_to_give_me_nothing_01.wav", buffers[7])) alDeleteBuffers(NUM_BUFFERS, buffers); if (!this->loadWaveBuffer("/dados/jabahpureza/audio_samples/i_dont_want_nobody_to_give_me_nothing_03.wav", buffers[8])) alDeleteBuffers(NUM_BUFFERS, buffers); if (!this->loadWaveBuffer("/dados/jabahpureza/audio_samples/super_bad_01.wav", buffers[9])) alDeleteBuffers(NUM_BUFFERS, buffers); if (!this->loadWaveBuffer("/dados/jabahpureza/audio_samples/i_got_a_feeling_01.wav", buffers[10])) alDeleteBuffers(NUM_BUFFERS, buffers); if (!this->loadWaveBuffer("/dados/jabahpureza/audio_samples/make_it_funky_01.wav", buffers[11])) alDeleteBuffers(NUM_BUFFERS, buffers); if (!this->loadWaveBuffer("/dados/jabahpureza/audio_samples/papa_dont_take_no_mess_01.wav", buffers[12])) alDeleteBuffers(NUM_BUFFERS, buffers); if (!this->loadWaveBuffer("/dados/jabahpureza/audio_samples/bootsy_01.wav", buffers[13])) alDeleteBuffers(NUM_BUFFERS, buffers); if (!this->loadWaveBuffer("/dados/jabahpureza/audio_samples/sample_ataque_give_it_up_or_turnit_a_loose.wav", buffers[14])) alDeleteBuffers(NUM_BUFFERS, buffers); if (!this->loadWaveBuffer("/dados/jabahpureza/audio_samples/sample_clap_your_hand.wav", buffers[15])) alDeleteBuffers(NUM_BUFFERS, buffers); if (!this->loadWaveBuffer("/dados/jabahpureza/audio_samples/sample_clap_your_hand_com_batera.wav", buffers[16])) alDeleteBuffers(NUM_BUFFERS, buffers); // Generate the sources alGenSources(NUM_SOURCES, source); if ((error = alGetError()) != AL_NO_ERROR) { this->displayOpenALError("alGenSources : ", error); } for (int i=0; i<NUM_SOURCES; i++) { alSourcei(source[i], AL_BUFFER, buffers[i]); if ((error = alGetError()) != AL_NO_ERROR) this->displayOpenALError("alSourcei : ", error); } }
void COpenALSoundUtility::Init() { // hook into LUA m_LuaState = NULL; static DWORD msgHash_GetMasterScriptState = CHashString(_T("GetMasterScriptState")).GetUniqueID(); if(m_ToolBox->SendMessage(msgHash_GetMasterScriptState, sizeof(lua_State *), &m_LuaState) == MSG_HANDLED) { // register our additional structures/handlers with LUA master tolua_OpenALLua_open(m_LuaState); } else { StdString error; error = _T("Error missing Master Script State Data\n"); // log error EngineGetToolBox()->SetErrorValue(WARN_INVALID_OPERATION); EngineGetToolBox()->Log(LOGWARNING, error); } // this needs to be a message and stripped out of here.... #ifdef _WIN32 // create invisible dummy sound window for DirectSound m_hWndSound = CreateWindowEx(0, "STATIC", "OpenALSoundWindow", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, HWND_MESSAGE, (HMENU)NULL, NULL, NULL); if (m_hWndSound == NULL) { m_ToolBox->Log(LOGWARNING, _T("Unable to create sound window\n")); } else { SetForegroundWindow(m_hWndSound); } #endif // Tell sound system to Start Up (default sound settings, so null is passed) ALboolean initResult = alutInit(NULL, NULL); if ( initResult == AL_FALSE ) { // error initalizing OpenAL m_ToolBox->SetErrorValue(ERR_NULL_POINTER); m_ToolBox->Log(LOGWARNING, _T("Sound manager: error initalizing sound: %s\n"), alutGetErrorString(alutGetError())); return; } ALenum err; m_bInitialized = true; m_iMaxNumSources = MAX_SOURCES; bool bSourcesGenerated = false; do { m_SoundSources = new ALuint[m_iMaxNumSources]; alGenSources(m_iMaxNumSources, m_SoundSources); err = alGetError(); if (err != AL_NO_ERROR) { delete [] m_SoundSources; m_SoundSources = NULL; // try decrementing the max number m_iMaxNumSources -= 4; if (m_iMaxNumSources <= 0) { m_ToolBox->SetErrorValue(ERR_NULL_POINTER); m_ToolBox->Log( LOGERROR, _T("Sound manager error: can't generate audio sources: %s\n"), GetALErrorString(err)); break; } } else { bSourcesGenerated = true; } }while (!bSourcesGenerated); // load up free sources if (m_SoundSources != NULL) { for (UINT i=0; i<m_iMaxNumSources; i++) { m_FreeSources.push_back(m_SoundSources[i]); } } // ensure default position for listener ALfloat position[3] = { (ALfloat)0.0f, (ALfloat)0.0f, (ALfloat)0.0f }; ALfloat ori[] = { -1.0, 0.0, 0.0, 0.0, 0.0, 1.0 }; alListenerfv(AL_POSITION, position); alListenerfv(AL_ORIENTATION, ori); // set distance model for 3d sounds alDistanceModel(AL_INVERSE_DISTANCE_CLAMPED); // check if init of listener and distance model threw errors err = alGetError(); if (err != AL_NO_ERROR) { m_ToolBox->SetErrorValue(ERR_NULL_POINTER); m_ToolBox->Log( LOGWARNING, _T("Sound manager: OpenAL problem setting up OpenAL distance model: %s\n"), GetALErrorString(err)); return; } alSpeedOfSound(343.3f * m_fSoundScale); err = alGetError(); if (err != AL_NO_ERROR) { m_ToolBox->SetErrorValue(ERR_NULL_POINTER); m_ToolBox->Log( LOGWARNING, _T("Sound manager: OpenAL problem setting up OpenAL speed of sound: %s\n"), GetALErrorString(err)); return; } alDopplerFactor(m_fGlobalDopplerFactor * m_fSoundScale); err = alGetError(); if (err != AL_NO_ERROR) { m_ToolBox->SetErrorValue(ERR_NULL_POINTER); m_ToolBox->Log( LOGWARNING, _T("Sound manager: OpenAL problem setting up OpenAL doppler factor: %s\n"), GetALErrorString(err)); return; } }
/*! * VorbitalDlg creator */ VorbitalDlg::VorbitalDlg( ) { qDebug() << "VorbitalDlg Create."; _done = false; // OpenAL Initialization #ifdef WIN32 alutInit(NULL, 0); #else _device = alcOpenDevice(NULL); _context = alcCreateContext(_device, NULL); alcMakeContextCurrent(_context); #endif alGetError(); // Initialize 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 }; alListenerfv(AL_POSITION, ListenerPos); alListenerfv(AL_VELOCITY, ListenerVel); alListenerfv(AL_ORIENTATION, ListenerOri); _listPosition = 0; _musicStream = NULL; _btnBrowse = NULL; _btnBrowseFolder = NULL; _btnPlay = NULL; _btnStop = NULL; _btnPause = NULL; _btnForward = NULL; _btnReverse = NULL; _btnClear = NULL; _btnRemove = NULL; _btnSettings = NULL; _btnAbout = NULL; _btnRandomize = NULL; _txtSampleRate = NULL; _txtVersion = NULL; _txtBitRate = NULL; _txtChannels = NULL; _txtComment = NULL; _txtTime = NULL; _volumeSlider = NULL; _timeElapsed = 0; qDebug() << "Setting VorbitalDlg play state to STOPPED."; _playState = STOPPED; _incrementNeeded = true; _randomize = false; _menuDoubleClicked = false; srand((unsigned)time(0)); CreateControls(); LoadSettings(); QIcon icon("vorbital.ico"); setWindowIcon(icon); setWindowTitle("Vorbital Player"); // Start up the playlist thread. _playlistThread = new PlaylistThread(this); _playlistThread->start(); }
int main( int argc, char **argv ) { const _SizeType population_size = 10, genome_size = 4*16, chromosome_size = 1; const double mutation_rate = 0.05; const long rand_seed = time( NULL ); _GeneticProcess::Descriptor descriptor( population_size, mutation_rate, rand_seed, _Genome::Descriptor( genome_size, _Chromosome::Descriptor( chromosome_size ) ) ); _GeneticProcess process( descriptor ); process.initializePopulation(); process.evaluatePopulation(); process.printPopulation(); if ( !alutInit( &argc, argv ) ) reportError(); alGenSources( 1, &sound_source_ ); loadPopulationIntoBuffer( process.population() ); _SizeType generation_counter = 0; alSourcePlay( sound_source_ ); int num_buffers_processed, num_buffers_queued; do { alGetSourcei( sound_source_, AL_BUFFERS_PROCESSED, &num_buffers_processed ); alGetSourcei( sound_source_, AL_BUFFERS_QUEUED, &num_buffers_queued ); printf( "%i/%i:%u\n", num_buffers_processed, num_buffers_queued, generation_counter ); // each time we process a buffer, unqueue the most recently processed buffer // and queue up the buffer for the next item in the filenames list if ( num_buffers_processed > 0 ) { // unload the front buffer ALuint buffer[num_buffers_processed]; alSourceUnqueueBuffers( sound_source_, num_buffers_processed, &buffer[0] ); // delete this buffer since we can't reuse them nicely alDeleteBuffers( num_buffers_processed, &buffer[0] ); // add the next file to the queue // checkAndQueueBuffer( createBufferFromFile( filenames_.getFrontAdvance() ) ); if ( num_buffers_queued <= 50 ) { ++generation_counter; process.step(); process.evaluatePopulation(); loadPopulationIntoBuffer( process.population() ); process.printPopulation(); } } alutSleep( 1 ); } while ( num_buffers_queued > 0 && generation_counter < 15 ); process.evaluatePopulation(); process.printPopulation(); process.evaluatePopulation(); if ( !alutExit() ) { reportError(); } return EXIT_SUCCESS; }
/* * This initialization function is just to make it easier to manually edit the 'to-be-loaded' font list. * In the future, FontMan should read from some kind of resource file so we don't need to specify these by * hand */ void AudioManager::init() { alutInit(0, NULL); sound_names_.push_back(std::string("res/sounds/starshipmono.wav")); load_sounds(); }
SimpleAudioEngine::SimpleAudioEngine() { alutInit(0, 0); }
struct SoundManager newSoundManager(struct Settings* settings) { int i; struct SoundManager sm; sm.settings = settings; alutInit(NULL, 0); if(alGetError() != AL_NO_ERROR) { printf("newSoundManager: cannot initalize ALUT"); return sm; } alGenBuffers(SOUND_COUNT, sm.buffers); alGenSources(SOUND_SOURCE_COUNT, sm.sources); char filenames[SOUND_COUNT][256] = { "music.wav", "click.wav", "crash.wav", "engine.wav" }; ALfloat zeroVector[3] = {0.0, 0.0, 0.0}; ALfloat zeroVector6[6] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; for(i=0;i<SOUND_COUNT;i++) { ALenum format; ALsizei size; ALvoid* data; ALsizei freq; ALboolean loop; alutLoadWAVFile(filenames[i], &format, &data, &size, &freq, &loop); alBufferData(sm.buffers[i], format, data, size, freq); alutUnloadWAV(format, data, size, freq); } for(i=0;i<SOUND_SOURCE_COUNT;i++) { if(SOUND_SOURCE_ENGINE1 == i || SOUND_SOURCE_ENGINE2 == i) alSourcei (sm.sources[i], AL_BUFFER, sm.buffers[SOUND_ENGINE]); else alSourcei (sm.sources[i], AL_BUFFER, sm.buffers[i]); alSourcef (sm.sources[i], AL_PITCH, 1.0); if(SOUND_SOURCE_MUSIC == i) alSourcef (sm.sources[i], AL_GAIN, settings->musicVolmue / 100.0); else alSourcef (sm.sources[i], AL_GAIN, settings->fxVolmue / 100.0); alSourcefv(sm.sources[i], AL_POSITION, zeroVector); alSourcefv(sm.sources[i], AL_VELOCITY, zeroVector); if(SOUND_SOURCE_CLICK == i || SOUND_SOURCE_CRASH == i) alSourcei (sm.sources[i], AL_LOOPING, AL_FALSE); else alSourcei (sm.sources[i], AL_LOOPING, AL_TRUE); } alListenerfv(AL_POSITION, zeroVector); alListenerfv(AL_VELOCITY, zeroVector); alListenerfv(AL_ORIENTATION, zeroVector6); return sm; }
int main(int argc, char *argv[]) { ALenum format; ALsizei size, freq; ALvoid *data; /* setup camera position and orientation */ cameraAngle = 0.0f; cameraPosition[0] = 0.0f; cameraPosition[1] = 0.8f; cameraPosition[2] = 0.0f; cameraOrientation[0] = cos(2.0 * M_PI * cameraAngle / 360.0); cameraOrientation[1] = 0.0f; cameraOrientation[2] = sin(2.0 * M_PI * cameraAngle / 360.0); cameraOrientation[3] = 0.0f; cameraOrientation[4] = 1.0f; cameraOrientation[5] = 0.0f; /* setup radar and phase position */ radarPosition[0] = 5.0f; radarPosition[1] = 0.0f; radarPosition[2] = 0.0f; phaserPosition[0] = 2.0f; phaserPosition[1] = 0.0f; phaserPosition[2] = 0.0f; radarLightAngle = 0.0f; phaserPlaying = AL_FALSE; /* initialize GLUT */ glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE); glutInitWindowPosition(200, 100); glutInitWindowSize(320, 240); glutCreateWindow("XL Demo"); glutDisplayFunc(display); glutKeyboardFunc(keyboard); glutSpecialFunc(special); glutReshapeFunc(reshape); glutIdleFunc(idle); glEnable(GL_CULL_FACE); /* initialize ALUT */ alutInit(&argc, argv); /* set up the buffers */ alGenBuffers(1, &radarBuffer); alGenBuffers(1, &phaserBuffer); alutLoadWAV(kRadarFileName, &format, &data, &size, &freq); alBufferData(radarBuffer, format, data, size, freq); free(data); alutLoadWAV(kPhaserFileName, &format, &data, &size, &freq); alBufferData(phaserBuffer, format, data, size, freq); free(data); /* set up the sources */ alGenSources(1, &radarSource); alGenSources(1, &phaserSource); alSourcefv(radarSource, AL_POSITION, radarPosition); alSourcef(radarSource, AL_GAIN, 1.0f); alSourcef(radarSource, AL_PITCH, 1.0f); alSourcei(radarSource, AL_BUFFER, radarBuffer); alSourcei(radarSource, AL_LOOPING, AL_TRUE); alSourcefv(phaserSource, AL_POSITION, phaserPosition); alSourcef(phaserSource, AL_GAIN, 1.0f); alSourcef(phaserSource, AL_PITCH, 1.0f); alSourcei(phaserSource, AL_BUFFER, phaserBuffer); alSourcei(phaserSource, AL_LOOPING, AL_FALSE); /* start the radar */ alSourcePlay(radarSource); /* GLUT event loop */ glutMainLoop(); /* shutdown alut */ alutExit(); return 0; }
// virtual bool LLAudioEngine_OpenAL::init(const S32 num_channels, void* userdata) { mWindGen = NULL; LLAudioEngine::init(num_channels, userdata); if (!alutInit(NULL, NULL)) { llwarns << "LLAudioEngine_OpenAL::init() ALUT initialization failed: " << alutGetErrorString (alutGetError ()) << llendl; return false; } // check for extensions const ALCchar* device_list(NULL); const ALCchar* device_default(NULL); if (alcIsExtensionPresent(NULL, "ALC_ENUMERATION_EXT") == AL_TRUE) { device_default = alcGetString(NULL, ALC_DEFAULT_DEVICE_SPECIFIER); device_list = alcGetString(NULL, ALC_DEVICE_SPECIFIER); llinfos << "Results for ALC_ENUMERATION_EXT:\n" << ll_safe_string(device_list) << llendl; } // initialize device ALCdevice* mDevice = alcOpenDevice(NULL); if (mDevice == NULL) { llinfos << "Could not find a default device, trying to open default manually: " << ll_safe_string(device_default) << llendl; mDevice = alcOpenDevice(device_default); if (mDevice == NULL) { const ALCchar* device_list_walk = device_list; do { mDevice = alcOpenDevice(device_list_walk); if (mDevice != NULL) { break; } else { device_list_walk += strlen(device_list_walk)+1; } } while (device_list_walk[0] != '\0'); if (mDevice == NULL) { llinfos << "OpenAL could not find an installed audio device. Aborting" << llendl; ALCenum error = alcGetError(mDevice); if (error != ALC_NO_ERROR) { llinfos << "ALC error: " << ll_safe_string(alcGetString(mDevice, error)) << llendl; } return false; } } } // create context ALCcontext* mContext = alcCreateContext(mDevice, NULL); if (mContext != NULL) { if (!alcMakeContextCurrent(mContext)) { ALenum error = alGetError(); if (error != AL_NO_ERROR) { llinfos << "ALC error: " << convertALErrorToString(error) << ". Could not set current context!" << llendl; } alcDestroyContext(mContext); return false; } } else { llinfos << "ALC error: could not create context from device!" << llendl; alcCloseDevice(mDevice); return false; } llinfos << "LLAudioEngine_OpenAL::init() OpenAL successfully initialized" << llendl; llinfos << "ALC default device: " << ll_safe_string(alcGetString(mDevice, ALC_DEFAULT_DEVICE_SPECIFIER)) << llendl; llinfos << "OpenAL version: " << ll_safe_string(alGetString(AL_VERSION)) << llendl; llinfos << "OpenAL vendor: " << ll_safe_string(alGetString(AL_VENDOR)) << llendl; llinfos << "OpenAL renderer: " << ll_safe_string(alGetString(AL_RENDERER)) << llendl; ALint major = alutGetMajorVersion(); ALint minor = alutGetMinorVersion(); llinfos << "ALUT version: " << major << "." << minor << llendl; alcGetIntegerv(mDevice, ALC_MAJOR_VERSION, 1, &major); alcGetIntegerv(mDevice, ALC_MINOR_VERSION, 1, &minor); llinfos << "ALC version: " << major << "." << minor << llendl; return true; }
/* ‘ункци¤ инициализации объекта анимации. * ј–√”ћ≈Ќ“џ: * - указатель на "себ¤" - сам объект анимации: * ok2UNIT_CUBE *Unit; * - указатель на контекст анимации: * ok2ANIM *Ani; * ¬ќ«¬–јўј≈ћќ≈ «Ќј„≈Ќ»≈: Ќет. */ static VOID CubeUnitInit( ok2UNIT_CUBE *Unit, ok2ANIM *Ani ) { INT format; UINT size, freq; VOID *mem; CHAR loop; alutInit(NULL, 0); alGetError(); /* создаем буфера */ alGenBuffers(2, Unit->SndBuf); /* загружаем звук в буфер */ alutLoadWAVFile("a.wav", &format, &mem, &size, &freq, &loop); alBufferData(Unit->SndBuf[0], format, mem, size, freq); alutUnloadWAV(format, mem, size, freq); alutLoadWAVFile("a.wav", &format, &mem, &size, &freq, &loop); alBufferData(Unit->SndBuf[1], format, mem, size, freq); alutUnloadWAV(format, mem, size, freq); /* создаем источники звука и параметризируем их */ alGenSources(2, Unit->SndSrc); alSourcei(Unit->SndSrc[0], AL_BUFFER, Unit->SndBuf[0]); /* закрепл¤ем буфер за источником */ alSourcef(Unit->SndSrc[0], AL_PITCH, 0.5); /* скорость воспроизведени¤: 1.0 - обычна¤*/ alSourcef(Unit->SndSrc[0], AL_GAIN, 0.1); /* громкость: 1.0 Ц обычна¤ */ alSourcei(Unit->SndSrc[0], AL_LOOPING, 1); /* флаг повтора: 0 Ц нет, 1 Ц бесконечно */ alSourcei(Unit->SndSrc[1], AL_BUFFER, Unit->SndBuf[1]); alSourcef(Unit->SndSrc[1], AL_PITCH, 1.5); alSourcef(Unit->SndSrc[1], AL_GAIN, 0.1); alSourcei(Unit->SndSrc[1], AL_LOOPING, 0); //OK2_GeomLoad(&Unit->Geom, ".object"); /* OK2_GeomLoad(&Unit->Geom[0], "imac\\imac.object"); Unit->Scale[0] = 50.0; OK2_GeomLoad(&Unit->Geom[1], "Mustang\\Mustang.object"); Unit->Scale[1] = 0.005; OK2_GeomLoad(&Unit->Geom[2], "Avent\\Avent.object"); Unit->Scale[2] = 1.0; OK2_GeomLoad(&Unit->Geom[4], "Houses\\house1.object"); Unit->Scale[4] = 1.0; OK2_GeomLoad(&Unit->Geom[5], "x6\\x6.object"); Unit->Scale[5] = 3.0; */ OK2_GeomLoad(&Unit->Geom[3], "BMW_M3_GTR\\BMW_M3_GTR.object"); Unit->Scale[3] = 0.001; /* OK2_GeomLoad(&Unit->Geom[3], "MINICOOPER\\mini_obj.object"); Unit->Scale[3] = 0.001; */ /* OK2_GeomLoad(&Unit->Geom[3], "mord_fustang\\Shelby7..object"); Unit->Scale[3] = 0.001; */ } /* End of 'CubeUnitInit' function */
void soundInit() { alutInit (NULL, NULL); }
void InitGL( void )//__BEGIN_INIT__@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ { //========================================================================== #ifdef WIN32 #include "cpp/setPixelFormat.cpp" #include "headerFiles/glext_Init_B.cpp" alutInit(NULL, 0); //------------------------------------- SetVSyncState(true); //------------------------------------- PassMouseMovement[0] = rotateModelWithLeftMouse[0]; PassMouseMovement[1] = rotateModelWithLeftMouse[1]; //================= #endif //################################################################################################################################ /* #ifdef __APPLE__ if(sound_API_selector == 0) { #include "AUDIO/openAL_iOS/openAL_iOS_Init.cpp" } if(sound_API_selector == 1) { //#include "AUDIO/fMod_iOS/fMod_iOS_Init.cpp" //_____found_in_EAGLView } #endif //========================================================= #ifdef WIN32 if(sound_API_selector == 0) { #include "AUDIO/openAL_WIN/openAL_WIN_Init.cpp" } if(sound_API_selector == 1) { #include "AUDIO/fMod_WIN/fMod_WIN_Init.cpp" } #endif */ //########################################################################################################################################### #ifdef WIN32 //=================================================================================================== glGenTextures(1, &m_uiShadowMapTexture); glBindTexture(GL_TEXTURE_2D, m_uiShadowMapTexture); //------------------------------------------------- glTexImage2D(GL_TEXTURE_2D, 0, GL_DEPTH_COMPONENT, (GLsizei)viewWidth, (GLsizei)viewHeight, 0, GL_DEPTH_COMPONENT, GL_UNSIGNED_INT, NULL); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); //------------------------------------------------------------------ glGenFramebuffers(1, &m_uiFrameBufferObject); glBindFramebuffer(GL_FRAMEBUFFER, m_uiFrameBufferObject); //--------------------- glDrawBuffer(GL_NONE);//_ON_SOME_MACHINES_THIS_IS_REQUIRED / ON_SOME_IT_FAILS glReadBuffer(GL_NONE);//_SAME_AS_ABOVE //--------------------- glFramebufferTexture2D(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_TEXTURE_2D, m_uiShadowMapTexture, 0); glBindFramebuffer(GL_FRAMEBUFFER, 0); //==================================================================================================== #endif //================================================================================================================================================== #ifdef __APPLE__ //==================================================================================================== glGenTextures(1, &m_uiShadowMapTexture); glBindTexture(GL_TEXTURE_2D, m_uiShadowMapTexture); //------------------------------------------------- glTexImage2D(GL_TEXTURE_2D, 0, GL_DEPTH_COMPONENT, 2000, 1000, 0, GL_DEPTH_COMPONENT, GL_UNSIGNED_INT, 0); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); //------------------------------------------------------------------ glGenFramebuffers(1, &m_uiFrameBufferObject); glBindFramebuffer(GL_FRAMEBUFFER, m_uiFrameBufferObject); //--------------------- glFramebufferTexture2D(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_TEXTURE_2D, m_uiShadowMapTexture, 0); glBindFramebuffer(GL_FRAMEBUFFER, 0); //==================================================================================================== #endif //########################################################################################################################################### eyeposition[0] = eyeStartPosition[0]; eyeposition[1] = eyeStartPosition[1]; eyeposition[2] = eyeStartPosition[2]; #include "INITIALIZE.cpp" //==================================================================================================================================== #ifdef WIN32 atexit(KillALData);//__tell_openAL_to_run_KillALData_function_at_shutdown #endif glEnable(GL_DEPTH_TEST); //glDepthFunc(GL_LEQUAL); glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); //glAlphaFunc(GL_GREATER, 0.1); glEnable(GL_CULL_FACE); glCullFace(GL_BACK); //==================================================================================================================================== }//__END_INIT__@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@