NazaraEngine/include/Nazara/Audio/OpenAL.hpp

188 lines
9.3 KiB
C++

// Copyright (C) 2014 Jérôme Leclercq
// This file is part of the "Nazara Engine - Audio module"
// For conditions of distribution and use, see copyright notice in Config.hpp
#pragma once
#ifndef NAZARA_OPENAL_HPP
#define NAZARA_OPENAL_HPP
#ifdef NAZARA_AUDIO_OPENAL
#include <Nazara/Prerequesites.hpp>
#include <Nazara/Audio/Enums.hpp>
#include <Nazara/Core/String.hpp>
#include <vector>
// Inclusion des headers OpenAL
// Étant donné que les headers OpenAL ne nous permettent pas de n'avoir que les signatures sans les pointeurs de fonctions
// Et que je ne souhaite pas les modifier, je suis contraint de les placer dans un espace de nom différent pour ensuite
// remettre dans l'espace global les choses intéressantes (les typedef notamment)
namespace NzOpenALDetail
{
#include <AL/al.h>
#include <AL/alc.h>
}
// Si quelqu'un a une meilleure idée ...
using NzOpenALDetail::ALboolean;
using NzOpenALDetail::ALbyte;
using NzOpenALDetail::ALchar;
using NzOpenALDetail::ALdouble;
using NzOpenALDetail::ALenum;
using NzOpenALDetail::ALfloat;
using NzOpenALDetail::ALint;
using NzOpenALDetail::ALshort;
using NzOpenALDetail::ALsizei;
using NzOpenALDetail::ALubyte;
using NzOpenALDetail::ALuint;
using NzOpenALDetail::ALushort;
using NzOpenALDetail::ALvoid;
using NzOpenALDetail::ALCboolean;
using NzOpenALDetail::ALCbyte;
using NzOpenALDetail::ALCchar;
using NzOpenALDetail::ALCcontext;
using NzOpenALDetail::ALCdevice;
using NzOpenALDetail::ALCdouble;
using NzOpenALDetail::ALCenum;
using NzOpenALDetail::ALCfloat;
using NzOpenALDetail::ALCint;
using NzOpenALDetail::ALCshort;
using NzOpenALDetail::ALCsizei;
using NzOpenALDetail::ALCubyte;
using NzOpenALDetail::ALCuint;
using NzOpenALDetail::ALCushort;
using NzOpenALDetail::ALCvoid;
using NzOpenALFunc = void (*)();
class NAZARA_API NzOpenAL
{
public:
static NzOpenALFunc GetEntry(const NzString& entryPoint);
static NzString GetRendererName();
static NzString GetVendorName();
static unsigned int GetVersion();
static bool Initialize(bool openDevice = true);
static bool IsInitialized();
static unsigned int QueryInputDevices(std::vector<NzString>& devices);
static unsigned int QueryOutputDevices(std::vector<NzString>& devices);
static bool SetDevice(const NzString& deviceName);
static void Uninitialize();
static ALenum AudioFormat[nzAudioFormat_Max+1];
private:
static void CloseDevice();
static bool OpenDevice();
static NzOpenALFunc LoadEntry(const char* name, bool throwException = false);
};
// al
NAZARA_API extern NzOpenALDetail::LPALBUFFER3F alBuffer3f;
NAZARA_API extern NzOpenALDetail::LPALBUFFER3I alBuffer3i;
NAZARA_API extern NzOpenALDetail::LPALBUFFERDATA alBufferData;
NAZARA_API extern NzOpenALDetail::LPALBUFFERF alBufferf;
NAZARA_API extern NzOpenALDetail::LPALBUFFERFV alBufferfv;
NAZARA_API extern NzOpenALDetail::LPALBUFFERI alBufferi;
NAZARA_API extern NzOpenALDetail::LPALBUFFERIV alBufferiv;
NAZARA_API extern NzOpenALDetail::LPALDELETEBUFFERS alDeleteBuffers;
NAZARA_API extern NzOpenALDetail::LPALDELETESOURCES alDeleteSources;
NAZARA_API extern NzOpenALDetail::LPALDISABLE alDisable;
NAZARA_API extern NzOpenALDetail::LPALDISTANCEMODEL alDistanceModel;
NAZARA_API extern NzOpenALDetail::LPALDOPPLERFACTOR alDopplerFactor;
NAZARA_API extern NzOpenALDetail::LPALDOPPLERVELOCITY alDopplerVelocity;
NAZARA_API extern NzOpenALDetail::LPALENABLE alEnable;
NAZARA_API extern NzOpenALDetail::LPALGENBUFFERS alGenBuffers;
NAZARA_API extern NzOpenALDetail::LPALGENSOURCES alGenSources;
NAZARA_API extern NzOpenALDetail::LPALGETBOOLEAN alGetBoolean;
NAZARA_API extern NzOpenALDetail::LPALGETBOOLEANV alGetBooleanv;
NAZARA_API extern NzOpenALDetail::LPALGETBUFFER3F alGetBuffer3f;
NAZARA_API extern NzOpenALDetail::LPALGETBUFFER3I alGetBuffer3i;
NAZARA_API extern NzOpenALDetail::LPALGETBUFFERF alGetBufferf;
NAZARA_API extern NzOpenALDetail::LPALGETBUFFERFV alGetBufferfv;
NAZARA_API extern NzOpenALDetail::LPALGETBUFFERI alGetBufferi;
NAZARA_API extern NzOpenALDetail::LPALGETBUFFERIV alGetBufferiv;
NAZARA_API extern NzOpenALDetail::LPALGETDOUBLE alGetDouble;
NAZARA_API extern NzOpenALDetail::LPALGETDOUBLEV alGetDoublev;
NAZARA_API extern NzOpenALDetail::LPALGETENUMVALUE alGetEnumValue;
NAZARA_API extern NzOpenALDetail::LPALGETERROR alGetError;
NAZARA_API extern NzOpenALDetail::LPALGETFLOAT alGetFloat;
NAZARA_API extern NzOpenALDetail::LPALGETFLOATV alGetFloatv;
NAZARA_API extern NzOpenALDetail::LPALGETINTEGER alGetInteger;
NAZARA_API extern NzOpenALDetail::LPALGETINTEGERV alGetIntegerv;
NAZARA_API extern NzOpenALDetail::LPALGETLISTENER3F alGetListener3f;
NAZARA_API extern NzOpenALDetail::LPALGETLISTENER3I alGetListener3i;
NAZARA_API extern NzOpenALDetail::LPALGETLISTENERF alGetListenerf;
NAZARA_API extern NzOpenALDetail::LPALGETLISTENERFV alGetListenerfv;
NAZARA_API extern NzOpenALDetail::LPALGETLISTENERI alGetListeneri;
NAZARA_API extern NzOpenALDetail::LPALGETLISTENERIV alGetListeneriv;
NAZARA_API extern NzOpenALDetail::LPALGETPROCADDRESS alGetProcAddress;
NAZARA_API extern NzOpenALDetail::LPALGETSOURCE3F alGetSource3f;
NAZARA_API extern NzOpenALDetail::LPALGETSOURCE3I alGetSource3i;
NAZARA_API extern NzOpenALDetail::LPALGETSOURCEF alGetSourcef;
NAZARA_API extern NzOpenALDetail::LPALGETSOURCEFV alGetSourcefv;
NAZARA_API extern NzOpenALDetail::LPALGETSOURCEI alGetSourcei;
NAZARA_API extern NzOpenALDetail::LPALGETSOURCEIV alGetSourceiv;
NAZARA_API extern NzOpenALDetail::LPALGETSTRING alGetString;
NAZARA_API extern NzOpenALDetail::LPALISBUFFER alIsBuffer;
NAZARA_API extern NzOpenALDetail::LPALISENABLED alIsEnabled;
NAZARA_API extern NzOpenALDetail::LPALISEXTENSIONPRESENT alIsExtensionPresent;
NAZARA_API extern NzOpenALDetail::LPALISSOURCE alIsSource;
NAZARA_API extern NzOpenALDetail::LPALLISTENER3F alListener3f;
NAZARA_API extern NzOpenALDetail::LPALLISTENER3I alListener3i;
NAZARA_API extern NzOpenALDetail::LPALLISTENERF alListenerf;
NAZARA_API extern NzOpenALDetail::LPALLISTENERFV alListenerfv;
NAZARA_API extern NzOpenALDetail::LPALLISTENERI alListeneri;
NAZARA_API extern NzOpenALDetail::LPALLISTENERIV alListeneriv;
NAZARA_API extern NzOpenALDetail::LPALSOURCE3F alSource3f;
NAZARA_API extern NzOpenALDetail::LPALSOURCE3I alSource3i;
NAZARA_API extern NzOpenALDetail::LPALSOURCEF alSourcef;
NAZARA_API extern NzOpenALDetail::LPALSOURCEFV alSourcefv;
NAZARA_API extern NzOpenALDetail::LPALSOURCEI alSourcei;
NAZARA_API extern NzOpenALDetail::LPALSOURCEIV alSourceiv;
NAZARA_API extern NzOpenALDetail::LPALSOURCEPAUSE alSourcePause;
NAZARA_API extern NzOpenALDetail::LPALSOURCEPAUSEV alSourcePausev;
NAZARA_API extern NzOpenALDetail::LPALSOURCEPLAY alSourcePlay;
NAZARA_API extern NzOpenALDetail::LPALSOURCEPLAYV alSourcePlayv;
NAZARA_API extern NzOpenALDetail::LPALSOURCEQUEUEBUFFERS alSourceQueueBuffers;
NAZARA_API extern NzOpenALDetail::LPALSOURCEREWIND alSourceRewind;
NAZARA_API extern NzOpenALDetail::LPALSOURCEREWINDV alSourceRewindv;
NAZARA_API extern NzOpenALDetail::LPALSOURCESTOP alSourceStop;
NAZARA_API extern NzOpenALDetail::LPALSOURCESTOPV alSourceStopv;
NAZARA_API extern NzOpenALDetail::LPALSOURCEUNQUEUEBUFFERS alSourceUnqueueBuffers;
NAZARA_API extern NzOpenALDetail::LPALSPEEDOFSOUND alSpeedOfSound;
// alc
NAZARA_API extern NzOpenALDetail::LPALCCAPTURECLOSEDEVICE alcCaptureCloseDevice;
NAZARA_API extern NzOpenALDetail::LPALCCAPTUREOPENDEVICE alcCaptureOpenDevice;
NAZARA_API extern NzOpenALDetail::LPALCCAPTURESAMPLES alcCaptureSamples;
NAZARA_API extern NzOpenALDetail::LPALCCAPTURESTART alcCaptureStart;
NAZARA_API extern NzOpenALDetail::LPALCCAPTURESTOP alcCaptureStop;
NAZARA_API extern NzOpenALDetail::LPALCCLOSEDEVICE alcCloseDevice;
NAZARA_API extern NzOpenALDetail::LPALCCREATECONTEXT alcCreateContext;
NAZARA_API extern NzOpenALDetail::LPALCDESTROYCONTEXT alcDestroyContext;
NAZARA_API extern NzOpenALDetail::LPALCGETCONTEXTSDEVICE alcGetContextsDevice;
NAZARA_API extern NzOpenALDetail::LPALCGETCURRENTCONTEXT alcGetCurrentContext;
NAZARA_API extern NzOpenALDetail::LPALCGETENUMVALUE alcGetEnumValue;
NAZARA_API extern NzOpenALDetail::LPALCGETERROR alcGetError;
NAZARA_API extern NzOpenALDetail::LPALCGETINTEGERV alcGetIntegerv;
NAZARA_API extern NzOpenALDetail::LPALCGETPROCADDRESS alcGetProcAddress;
NAZARA_API extern NzOpenALDetail::LPALCGETSTRING alcGetString;
NAZARA_API extern NzOpenALDetail::LPALCISEXTENSIONPRESENT alcIsExtensionPresent;
NAZARA_API extern NzOpenALDetail::LPALCMAKECONTEXTCURRENT alcMakeContextCurrent;
NAZARA_API extern NzOpenALDetail::LPALCOPENDEVICE alcOpenDevice;
NAZARA_API extern NzOpenALDetail::LPALCPROCESSCONTEXT alcProcessContext;
NAZARA_API extern NzOpenALDetail::LPALCSUSPENDCONTEXT alcSuspendContext;
#endif // NAZARA_AUDIO_OPENAL
#endif // NAZARA_OPENAL_HPP