mirror of
https://github.com/ClassiCube/ClassiCube.git
synced 2025-09-13 09:35:23 -04:00
Make it easier to switch Audio backends
This commit is contained in:
parent
6da3ab1354
commit
a31fec1973
@ -29,7 +29,7 @@ export AR := xenon-ar
|
|||||||
#---------------------------------------------------------------------------------
|
#---------------------------------------------------------------------------------
|
||||||
TARGET := ClassiCube-xbox360
|
TARGET := ClassiCube-xbox360
|
||||||
BUILD := build-360
|
BUILD := build-360
|
||||||
SOURCES := src
|
SOURCES := src third_party/bearssl/src
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
#---------------------------------------------------------------------------------
|
||||||
# options for code generation
|
# options for code generation
|
||||||
@ -68,7 +68,7 @@ export OFILES := $(CFILES:.c=.o) $(sFILES:.s=.o) $(SFILES:.S=.o)
|
|||||||
#---------------------------------------------------------------------------------
|
#---------------------------------------------------------------------------------
|
||||||
# build a list of include paths
|
# build a list of include paths
|
||||||
#---------------------------------------------------------------------------------
|
#---------------------------------------------------------------------------------
|
||||||
export INCLUDE := -I$(LIBXENON_INC)
|
export INCLUDE := -I$(LIBXENON_INC) -Ithird_party/bearssl/inc
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
#---------------------------------------------------------------------------------
|
||||||
# build a list of library paths
|
# build a list of library paths
|
||||||
|
@ -22,7 +22,7 @@ static void AudioBase_FreeChunks(struct AudioChunk* chunks, int numChunks);
|
|||||||
/* achieve higher speed by playing samples at higher sample rate */
|
/* achieve higher speed by playing samples at higher sample rate */
|
||||||
#define Audio_AdjustSampleRate(sampleRate, playbackRate) ((sampleRate * playbackRate) / 100)
|
#define Audio_AdjustSampleRate(sampleRate, playbackRate) ((sampleRate * playbackRate) / 100)
|
||||||
|
|
||||||
#if defined CC_BUILD_OPENAL
|
#if CC_AUD_BACKEND == CC_AUD_BACKEND_OPENAL
|
||||||
/*########################################################################################################################*
|
/*########################################################################################################################*
|
||||||
*------------------------------------------------------OpenAL backend-----------------------------------------------------*
|
*------------------------------------------------------OpenAL backend-----------------------------------------------------*
|
||||||
*#########################################################################################################################*/
|
*#########################################################################################################################*/
|
||||||
@ -298,7 +298,7 @@ cc_result Audio_AllocChunks(cc_uint32 size, struct AudioChunk* chunks, int numCh
|
|||||||
void Audio_FreeChunks(struct AudioChunk* chunks, int numChunks) {
|
void Audio_FreeChunks(struct AudioChunk* chunks, int numChunks) {
|
||||||
AudioBase_FreeChunks(chunks, numChunks);
|
AudioBase_FreeChunks(chunks, numChunks);
|
||||||
}
|
}
|
||||||
#elif defined CC_BUILD_WINMM
|
#elif CC_AUD_BACKEND == CC_AUD_BACKEND_WINMM
|
||||||
/*########################################################################################################################*
|
/*########################################################################################################################*
|
||||||
*------------------------------------------------------WinMM backend------------------------------------------------------*
|
*------------------------------------------------------WinMM backend------------------------------------------------------*
|
||||||
*#########################################################################################################################*/
|
*#########################################################################################################################*/
|
||||||
@ -503,7 +503,7 @@ cc_result Audio_AllocChunks(cc_uint32 size, struct AudioChunk* chunks, int numCh
|
|||||||
void Audio_FreeChunks(struct AudioChunk* chunks, int numChunks) {
|
void Audio_FreeChunks(struct AudioChunk* chunks, int numChunks) {
|
||||||
AudioBase_FreeChunks(chunks, numChunks);
|
AudioBase_FreeChunks(chunks, numChunks);
|
||||||
}
|
}
|
||||||
#elif defined CC_BUILD_OPENSLES
|
#elif CC_AUD_BACKEND == CC_AUD_BACKEND_OPENSLES
|
||||||
/*########################################################################################################################*
|
/*########################################################################################################################*
|
||||||
*----------------------------------------------------OpenSL ES backend----------------------------------------------------*
|
*----------------------------------------------------OpenSL ES backend----------------------------------------------------*
|
||||||
*#########################################################################################################################*/
|
*#########################################################################################################################*/
|
||||||
|
41
src/Core.h
41
src/Core.h
@ -145,6 +145,10 @@ typedef cc_uint8 cc_bool;
|
|||||||
#define CC_SSL_BACKEND_BEARSSL 2
|
#define CC_SSL_BACKEND_BEARSSL 2
|
||||||
#define CC_SSL_BACKEND_SCHANNEL 3
|
#define CC_SSL_BACKEND_SCHANNEL 3
|
||||||
|
|
||||||
|
#define CC_AUD_BACKEND_OPENAL 1
|
||||||
|
#define CC_AUD_BACKEND_WINMM 2
|
||||||
|
#define CC_AUD_BACKEND_OPENSLES 3
|
||||||
|
|
||||||
#define CC_GFX_BACKEND_IS_GL() (CC_GFX_BACKEND == CC_GFX_BACKEND_GL1 || CC_GFX_BACKEND == CC_GFX_BACKEND_GL2)
|
#define CC_GFX_BACKEND_IS_GL() (CC_GFX_BACKEND == CC_GFX_BACKEND_GL1 || CC_GFX_BACKEND == CC_GFX_BACKEND_GL2)
|
||||||
|
|
||||||
#define CC_BUILD_NETWORKING
|
#define CC_BUILD_NETWORKING
|
||||||
@ -180,9 +184,9 @@ typedef cc_uint8 cc_bool;
|
|||||||
#elif defined _WIN32
|
#elif defined _WIN32
|
||||||
#define CC_BUILD_WIN
|
#define CC_BUILD_WIN
|
||||||
#define CC_BUILD_HTTPCLIENT
|
#define CC_BUILD_HTTPCLIENT
|
||||||
#define CC_BUILD_WINMM
|
#define DEFAULT_AUD_BACKEND CC_AUD_BACKEND_WINMM
|
||||||
#define DEFAULT_SSL_BACKEND CC_SSL_BACKEND_SCHANNEL
|
#define DEFAULT_SSL_BACKEND CC_SSL_BACKEND_SCHANNEL
|
||||||
#define DEFAULT_GFX_BACKEND CC_GFX_BACKEND_D3D9
|
#define DEFAULT_GFX_BACKEND CC_GFX_BACKEND_GL1
|
||||||
#define DEFAULT_WIN_BACKEND CC_WIN_BACKEND_WIN32
|
#define DEFAULT_WIN_BACKEND CC_WIN_BACKEND_WIN32
|
||||||
#elif defined __ANDROID__
|
#elif defined __ANDROID__
|
||||||
#define CC_BUILD_ANDROID
|
#define CC_BUILD_ANDROID
|
||||||
@ -192,13 +196,14 @@ typedef cc_uint8 cc_bool;
|
|||||||
#define CC_BUILD_EGL
|
#define CC_BUILD_EGL
|
||||||
#define CC_BUILD_TOUCH
|
#define CC_BUILD_TOUCH
|
||||||
#define CC_BUILD_OPENSLES
|
#define CC_BUILD_OPENSLES
|
||||||
|
#define DEFAULT_AUD_BACKEND CC_AUD_BACKEND_OPENSLES
|
||||||
#define DEFAULT_GFX_BACKEND CC_GFX_BACKEND_GL2
|
#define DEFAULT_GFX_BACKEND CC_GFX_BACKEND_GL2
|
||||||
#define DEFAULT_WIN_BACKEND CC_WIN_BACKEND_ANDROID
|
#define DEFAULT_WIN_BACKEND CC_WIN_BACKEND_ANDROID
|
||||||
#elif defined __serenity__
|
#elif defined __serenity__
|
||||||
#define CC_BUILD_SERENITY
|
#define CC_BUILD_SERENITY
|
||||||
#define CC_BUILD_POSIX
|
#define CC_BUILD_POSIX
|
||||||
#define CC_BUILD_CURL
|
#define CC_BUILD_CURL
|
||||||
#define CC_BUILD_OPENAL
|
#define DEFAULT_AUD_BACKEND CC_AUD_BACKEND_OPENAL
|
||||||
#define DEFAULT_GFX_BACKEND CC_GFX_BACKEND_GL1
|
#define DEFAULT_GFX_BACKEND CC_GFX_BACKEND_GL1
|
||||||
#define DEFAULT_WIN_BACKEND CC_WIN_BACKEND_SDL2
|
#define DEFAULT_WIN_BACKEND CC_WIN_BACKEND_SDL2
|
||||||
#elif defined __linux__
|
#elif defined __linux__
|
||||||
@ -206,7 +211,7 @@ typedef cc_uint8 cc_bool;
|
|||||||
#define CC_BUILD_POSIX
|
#define CC_BUILD_POSIX
|
||||||
#define CC_BUILD_XINPUT2
|
#define CC_BUILD_XINPUT2
|
||||||
#define CC_BUILD_CURL
|
#define CC_BUILD_CURL
|
||||||
#define CC_BUILD_OPENAL
|
#define DEFAULT_AUD_BACKEND CC_AUD_BACKEND_OPENAL
|
||||||
#define DEFAULT_WIN_BACKEND CC_WIN_BACKEND_X11
|
#define DEFAULT_WIN_BACKEND CC_WIN_BACKEND_X11
|
||||||
#if defined CC_BUILD_RPI
|
#if defined CC_BUILD_RPI
|
||||||
#define CC_BUILD_GLES
|
#define CC_BUILD_GLES
|
||||||
@ -231,7 +236,7 @@ typedef cc_uint8 cc_bool;
|
|||||||
#define CC_BUILD_MACOS
|
#define CC_BUILD_MACOS
|
||||||
#define CC_BUILD_CURL
|
#define CC_BUILD_CURL
|
||||||
#endif
|
#endif
|
||||||
#define CC_BUILD_OPENAL
|
#define DEFAULT_AUD_BACKEND CC_AUD_BACKEND_OPENAL
|
||||||
#elif defined Macintosh
|
#elif defined Macintosh
|
||||||
#define DEFAULT_GFX_BACKEND CC_GFX_BACKEND_SOFTGPU
|
#define DEFAULT_GFX_BACKEND CC_GFX_BACKEND_SOFTGPU
|
||||||
#define CC_BUILD_MACCLASSIC
|
#define CC_BUILD_MACCLASSIC
|
||||||
@ -247,7 +252,7 @@ typedef cc_uint8 cc_bool;
|
|||||||
#define CC_BUILD_POSIX
|
#define CC_BUILD_POSIX
|
||||||
#define CC_BUILD_XINPUT2
|
#define CC_BUILD_XINPUT2
|
||||||
#define CC_BUILD_CURL
|
#define CC_BUILD_CURL
|
||||||
#define CC_BUILD_OPENAL
|
#define DEFAULT_AUD_BACKEND CC_AUD_BACKEND_OPENAL
|
||||||
#define DEFAULT_GFX_BACKEND CC_GFX_BACKEND_GL1
|
#define DEFAULT_GFX_BACKEND CC_GFX_BACKEND_GL1
|
||||||
#define DEFAULT_WIN_BACKEND CC_WIN_BACKEND_X11
|
#define DEFAULT_WIN_BACKEND CC_WIN_BACKEND_X11
|
||||||
#elif defined __FreeBSD__ || defined __DragonFly__
|
#elif defined __FreeBSD__ || defined __DragonFly__
|
||||||
@ -256,6 +261,7 @@ typedef cc_uint8 cc_bool;
|
|||||||
#define CC_BUILD_BSD
|
#define CC_BUILD_BSD
|
||||||
#define CC_BUILD_XINPUT2
|
#define CC_BUILD_XINPUT2
|
||||||
#define CC_BUILD_CURL
|
#define CC_BUILD_CURL
|
||||||
|
#define DEFAULT_AUD_BACKEND CC_AUD_BACKEND_OPENAL
|
||||||
#define DEFAULT_GFX_BACKEND CC_GFX_BACKEND_GL1
|
#define DEFAULT_GFX_BACKEND CC_GFX_BACKEND_GL1
|
||||||
#define DEFAULT_WIN_BACKEND CC_WIN_BACKEND_X11
|
#define DEFAULT_WIN_BACKEND CC_WIN_BACKEND_X11
|
||||||
#elif defined __OpenBSD__
|
#elif defined __OpenBSD__
|
||||||
@ -264,7 +270,7 @@ typedef cc_uint8 cc_bool;
|
|||||||
#define CC_BUILD_BSD
|
#define CC_BUILD_BSD
|
||||||
#define CC_BUILD_XINPUT2
|
#define CC_BUILD_XINPUT2
|
||||||
#define CC_BUILD_CURL
|
#define CC_BUILD_CURL
|
||||||
#define CC_BUILD_OPENAL
|
#define DEFAULT_AUD_BACKEND CC_AUD_BACKEND_OPENAL
|
||||||
#define DEFAULT_GFX_BACKEND CC_GFX_BACKEND_GL1
|
#define DEFAULT_GFX_BACKEND CC_GFX_BACKEND_GL1
|
||||||
#define DEFAULT_WIN_BACKEND CC_WIN_BACKEND_X11
|
#define DEFAULT_WIN_BACKEND CC_WIN_BACKEND_X11
|
||||||
#elif defined __NetBSD__
|
#elif defined __NetBSD__
|
||||||
@ -273,15 +279,15 @@ typedef cc_uint8 cc_bool;
|
|||||||
#define CC_BUILD_BSD
|
#define CC_BUILD_BSD
|
||||||
#define CC_BUILD_XINPUT2
|
#define CC_BUILD_XINPUT2
|
||||||
#define CC_BUILD_CURL
|
#define CC_BUILD_CURL
|
||||||
#define CC_BUILD_OPENAL
|
#define DEFAULT_AUD_BACKEND CC_AUD_BACKEND_OPENAL
|
||||||
#define DEFAULT_GFX_BACKEND CC_GFX_BACKEND_GL1
|
#define DEFAULT_GFX_BACKEND CC_GFX_BACKEND_GL1
|
||||||
#define DEFAULT_WIN_BACKEND CC_WIN_BACKEND_X11
|
#define DEFAULT_WIN_BACKEND CC_WIN_BACKEND_X11
|
||||||
#elif defined __HAIKU__
|
#elif defined __HAIKU__
|
||||||
#define CC_BUILD_HAIKU
|
#define CC_BUILD_HAIKU
|
||||||
#define CC_BUILD_POSIX
|
#define CC_BUILD_POSIX
|
||||||
#define CC_BUILD_CURL
|
#define CC_BUILD_CURL
|
||||||
#define CC_BUILD_OPENAL
|
|
||||||
#define CC_BACKTRACE_BUILTIN
|
#define CC_BACKTRACE_BUILTIN
|
||||||
|
#define DEFAULT_AUD_BACKEND CC_AUD_BACKEND_OPENAL
|
||||||
#define DEFAULT_GFX_BACKEND CC_GFX_BACKEND_GL1
|
#define DEFAULT_GFX_BACKEND CC_GFX_BACKEND_GL1
|
||||||
#define DEFAULT_WIN_BACKEND CC_WIN_BACKEND_BEOS
|
#define DEFAULT_WIN_BACKEND CC_WIN_BACKEND_BEOS
|
||||||
#elif defined __BEOS__
|
#elif defined __BEOS__
|
||||||
@ -289,16 +295,16 @@ typedef cc_uint8 cc_bool;
|
|||||||
#define CC_BUILD_POSIX
|
#define CC_BUILD_POSIX
|
||||||
#define CC_BUILD_GL11
|
#define CC_BUILD_GL11
|
||||||
#define CC_BUILD_HTTPCLIENT
|
#define CC_BUILD_HTTPCLIENT
|
||||||
#define CC_BUILD_OPENAL
|
|
||||||
#define CC_BACKTRACE_BUILTIN
|
#define CC_BACKTRACE_BUILTIN
|
||||||
|
#define DEFAULT_AUD_BACKEND CC_AUD_BACKEND_OPENAL
|
||||||
#define DEFAULT_GFX_BACKEND CC_GFX_BACKEND_GL1
|
#define DEFAULT_GFX_BACKEND CC_GFX_BACKEND_GL1
|
||||||
#define DEFAULT_WIN_BACKEND CC_WIN_BACKEND_BEOS
|
#define DEFAULT_WIN_BACKEND CC_WIN_BACKEND_BEOS
|
||||||
#elif defined __sgi
|
#elif defined __sgi
|
||||||
#define CC_BUILD_IRIX
|
#define CC_BUILD_IRIX
|
||||||
#define CC_BUILD_POSIX
|
#define CC_BUILD_POSIX
|
||||||
#define CC_BUILD_CURL
|
#define CC_BUILD_CURL
|
||||||
#define CC_BUILD_OPENAL
|
|
||||||
#define CC_BIG_ENDIAN
|
#define CC_BIG_ENDIAN
|
||||||
|
#define DEFAULT_AUD_BACKEND CC_AUD_BACKEND_OPENAL
|
||||||
#define DEFAULT_GFX_BACKEND CC_GFX_BACKEND_GL1
|
#define DEFAULT_GFX_BACKEND CC_GFX_BACKEND_GL1
|
||||||
#define DEFAULT_WIN_BACKEND CC_WIN_BACKEND_X11
|
#define DEFAULT_WIN_BACKEND CC_WIN_BACKEND_X11
|
||||||
#elif defined __EMSCRIPTEN__
|
#elif defined __EMSCRIPTEN__
|
||||||
@ -318,8 +324,8 @@ typedef cc_uint8 cc_bool;
|
|||||||
#define CC_BUILD_CONSOLE
|
#define CC_BUILD_CONSOLE
|
||||||
#define CC_BUILD_LOWMEM
|
#define CC_BUILD_LOWMEM
|
||||||
#define CC_BUILD_COOPTHREADED
|
#define CC_BUILD_COOPTHREADED
|
||||||
#define CC_BUILD_OPENAL
|
|
||||||
#define CC_BUILD_HTTPCLIENT
|
#define CC_BUILD_HTTPCLIENT
|
||||||
|
#define DEFAULT_AUD_BACKEND CC_AUD_BACKEND_OPENAL
|
||||||
#define DEFAULT_SSL_BACKEND CC_SSL_BACKEND_BEARSSL
|
#define DEFAULT_SSL_BACKEND CC_SSL_BACKEND_BEARSSL
|
||||||
#elif defined __3DS__
|
#elif defined __3DS__
|
||||||
#define CC_BUILD_3DS
|
#define CC_BUILD_3DS
|
||||||
@ -342,9 +348,9 @@ typedef cc_uint8 cc_bool;
|
|||||||
#elif defined __vita__
|
#elif defined __vita__
|
||||||
#define CC_BUILD_PSVITA
|
#define CC_BUILD_PSVITA
|
||||||
#define CC_BUILD_CONSOLE
|
#define CC_BUILD_CONSOLE
|
||||||
#define CC_BUILD_OPENAL
|
|
||||||
#define CC_BUILD_HTTPCLIENT
|
#define CC_BUILD_HTTPCLIENT
|
||||||
#define CC_BUILD_TOUCH
|
#define CC_BUILD_TOUCH
|
||||||
|
#define DEFAULT_AUD_BACKEND CC_AUD_BACKEND_OPENAL
|
||||||
#define DEFAULT_SSL_BACKEND CC_SSL_BACKEND_BEARSSL
|
#define DEFAULT_SSL_BACKEND CC_SSL_BACKEND_BEARSSL
|
||||||
#elif defined _arch_dreamcast
|
#elif defined _arch_dreamcast
|
||||||
#define CC_BUILD_DREAMCAST
|
#define CC_BUILD_DREAMCAST
|
||||||
@ -358,9 +364,9 @@ typedef cc_uint8 cc_bool;
|
|||||||
#elif defined PLAT_PS3
|
#elif defined PLAT_PS3
|
||||||
#define CC_BUILD_PS3
|
#define CC_BUILD_PS3
|
||||||
#define CC_BUILD_CONSOLE
|
#define CC_BUILD_CONSOLE
|
||||||
#define CC_BUILD_OPENAL
|
|
||||||
#define CC_BUILD_HTTPCLIENT
|
#define CC_BUILD_HTTPCLIENT
|
||||||
#define CC_BUILD_SPLITSCREEN
|
#define CC_BUILD_SPLITSCREEN
|
||||||
|
#define DEFAULT_AUD_BACKEND CC_AUD_BACKEND_OPENAL
|
||||||
#define DEFAULT_SSL_BACKEND CC_SSL_BACKEND_BEARSSL
|
#define DEFAULT_SSL_BACKEND CC_SSL_BACKEND_BEARSSL
|
||||||
#elif defined N64
|
#elif defined N64
|
||||||
#define CC_BIG_ENDIAN
|
#define CC_BIG_ENDIAN
|
||||||
@ -379,9 +385,9 @@ typedef cc_uint8 cc_bool;
|
|||||||
#define CC_BUILD_CONSOLE
|
#define CC_BUILD_CONSOLE
|
||||||
#define CC_BUILD_LOWMEM
|
#define CC_BUILD_LOWMEM
|
||||||
#define CC_BUILD_COOPTHREADED
|
#define CC_BUILD_COOPTHREADED
|
||||||
#define CC_BUILD_OPENAL
|
|
||||||
#define CC_BUILD_HTTPCLIENT
|
#define CC_BUILD_HTTPCLIENT
|
||||||
#define CC_BUILD_SPLITSCREEN
|
#define CC_BUILD_SPLITSCREEN
|
||||||
|
#define DEFAULT_AUD_BACKEND CC_AUD_BACKEND_OPENAL
|
||||||
#define DEFAULT_SSL_BACKEND CC_SSL_BACKEND_BEARSSL
|
#define DEFAULT_SSL_BACKEND CC_SSL_BACKEND_BEARSSL
|
||||||
#elif defined PLAT_NDS
|
#elif defined PLAT_NDS
|
||||||
#define CC_BUILD_NDS
|
#define CC_BUILD_NDS
|
||||||
@ -399,10 +405,10 @@ typedef cc_uint8 cc_bool;
|
|||||||
#define CC_BUILD_WIIU
|
#define CC_BUILD_WIIU
|
||||||
#define CC_BUILD_CONSOLE
|
#define CC_BUILD_CONSOLE
|
||||||
#define CC_BUILD_COOPTHREADED
|
#define CC_BUILD_COOPTHREADED
|
||||||
#define CC_BUILD_OPENAL
|
|
||||||
#define CC_BUILD_HTTPCLIENT
|
#define CC_BUILD_HTTPCLIENT
|
||||||
#define CC_BUILD_SPLITSCREEN
|
#define CC_BUILD_SPLITSCREEN
|
||||||
#define CC_BUILD_TOUCH
|
#define CC_BUILD_TOUCH
|
||||||
|
#define DEFAULT_AUD_BACKEND CC_AUD_BACKEND_OPENAL
|
||||||
#define DEFAULT_SSL_BACKEND CC_SSL_BACKEND_BEARSSL
|
#define DEFAULT_SSL_BACKEND CC_SSL_BACKEND_BEARSSL
|
||||||
#elif defined __SWITCH__
|
#elif defined __SWITCH__
|
||||||
#define CC_BUILD_SWITCH
|
#define CC_BUILD_SWITCH
|
||||||
@ -463,6 +469,9 @@ typedef cc_uint8 cc_bool;
|
|||||||
#if defined DEFAULT_SSL_BACKEND && !defined CC_SSL_BACKEND
|
#if defined DEFAULT_SSL_BACKEND && !defined CC_SSL_BACKEND
|
||||||
#define CC_SSL_BACKEND DEFAULT_SSL_BACKEND
|
#define CC_SSL_BACKEND DEFAULT_SSL_BACKEND
|
||||||
#endif
|
#endif
|
||||||
|
#if defined DEFAULT_AUD_BACKEND && !defined CC_AUD_BACKEND
|
||||||
|
#define CC_AUD_BACKEND DEFAULT_AUD_BACKEND
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef CC_BUILD_CONSOLE
|
#ifdef CC_BUILD_CONSOLE
|
||||||
#undef CC_BUILD_FREETYPE
|
#undef CC_BUILD_FREETYPE
|
||||||
|
@ -290,12 +290,12 @@ static DWORD_PTR (WINAPI *_SymGetModuleBase)(HANDLE process, DWORD_PTR addr);
|
|||||||
static PVOID (WINAPI *_SymFunctionTableAccess)(HANDLE process, DWORD_PTR addr);
|
static PVOID (WINAPI *_SymFunctionTableAccess)(HANDLE process, DWORD_PTR addr);
|
||||||
static BOOL (WINAPI *_SymInitialize)(HANDLE process, PCSTR userSearchPath, BOOL fInvadeProcess);
|
static BOOL (WINAPI *_SymInitialize)(HANDLE process, PCSTR userSearchPath, BOOL fInvadeProcess);
|
||||||
|
|
||||||
static PVOID FunctionTableAccessCallback(HANDLE process, DWORD_PTR addr) {
|
static PVOID WINAPI FunctionTableAccessCallback(HANDLE process, DWORD_PTR addr) {
|
||||||
if (!_SymFunctionTableAccess) return NULL;
|
if (!_SymFunctionTableAccess) return NULL;
|
||||||
return _SymFunctionTableAccess(process, addr);
|
return _SymFunctionTableAccess(process, addr);
|
||||||
}
|
}
|
||||||
|
|
||||||
static DWORD_PTR GetModuleBaseCallback(HANDLE process, DWORD_PTR addr) {
|
static DWORD_PTR WINAPI GetModuleBaseCallback(HANDLE process, DWORD_PTR addr) {
|
||||||
if (!_SymGetModuleBase) return 0;
|
if (!_SymGetModuleBase) return 0;
|
||||||
return _SymGetModuleBase(process, addr);
|
return _SymGetModuleBase(process, addr);
|
||||||
}
|
}
|
||||||
|
@ -812,6 +812,7 @@ static HGLRC ctx_handle;
|
|||||||
static HDC ctx_DC;
|
static HDC ctx_DC;
|
||||||
typedef BOOL (WINAPI *FP_SWAPINTERVAL)(int interval);
|
typedef BOOL (WINAPI *FP_SWAPINTERVAL)(int interval);
|
||||||
static FP_SWAPINTERVAL wglSwapIntervalEXT;
|
static FP_SWAPINTERVAL wglSwapIntervalEXT;
|
||||||
|
static void* gl_lib;
|
||||||
|
|
||||||
static void GLContext_SelectGraphicsMode(struct GraphicsMode* mode) {
|
static void GLContext_SelectGraphicsMode(struct GraphicsMode* mode) {
|
||||||
PIXELFORMATDESCRIPTOR pfd = { 0 };
|
PIXELFORMATDESCRIPTOR pfd = { 0 };
|
||||||
@ -846,6 +847,9 @@ void GLContext_Create(void) {
|
|||||||
InitGraphicsMode(&mode);
|
InitGraphicsMode(&mode);
|
||||||
GLContext_SelectGraphicsMode(&mode);
|
GLContext_SelectGraphicsMode(&mode);
|
||||||
|
|
||||||
|
static const cc_string glPath = String_FromConst("OPENGL32.dll");
|
||||||
|
gl_lib = DynamicLib_Load2(&glPath);
|
||||||
|
|
||||||
ctx_handle = wglCreateContext(win_DC);
|
ctx_handle = wglCreateContext(win_DC);
|
||||||
if (!ctx_handle) {
|
if (!ctx_handle) {
|
||||||
Logger_Abort2(GetLastError(), "Failed to create OpenGL context");
|
Logger_Abort2(GetLastError(), "Failed to create OpenGL context");
|
||||||
@ -867,19 +871,20 @@ void GLContext_Free(void) {
|
|||||||
ctx_handle = NULL;
|
ctx_handle = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static PROC (WINAPI *_wglGetProcAddress)(LPCSTR);
|
||||||
/* https://www.khronos.org/opengl/wiki/Load_OpenGL_Functions#Windows */
|
/* https://www.khronos.org/opengl/wiki/Load_OpenGL_Functions#Windows */
|
||||||
#define GLContext_IsInvalidAddress(ptr) (ptr == (void*)0 || ptr == (void*)1 || ptr == (void*)-1 || ptr == (void*)2)
|
#define GLContext_IsInvalidAddress(ptr) (ptr == (void*)0 || ptr == (void*)1 || ptr == (void*)-1 || ptr == (void*)2)
|
||||||
|
|
||||||
void* GLContext_GetAddress(const char* function) {
|
void* GLContext_GetAddress(const char* function) {
|
||||||
static const cc_string glPath = String_FromConst("OPENGL32.dll");
|
/* Not present on NT 3.5 */
|
||||||
static void* lib;
|
if (!_wglGetProcAddress) _wglGetProcAddress = DynamicLib_Get2(gl_lib, "wglGetProcAddress");
|
||||||
|
if (_wglGetProcAddress) {
|
||||||
void* addr = (void*)wglGetProcAddress(function);
|
void* addr = (void*)_wglGetProcAddress(function);
|
||||||
if (!GLContext_IsInvalidAddress(addr)) return addr;
|
if (!GLContext_IsInvalidAddress(addr)) return addr;
|
||||||
|
}
|
||||||
|
|
||||||
/* Some drivers return NULL from wglGetProcAddress for core OpenGL functions */
|
/* Some drivers return NULL from wglGetProcAddress for core OpenGL functions */
|
||||||
if (!lib) lib = DynamicLib_Load2(&glPath);
|
return DynamicLib_Get2(gl_lib, function);
|
||||||
return DynamicLib_Get2(lib, function);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
cc_bool GLContext_SwapBuffers(void) {
|
cc_bool GLContext_SwapBuffers(void) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user