mirror of
https://gitlab.com/Mr_Goldberg/goldberg_emulator.git
synced 2024-11-27 14:08:39 +01:00
dd530e80b1
Added Base_Hook::get_lib_name to track what renderer is hooked for overlay. Objects used to detect renderer type are now also used to hook the rendering functions. So we don't have to build another device. Updated VTables for DX12.
57 lines
No EOL
1.8 KiB
C++
57 lines
No EOL
1.8 KiB
C++
#ifndef __INCLUDED_DX9_HOOK_H__
|
|
#define __INCLUDED_DX9_HOOK_H__
|
|
|
|
#include "Base_Hook.h"
|
|
#ifndef NO_OVERLAY
|
|
|
|
#include <d3d9.h>
|
|
#include "DirectX_VTables.h"
|
|
|
|
class DX9_Hook : public Base_Hook
|
|
{
|
|
public:
|
|
static constexpr const char *DLL_NAME = "d3d9.dll";
|
|
|
|
private:
|
|
static DX9_Hook* _inst;
|
|
|
|
// Variables
|
|
bool initialized;
|
|
bool uses_present;
|
|
|
|
// Functions
|
|
DX9_Hook();
|
|
virtual ~DX9_Hook();
|
|
|
|
void resetRenderState();
|
|
void prepareForOverlay(IDirect3DDevice9* pDevice);
|
|
|
|
// Hook to render functions
|
|
decltype(&IDirect3DDevice9::Reset) Reset;
|
|
decltype(&IDirect3DDevice9::EndScene) EndScene;
|
|
decltype(&IDirect3DDevice9::Present) Present;
|
|
decltype(&IDirect3DDevice9Ex::PresentEx) PresentEx;
|
|
|
|
static HRESULT STDMETHODCALLTYPE MyReset(IDirect3DDevice9* _this, D3DPRESENT_PARAMETERS* pPresentationParameters);
|
|
static HRESULT STDMETHODCALLTYPE MyEndScene(IDirect3DDevice9 *_this);
|
|
static HRESULT STDMETHODCALLTYPE MyPresent(IDirect3DDevice9* _this, CONST RECT* pSourceRect, CONST RECT* pDestRect, HWND hDestWindowOverride, CONST RGNDATA* pDirtyRegion);
|
|
static HRESULT STDMETHODCALLTYPE MyPresentEx(IDirect3DDevice9Ex* _this, CONST RECT* pSourceRect, CONST RECT* pDestRect, HWND hDestWindowOverride, CONST RGNDATA* pDirtyRegion, DWORD dwFlags);
|
|
|
|
// Hook functions so we know we use DX9
|
|
//static decltype(Direct3DCreate9) MyDirect3DCreate9;
|
|
//static decltype(Direct3DCreate9Ex) MyDirect3DCreate9Ex;
|
|
|
|
//decltype(Direct3DCreate9)* Direct3DCreate9;
|
|
//decltype(Direct3DCreate9Ex)* Direct3DCreate9Ex;
|
|
|
|
public:
|
|
bool start_hook();
|
|
static DX9_Hook* Inst();
|
|
virtual const char* get_lib_name() const;
|
|
|
|
void loadFunctions(IDirect3DDevice9 *pDevice, bool ex);
|
|
};
|
|
|
|
#endif//NO_OVERLAY
|
|
|
|
#endif//__INCLUDED_DX9_HOOK_H__
|