mirror of
https://github.com/bjornbytes/lovr.git
synced 2024-07-03 21:13:42 +00:00
Basic audio boilerplate;
This commit is contained in:
parent
724e0dd6eb
commit
062bdda684
26
src/audio/audio.c
Normal file
26
src/audio/audio.c
Normal file
|
@ -0,0 +1,26 @@
|
||||||
|
#include "audio/audio.h"
|
||||||
|
#include "util.h"
|
||||||
|
#include <stdlib.h>
|
||||||
|
|
||||||
|
static AudioState state;
|
||||||
|
|
||||||
|
void lovrAudioInit() {
|
||||||
|
ALCdevice* device = alcOpenDevice(NULL);
|
||||||
|
if (!device) {
|
||||||
|
error("Unable to open default audio device");
|
||||||
|
}
|
||||||
|
|
||||||
|
ALCcontext* context = alcCreateContext(device, NULL);
|
||||||
|
if (!context || !alcMakeContextCurrent(context) || alcGetError(device) != ALC_NO_ERROR) {
|
||||||
|
error("Unable to create OpenAL context");
|
||||||
|
}
|
||||||
|
|
||||||
|
state.device = device;
|
||||||
|
state.context = context;
|
||||||
|
}
|
||||||
|
|
||||||
|
void lovrAudioDestroy() {
|
||||||
|
alcMakeContextCurrent(NULL);
|
||||||
|
alcDestroyContext(state.context);
|
||||||
|
alcCloseDevice(state.device);
|
||||||
|
}
|
15
src/audio/audio.h
Normal file
15
src/audio/audio.h
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
#include <OpenAL/al.h>
|
||||||
|
#include <OpenAL/alc.h>
|
||||||
|
|
||||||
|
#ifndef LOVR_AUDIO_TYPES
|
||||||
|
#define LOVR_AUDIO_TYPES
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
ALCdevice* device;
|
||||||
|
ALCcontext* context;
|
||||||
|
} AudioState;
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
void lovrAudioInit();
|
||||||
|
void lovrAudioDestroy();
|
|
@ -1,4 +1,5 @@
|
||||||
#include "lovr.h"
|
#include "lovr.h"
|
||||||
|
#include "lovr/audio.h"
|
||||||
#include "lovr/event.h"
|
#include "lovr/event.h"
|
||||||
#include "lovr/filesystem.h"
|
#include "lovr/filesystem.h"
|
||||||
#include "lovr/graphics.h"
|
#include "lovr/graphics.h"
|
||||||
|
@ -56,6 +57,7 @@ void lovrInit(lua_State* L, int argc, char** argv) {
|
||||||
lua_setglobal(L, "lovr");
|
lua_setglobal(L, "lovr");
|
||||||
|
|
||||||
// Preload modules
|
// Preload modules
|
||||||
|
luax_preloadmodule(L, "lovr.audio", l_lovrAudioInit);
|
||||||
luax_preloadmodule(L, "lovr.event", l_lovrEventInit);
|
luax_preloadmodule(L, "lovr.event", l_lovrEventInit);
|
||||||
luax_preloadmodule(L, "lovr.filesystem", l_lovrFilesystemInit);
|
luax_preloadmodule(L, "lovr.filesystem", l_lovrFilesystemInit);
|
||||||
luax_preloadmodule(L, "lovr.graphics", l_lovrGraphicsInit);
|
luax_preloadmodule(L, "lovr.graphics", l_lovrGraphicsInit);
|
||||||
|
@ -67,6 +69,7 @@ void lovrInit(lua_State* L, int argc, char** argv) {
|
||||||
snprintf(buffer, sizeof(buffer), "%s",
|
snprintf(buffer, sizeof(buffer), "%s",
|
||||||
"local conf = { "
|
"local conf = { "
|
||||||
" modules = { "
|
" modules = { "
|
||||||
|
" audio = true, "
|
||||||
" event = true, "
|
" event = true, "
|
||||||
" graphics = true, "
|
" graphics = true, "
|
||||||
" headset = true, "
|
" headset = true, "
|
||||||
|
@ -85,7 +88,7 @@ void lovrInit(lua_State* L, int argc, char** argv) {
|
||||||
" success, err = pcall(lovr.conf, conf) "
|
" success, err = pcall(lovr.conf, conf) "
|
||||||
"end "
|
"end "
|
||||||
|
|
||||||
"local modules = { 'event', 'graphics', 'headset', 'timer' } "
|
"local modules = { 'audio', 'event', 'graphics', 'headset', 'timer' } "
|
||||||
"for _, module in ipairs(modules) do "
|
"for _, module in ipairs(modules) do "
|
||||||
" if conf.modules[module] then "
|
" if conf.modules[module] then "
|
||||||
" lovr[module] = require('lovr.' .. module) "
|
" lovr[module] = require('lovr.' .. module) "
|
||||||
|
|
13
src/lovr/audio.c
Normal file
13
src/lovr/audio.c
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
#include "lovr/audio.h"
|
||||||
|
#include "audio/audio.h"
|
||||||
|
|
||||||
|
const luaL_Reg lovrAudio[] = {
|
||||||
|
{ NULL, NULL }
|
||||||
|
};
|
||||||
|
|
||||||
|
int l_lovrAudioInit(lua_State* L) {
|
||||||
|
lua_newtable(L);
|
||||||
|
luaL_register(L, NULL, lovrAudio);
|
||||||
|
lovrAudioInit();
|
||||||
|
return 1;
|
||||||
|
}
|
6
src/lovr/audio.h
Normal file
6
src/lovr/audio.h
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
#include <lua.h>
|
||||||
|
#include <lauxlib.h>
|
||||||
|
#include <lualib.h>
|
||||||
|
|
||||||
|
extern const luaL_Reg lovrAudio[];
|
||||||
|
int l_lovrAudioInit(lua_State* L);
|
Loading…
Reference in a new issue