goldberg_emulator/overlay_experimental/OpenGLX_Hook.h

46 lines
935 B
C
Raw Normal View History

2019-08-31 18:49:46 +00:00
#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;
// Functions
OpenGLX_Hook();
void resetRenderState();
void prepareForOverlay(Display* display);
// Hook to render functions
static void MyglXSwapBuffers(Display* display, GLXDrawable drawable);
decltype(glXSwapBuffers)* _glXSwapBuffers;
public:
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__