/*** Inicialización de recursos ***/ void Init( void ) { // Luz global COLOR ambColor = BLACK; // INICIALIZANDO FUENTE /* InitFont(WIDTH, HEIGHT); arialfont = OpenFont("fonts/arial.ttf", 18); SetFontStyle(arialfont, TTF_STYLE_BOLD); */ // Inicio OpenGL InitOpenGL( WIDTH, HEIGHT, BPP, DEPTH, FULLSCREEN ); SetOpenGL( WIDTH, HEIGHT, (GLfloat*)&ambColor, (GLfloat*)&ambColor ); // Incio OpenAL InitOpenAL( NULL ); // Escondo el cursor SDL_ShowCursor( SDL_DISABLE ); //Transparencia glBlendEquation( GL_ADD); glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); //Espada glPushMatrix(); //LoadModel( "models/flyingSword.3DS", "textures", GL_FALSE, &modeloEspada ); LoadModel( "models/sword7.3ds", "textures", GL_FALSE, &modeloEspada ); glTranslatef(1.0f, 0.0f, -3.0f); //glScalef(0.01f, 0.01f, 0.01f); BoundingVolumes(&modeloEspada, &volumesEspada, NULL, GL_TRUE); glPopMatrix(); // Terreno InitTerrain(&terrain,"resources/hell.raw", "textures/greengrass.jpg",GL_FALSE, &terrainMtrl,64,64,50.0f,1.0f); // agua // InitTerrain(&agua,"resources/agua.raw", "textures/agua.png",GL_FALSE, &aguaMtrl,64,64,50.0f,0.1f); // SKYBOX InitSkybox(&skybox,"textures/skybox.png"); //HUD mapTex = LoadTexture("textures/greenhell.png"); dotTex = LoadTexture("textures/Dot.png"); water = LoadTexture("textures/sprite.png"); hudNull = LoadTexture("textures/hud.png"); UnderwaterTex =LoadTexture("textures/subacuatica.png"); oxBar = LoadTexture("textures/bluebar.png"); }
void osaOpenAL::Startup(void) { CMN_LOG_CLASS_RUN_VERBOSE << "osaOpenAL starting ..." << std::endl; if (!InitOpenAL()) { CMN_LOG_CLASS_INIT_ERROR << "Failed to initialize OpenAL" << std::endl; } }
int main(int argc, char *argv[]) { InitOpenAL(); // 初始化openal LoadData(); // 载入WAV数据 Play(); // 播放 UnloadData(); // 卸载WAV数据 ShutdownOpenAL(); // 关闭openal return 0; }
void clAudioThread::Run() { Env->Logger->SetCurrentThreadName( "Audio" ); guard(); #if L_AUDIO_USE_OPENAL LAL::clALExtRetriever* OpenAL = new LAL::clALExtRetriever; FATAL( !OpenAL->Reload(), "Unable to initialize OpenAL" ); // now initialize OpenAL InitOpenAL(); #endif double Seconds = Env->GetSeconds(); while ( !IsPendingExit() ) { float DeltaSeconds = static_cast<float>( Env->GetSeconds() - Seconds ); { LMutex Lock( &FMutex ); // update sources std::for_each( FActiveSources.begin(), FActiveSources.end(), std::bind2nd( std::mem_fun( &iAudioSource::Update ), DeltaSeconds ) ); } Seconds = Env->GetSeconds(); Env->ReleaseTimeslice( 100 ); } Env->Logger->Log( L_NOTICE, "Deallocating sources" ); { LMutex Lock( &FMutex ); while ( !FActiveSources.empty() ) { delete( FActiveSources.back() ); } } #if L_AUDIO_USE_OPENAL ShutdownOpenAL(); delete( OpenAL ); #endif Env->Logger->Log( L_NOTICE, "Audio thread exited" ); unguard(); }
Sound::Sound() : m_sources(), m_music_loops(), m_music_name(), m_buffers(), m_music_buffers(), m_ogg_file(), m_ogg_format(), m_ogg_freq(), m_temporary_disable_count(0) { InitOpenAL(NUM_SOURCES, m_sources, m_music_buffers); }
int play(GtkWidget *button, struct arguments *argument) { ALenum format; ALuint buffer; alGetSourcei(source, AL_SOURCE_STATE, &status); if(argument->first == 1) InitOpenAL(); if(status == 0 || status == AL_STOPPED) { argument->first = 0; alDeleteBuffers(1, &buffer); alSourcei(source, AL_BUFFER, 0); alDeleteSources(1, &source); g_timer_start(argument->elapsed); alGenBuffers(1, &buffer); alGenSources(1, &source); format = AL_FORMAT_STEREO16; alBufferData(buffer, format, current_sample_array, nSamples * sizeof(ALint), sample_rate); alSourcei(source, AL_BUFFER, buffer); alSourcePlay(source); g_source_remove(argument->tag); if(argument->endless_check || argument->continue_count != 0) { argument->tag = g_timeout_add_seconds(current_song.duration, endless, argument); } argument->bartag = g_timeout_add_seconds(1, timer_progressbar, argument); return 0; } if(status == AL_PLAYING) { if(argument->endless_check) { g_timer_stop(argument->elapsed); g_source_remove(argument->tag); } alSourcePause(source); return 0; } else { alSourcePlay(source); if(argument->endless_check) { g_timer_continue(argument->elapsed); argument->tag = g_timeout_add_seconds(current_song.duration - (int)g_timer_elapsed(argument->elapsed, NULL), endless, argument->label); } return 0; } }
void Sound::Impl::Enable() { if (m_initialized) return; //Reset playing audio m_music_loops = 0; m_buffers.clear(); m_temporary_disable_count = 0; InitOpenAL(); if (!m_initialized) { ErrorLogger() << "Unable to initialize audio. Sound effects and music are disabled."; // TODO: Let InitOpenAL throw the OpenAL error message which // might be more useful. throw InitializationFailureException("ERROR_SOUND_INITIALIZATION_FAILED"); } DebugLogger() << "Audio " << (m_initialized ? "enabled." : "disabled."); }
CSoundItem::CSoundItem(CSoundData* sndData) { ResetVars(); if (InitOpenAL()) Attach(sndData); }