dungeon_crawler
annotate prototype/src/audio/audio.cc @ 48:aa9e28670ae2
added sound playback, more to do
author | John Tsiombikas <nuclear@member.fsf.org> |
---|---|
date | Mon, 17 Sep 2012 08:40:59 +0300 |
parents | d52711f2b9a1 |
children | c40efa9cf844 |
rev | line source |
---|---|
nuclear@47 | 1 #include <stdio.h> |
nuclear@47 | 2 #include "openal.h" |
nuclear@47 | 3 #include "audio.h" |
nuclear@47 | 4 |
nuclear@47 | 5 static ALCdevice *dev; |
nuclear@47 | 6 static ALCcontext *ctx; |
nuclear@47 | 7 |
nuclear@47 | 8 |
nuclear@47 | 9 bool init_audio() |
nuclear@47 | 10 { |
nuclear@47 | 11 if(dev) { |
nuclear@47 | 12 return true; |
nuclear@47 | 13 } |
nuclear@47 | 14 |
nuclear@47 | 15 if(!(dev = alcOpenDevice(0))) { |
nuclear@47 | 16 fprintf(stderr, "failed to open OpenAL device\n"); |
nuclear@47 | 17 return false; |
nuclear@47 | 18 } |
nuclear@47 | 19 ctx = alcCreateContext(dev, 0); |
nuclear@47 | 20 alcMakeContextCurrent(ctx); |
nuclear@47 | 21 |
nuclear@47 | 22 alGetError(); // clear error code |
nuclear@47 | 23 return true; |
nuclear@47 | 24 } |
nuclear@47 | 25 |
nuclear@47 | 26 void destroy_audio() |
nuclear@47 | 27 { |
nuclear@47 | 28 alcMakeContextCurrent(0); |
nuclear@47 | 29 if(ctx) { |
nuclear@47 | 30 alcDestroyContext(ctx); |
nuclear@47 | 31 } |
nuclear@47 | 32 if(dev) { |
nuclear@47 | 33 alcCloseDevice(dev); |
nuclear@47 | 34 } |
nuclear@47 | 35 } |