goldberg_emulator/overlay_experimental/linux/OpenGLX_Hook.h
Nemirtingas 6ebc946607 Fixed overlay now showing on some games
In sanctum2, not writing in our own context makes the game crash.
2019-09-03 17:25:55 +02:00

49 lines
1,008 B
C++

#ifndef __INCLUDED_OPENGLX_HOOK_H__
#define __INCLUDED_OPENGLX_HOOK_H__
#include "../Base_Hook.h"
#ifdef __LINUX__
#ifndef NO_OVERLAY
#include <GL/glew.h>
#include <GL/glx.h>
class OpenGLX_Hook : public Base_Hook
{
public:
static constexpr const char *DLL_NAME = "libGLX.so";
private:
static OpenGLX_Hook* _inst;
// Variables
bool hooked;
bool initialized;
Display *display;
GLXContext context;
// Functions
OpenGLX_Hook();
void resetRenderState();
void prepareForOverlay(Display* display, GLXDrawable drawable);
// Hook to render functions
decltype(glXSwapBuffers)* _glXSwapBuffers;
public:
static void MyglXSwapBuffers(Display* display, GLXDrawable drawable);
virtual ~OpenGLX_Hook();
bool start_hook();
static OpenGLX_Hook* Inst();
virtual const char* get_lib_name() const;
void loadFunctions(decltype(glXSwapBuffers)* pfnglXSwapBuffers);
};
#endif//NO_OVERLAY
#endif//__LINUX__
#endif//__INCLUDED_OPENGLX_HOOK_H__