2021-12-25 22:36:38 +01:00
|
|
|
#pragma once
|
|
|
|
#ifndef DEDICATED // This file should not be compiled for DEDICATED!
|
|
|
|
//------------------------------
|
|
|
|
#include <d3d11.h>
|
|
|
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
// Internals
|
2023-01-30 20:18:11 +01:00
|
|
|
void DirectX_Init();
|
2021-12-25 22:36:38 +01:00
|
|
|
void DirectX_Shutdown();
|
|
|
|
|
|
|
|
extern LRESULT ImGui_ImplWin32_WndProcHandler(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam);
|
|
|
|
extern HRESULT __stdcall Present(IDXGISwapChain* pSwapChain, UINT nSyncInterval, UINT nFlags);
|
|
|
|
extern bool LoadTextureBuffer(unsigned char* buffer, int len, ID3D11ShaderResourceView** out_srv, int* out_width, int* out_height);
|
2023-01-26 20:00:52 +01:00
|
|
|
|
2022-10-20 01:17:51 +02:00
|
|
|
extern void ResetInput();
|
2023-01-26 20:00:52 +01:00
|
|
|
extern bool PanelsVisible();
|
2021-12-25 22:36:38 +01:00
|
|
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
// Typedefs
|
|
|
|
typedef HRESULT(__stdcall* IDXGISwapChainPresent)(IDXGISwapChain* pSwapChain, UINT nSyncInterval, UINT nFlags);
|
|
|
|
typedef HRESULT(__stdcall* IDXGIResizeBuffers) (IDXGISwapChain* pSwapChain, UINT nBufferCount, UINT nWidth, UINT nHeight, DXGI_FORMAT dxFormat, UINT nSwapChainFlags);
|
|
|
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
// Globals
|
2023-06-19 14:03:23 +02:00
|
|
|
extern BOOL g_bImGuiInitialized;
|
2023-09-11 22:20:24 +02:00
|
|
|
extern UINT g_nWindowRect[2]; // TODO[ AMOS ]: Remove this in favor of CGame's window rect members???
|
2021-12-25 22:36:38 +01:00
|
|
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
// Enums
|
|
|
|
enum class D3D11DeviceVTbl : short
|
|
|
|
{
|
|
|
|
// IUnknown
|
|
|
|
QueryInterface = 0,
|
|
|
|
AddRef = 1,
|
|
|
|
Release = 2,
|
|
|
|
|
|
|
|
// ID3D11Device
|
|
|
|
CreateBuffer = 3,
|
|
|
|
CreateTexture1D = 4,
|
|
|
|
CreateTexture2D = 5,
|
|
|
|
CreateTexture3D = 6,
|
|
|
|
CreateShaderResourceView = 7,
|
|
|
|
CreateUnorderedAccessView = 8,
|
|
|
|
CreateRenderTargetView = 9,
|
|
|
|
CreateDepthStencilView = 10,
|
|
|
|
CreateInputLayout = 11,
|
|
|
|
CreateVertexShader = 12,
|
|
|
|
CreateGeometryShader = 13,
|
|
|
|
CreateGeometryShaderWithStreamOutput = 14,
|
|
|
|
CreatePixelShader = 15,
|
|
|
|
CreateHullShader = 16,
|
|
|
|
CreateDomainShader = 17,
|
|
|
|
CreateComputeShader = 18,
|
|
|
|
CreateClassLinkage = 19,
|
|
|
|
CreateBlendState = 20,
|
|
|
|
CreateDepthStencilState = 21,
|
|
|
|
CreateRasterizerState = 22,
|
|
|
|
CreateSamplerState = 23,
|
|
|
|
CreateQuery = 24,
|
|
|
|
CreatePredicate = 25,
|
|
|
|
CreateCounter = 26,
|
|
|
|
CreateDeferredContext = 27,
|
|
|
|
OpenSharedResource = 28,
|
|
|
|
CheckFormatSupport = 29,
|
|
|
|
CheckMultisampleQualityLevels = 30,
|
|
|
|
CheckCounterInfo = 31,
|
|
|
|
CheckCounter = 32,
|
|
|
|
CheckFeatureSupport = 33,
|
|
|
|
GetPrivateData = 34,
|
|
|
|
SetPrivateData = 35,
|
|
|
|
SetPrivateDataInterface = 36,
|
|
|
|
GetFeatureLevel = 37,
|
|
|
|
GetCreationFlags = 38,
|
|
|
|
GetDeviceRemovedReason = 39,
|
|
|
|
GetImmediateContext = 40,
|
|
|
|
SetExceptionMode = 41,
|
|
|
|
GetExceptionMode = 42,
|
|
|
|
};
|
|
|
|
|
|
|
|
enum class DXGISwapChainVTbl : short
|
|
|
|
{
|
|
|
|
// IUnknown
|
|
|
|
QueryInterface = 0,
|
|
|
|
AddRef = 1,
|
|
|
|
Release = 2,
|
|
|
|
|
|
|
|
// IDXGIObject
|
|
|
|
SetPrivateData = 3,
|
|
|
|
SetPrivateDataInterface = 4,
|
|
|
|
GetPrivateData = 5,
|
|
|
|
GetParent = 6,
|
|
|
|
|
|
|
|
// IDXGIDeviceSubObject
|
|
|
|
GetDevice = 7,
|
|
|
|
|
|
|
|
// IDXGISwapChain
|
|
|
|
Present = 8,
|
|
|
|
GetBuffer = 9,
|
|
|
|
SetFullscreenState = 10,
|
|
|
|
GetFullscreenState = 11,
|
|
|
|
GetDesc = 12,
|
|
|
|
ResizeBuffers = 13,
|
|
|
|
ResizeTarget = 14,
|
|
|
|
GetContainingOutput = 15,
|
|
|
|
GetFrameStatistics = 16,
|
|
|
|
GetLastPresentCount = 17,
|
|
|
|
};
|
|
|
|
|
2023-01-26 20:00:52 +01:00
|
|
|
#ifndef BUILDING_LIBIMGUI
|
2023-09-11 01:28:17 +02:00
|
|
|
inline ID3D11Device** g_ppGameDevice = nullptr;
|
2023-01-30 16:10:46 +01:00
|
|
|
inline ID3D11DeviceContext** g_ppImmediateContext = nullptr;
|
2023-09-11 01:28:17 +02:00
|
|
|
inline IDXGISwapChain** g_ppSwapChain = nullptr;
|
|
|
|
|
|
|
|
FORCEINLINE ID3D11Device* D3D11Device() { Assert(g_ppGameDevice); return (*g_ppGameDevice); }
|
|
|
|
FORCEINLINE ID3D11DeviceContext* D3D11DeviceContext() { Assert(g_ppImmediateContext); return (*g_ppImmediateContext); }
|
|
|
|
FORCEINLINE IDXGISwapChain* D3D11SwapChain() { Assert(g_ppSwapChain); return (*g_ppSwapChain); }
|
2022-06-19 18:07:43 +02:00
|
|
|
|
2022-07-21 16:56:25 +02:00
|
|
|
class VDXGI : public IDetour
|
2021-12-25 22:36:38 +01:00
|
|
|
{
|
2022-04-11 01:44:30 +02:00
|
|
|
virtual void GetAdr(void) const;
|
2023-05-13 19:40:41 +02:00
|
|
|
virtual void GetFun(void) const;
|
2023-01-30 20:18:11 +01:00
|
|
|
virtual void GetVar(void) const;
|
2022-04-11 01:44:30 +02:00
|
|
|
virtual void GetCon(void) const { }
|
2023-05-13 18:03:48 +02:00
|
|
|
virtual void Attach(void) const;
|
|
|
|
virtual void Detach(void) const;
|
2021-12-25 22:36:38 +01:00
|
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
|
|
};
|
2023-01-26 20:00:52 +01:00
|
|
|
#endif // !BUILDING_LIBIMGUI
|
2021-12-25 22:36:38 +01:00
|
|
|
#endif // !DEDICATED
|