Basic OpenGL hooking

win-gl
flightlessmango 3 years ago
parent 86c7f73621
commit dc7bb0fdf4

@ -57,6 +57,7 @@ if ['windows', 'mingw'].contains(host_machine.system())
'win/d3d12_hook.cpp',
'win/d3d11_hook.cpp',
'win/d3d_shared.cpp',
'win/ogl_hook.cpp',
)
endif

@ -28,7 +28,7 @@
#endif
#if KIERO_INCLUDE_OPENGL
# include <gl/GL.h>
#include <GL/gl.h>
#endif
#if KIERO_INCLUDE_VULKAN
@ -532,7 +532,7 @@ kiero::Status::Enum kiero::init(RenderType::Enum _renderType)
{
return Status::ModuleNotFoundError;
}
const char* const methodsNames[] = {
"glAccum", "glAlphaFunc", "glAreTexturesResident", "glArrayElement", "glBegin", "glBindTexture", "glBitmap", "glBlendFunc", "glCallList", "glCallLists", "glClear", "glClearAccum",
"glClearColor", "glClearDepth", "glClearIndex", "glClearStencil", "glClipPlane", "glColor3b", "glColor3bv", "glColor3d", "glColor3dv", "glColor3f", "glColor3fv", "glColor3i", "glColor3iv",
@ -562,7 +562,7 @@ kiero::Status::Enum kiero::init(RenderType::Enum _renderType)
"glTexCoord4sv", "glTexCoordPointer", "glTexEnvf", "glTexEnvfv", "glTexEnvi", "glTexEnviv", "glTexGend", "glTexGendv", "glTexGenf", "glTexGenfv", "glTexGeni", "glTexGeniv", "glTexImage1D",
"glTexImage2D", "glTexParameterf", "glTexParameterfv", "glTexParameteri", "glTexParameteriv", "glTexSubImage1D", "glTexSubImage2D", "glTranslated", "glTranslatef", "glVertex2d",
"glVertex2dv", "glVertex2f", "glVertex2fv", "glVertex2i", "glVertex2iv", "glVertex2s", "glVertex2sv", "glVertex3d", "glVertex3dv", "glVertex3f", "glVertex3fv", "glVertex3i", "glVertex3iv",
"glVertex3s", "glVertex3sv", "glVertex4d", "glVertex4dv", "glVertex4f", "glVertex4fv", "glVertex4i", "glVertex4iv", "glVertex4s", "glVertex4sv", "glVertexPointer", "glViewport"
"glVertex3s", "glVertex3sv", "glVertex4d", "glVertex4dv", "glVertex4f", "glVertex4fv", "glVertex4i", "glVertex4iv", "glVertex4s", "glVertex4sv", "glVertexPointer", "glViewport", "wglSwapBuffers"
};
size_t size = KIERO_ARRAY_SIZE(methodsNames);

@ -9,7 +9,7 @@
#define KIERO_INCLUDE_D3D10 0 // 1 if you need D3D10 hook
#define KIERO_INCLUDE_D3D11 1 // 1 if you need D3D11 hook
#define KIERO_INCLUDE_D3D12 1 // 1 if you need D3D12 hook
#define KIERO_INCLUDE_OPENGL 0 // 1 if you need OpenGL hook
#define KIERO_INCLUDE_OPENGL 1 // 1 if you need OpenGL hook
#define KIERO_INCLUDE_VULKAN 1 // 1 if you need Vulkan hook
#define KIERO_USE_MINHOOK 1 // 1 if you will use kiero::bind function
@ -75,4 +75,6 @@ namespace kiero
uint150_t* getMethodsTable();
}
#endif // __KIERO_H__
#endif // __KIERO_H__
extern void init_ogl();

@ -59,6 +59,7 @@ int MainThread()
ConsoleSetup();
printf("MangoHud Attached!\n");
renderTypes();
init_ogl();
if (!render_types.empty()){
impl::d3d11::init();
impl::d3d12::init();

@ -0,0 +1,19 @@
#include "kiero.h"
#include <stdio.h>
#include <assert.h>
#include "windows.h"
#include <GL/gl.h>
BOOL __stdcall (*owglSwapBuffers)(HDC hDc);
BOOL __stdcall hwglSwapBuffers(HDC hDc)
{
printf("swapbuffer\n");
return owglSwapBuffers(hDc);
}
void init_ogl(){
printf("init ogl\n");
auto ret = kiero::bind(336, (void**)&owglSwapBuffers, reinterpret_cast<void *>(hwglSwapBuffers));
assert(ret == kiero::Status::Success);
}
Loading…
Cancel
Save