MangoHud/src/win/d3d11_hook.cpp

36 lines
834 B
C++
Raw Normal View History

2020-09-07 05:49:14 +00:00
#include "kiero.h"
#if KIERO_INCLUDE_D3D11
#include "d3d11_hook.h"
#include <d3d11.h>
#include <assert.h>
#include "d3d_shared.h"
typedef long(__stdcall* Present)(IDXGISwapChain*, UINT, UINT);
static Present oPresent = NULL;
long __stdcall hkPresent11(IDXGISwapChain* pSwapChain, UINT SyncInterval, UINT Flags)
{
#ifdef _MSC_VER
static auto addr = _ReturnAddress();
if(addr == _ReturnAddress()){
#else
static auto addr = __builtin_return_address(0);
if(addr == __builtin_return_address(0)){
#endif
d3d_run();
}
2020-09-07 05:49:14 +00:00
return oPresent(pSwapChain, SyncInterval, Flags);
}
void impl::d3d11::init()
{
printf("init d3d11\n");
auto ret = kiero::bind(8, (void**)&oPresent, reinterpret_cast<void *>(hkPresent11));
assert(ret == kiero::Status::Success);
init_d3d_shared();
}
#endif // KIERO_INCLUDE_D3D11