This is a DirectX hook that works with DirectX 11 and DirectX 12. A straightforward but primitive overlay framework is included.
Readme is not complete, I will update it at some point...
A mod for Monster Hunter Rise, "Rise DPS Meter" found on NexusMods
-add video-
A mod for Elden Ring, "Pause the game" found on NexusMods
-add video-
-add video-
First, check the wiki page on how to quickly set up the Visual Studio solution.
When the project is built, "dxgi.dll" will be generated in the project folder. This can be copied next to a game executable which uses DirectX 11 or 12. The game will load the .dll automatically on startup and will render what you told it to.
Also note that the "hook_textures" folder containing "blank.jpg" must be present next to dxgi.dll in order for anything to render.
Create a .cpp and .h file in the Overlays folder (optionally put these inside a parent folder):
Create a class that inherits from the IRenderCallback interface and includes "OverlayFramework.h":
Define the Setup() and Render() functions in the .cpp file:
Note: Setup() is called once and Render() is called every frame. InitFramework() must be called on the very first line in Setup().
Make the hook render your stuff by adding these lines in DllMain.cpp:
But we haven't yet defined anything to render...
All rendering with the overlay framework is done using Boxes:
Boxes are a simple struct with data that the framework manages.
- pressed = if the mouse is currently being pressed on this box
- clicked = if the mouse was previously pressed and then released on the box this frame
- hover = if the mouse is hovering over the box
The rest are self-explanatory. Do not modify visible or z.
Create some boxes and render them:
Result:
Boxes can be rendered with either textures or colors:
Note: textures should be loaded in Setup().
Result:
Text can be rendered inside Boxes:
Note: a font must be set before rendering text.
Result:
Feel free to create issues or contribute code to the repo.
Feel free to use this code for anything and however you like, but if you create something with it then it would be cool if you could show me what you made :)