mirror of
https://github.com/isledecomp/isle-portable.git
synced 2024-12-18 11:52:23 -05:00
33 lines
972 B
C
33 lines
972 B
C
|
#include "dyn_d3dxof.h"
|
||
|
|
||
|
static enum {
|
||
|
DYN_D3DXOF_INIT = 0,
|
||
|
DYN_D3DXOF_SUCCESS = 1,
|
||
|
} g_dyn_d3dxof_state = DYN_D3DXOF_INIT;
|
||
|
static HMODULE g_d3dxof;
|
||
|
static HRESULT (STDAPICALLTYPE * g_DynamicDirectXFileCreate)(LPDIRECTXFILE *lplpDirectXFile);
|
||
|
|
||
|
static void init_dyn_d3d(void) {
|
||
|
if (g_dyn_d3dxof_state == DYN_D3DXOF_SUCCESS) {
|
||
|
return;
|
||
|
}
|
||
|
g_d3dxof = LoadLibraryA("d3dxof.dll");
|
||
|
if (g_d3dxof == NULL) {
|
||
|
MessageBoxA(NULL, "Cannot find d3dxof.dll", "Cannot find d3dxof.dll", MB_ICONERROR);
|
||
|
abort();
|
||
|
}
|
||
|
g_DynamicDirectXFileCreate = (void*)GetProcAddress(g_d3dxof, "DirectXFileCreate");
|
||
|
if (g_d3dxof == NULL) {
|
||
|
MessageBoxA(NULL, "Missing symbols", "d3dxof.dll misses DirectXFileCreate", MB_ICONERROR);
|
||
|
abort();
|
||
|
}
|
||
|
g_dyn_d3dxof_state = DYN_D3DXOF_SUCCESS;
|
||
|
}
|
||
|
|
||
|
|
||
|
STDAPI DynamicDirectXFileCreate(LPDIRECTXFILE *lplpDirectXFile)
|
||
|
{
|
||
|
init_dyn_d3d();
|
||
|
return g_DynamicDirectXFileCreate(lplpDirectXFile);
|
||
|
}
|