Reduce Code Duplication
This commit is contained in:
parent
0c92551e8a
commit
463ede508e
@ -28,12 +28,7 @@
|
||||
})
|
||||
|
||||
// Hook Library Function
|
||||
#ifdef __cplusplus
|
||||
#define hooked_function_setup extern "C"
|
||||
#else
|
||||
#define hooked_function_setup
|
||||
#endif
|
||||
#define HOOK(name, return_type, args) \
|
||||
#define EXTERNAL_FUNC(name, return_type, args) \
|
||||
typedef return_type (*real_##name##_t)args; \
|
||||
__attribute__((__unused__)) static real_##name##_t real_##name() { \
|
||||
static real_##name##_t func = NULL; \
|
||||
@ -45,7 +40,14 @@
|
||||
} \
|
||||
} \
|
||||
return func; \
|
||||
} \
|
||||
}
|
||||
#ifdef __cplusplus
|
||||
#define hooked_function_setup extern "C"
|
||||
#else
|
||||
#define hooked_function_setup
|
||||
#endif
|
||||
#define HOOK(name, return_type, args) \
|
||||
EXTERNAL_FUNC(name, return_type, args) \
|
||||
hooked_function_setup __attribute__((__used__)) return_type name args
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
@ -5,228 +5,226 @@
|
||||
#include <libreborn/libreborn.h>
|
||||
|
||||
// Load GL Function
|
||||
#define GL_FUNC(name, return_type, args) \
|
||||
typedef return_type (*real_##name##_t)args; \
|
||||
static real_##name##_t real_##name() { \
|
||||
static real_##name##_t func = nullptr; \
|
||||
if (!func) { \
|
||||
func = (real_##name##_t) glfwGetProcAddress(#name); \
|
||||
if (!func) { \
|
||||
ERR("Error Resolving OpenGL Symbol: " #name); \
|
||||
} \
|
||||
} \
|
||||
return func; \
|
||||
}
|
||||
static char *gl_dlerror() {
|
||||
return (char *) "Unknown Error";
|
||||
}
|
||||
#define dlerror gl_dlerror
|
||||
static void *gl_dlsysm(__attribute__((unused)) void *handle, __attribute__((unused)) const char *name) {
|
||||
return (void *) glfwGetProcAddress(name);
|
||||
}
|
||||
#define dlsym gl_dlsysm
|
||||
#define GL_FUNC EXTERNAL_FUNC
|
||||
|
||||
GL_FUNC(glFogfv, void, (GLenum pname, const GLfloat *params));
|
||||
// Passthrough Functions
|
||||
GL_FUNC(glFogfv, void, (GLenum pname, const GLfloat *params))
|
||||
void glFogfv(const GLenum pname, const GLfloat *params) {
|
||||
real_glFogfv()(pname, params);
|
||||
}
|
||||
GL_FUNC(glVertexPointer, void, (GLint size, GLenum type, GLsizei stride, const void *pointer));
|
||||
GL_FUNC(glVertexPointer, void, (GLint size, GLenum type, GLsizei stride, const void *pointer))
|
||||
void glVertexPointer(const GLint size, const GLenum type, const GLsizei stride, const void *pointer) {
|
||||
real_glVertexPointer()(size, type, stride, pointer);
|
||||
}
|
||||
GL_FUNC(glLineWidth, void, (GLfloat width));
|
||||
GL_FUNC(glLineWidth, void, (GLfloat width))
|
||||
void glLineWidth(const GLfloat width) {
|
||||
real_glLineWidth()(width);
|
||||
}
|
||||
GL_FUNC(glBlendFunc, void, (GLenum sfactor, GLenum dfactor));
|
||||
GL_FUNC(glBlendFunc, void, (GLenum sfactor, GLenum dfactor))
|
||||
void glBlendFunc(const GLenum sfactor, const GLenum dfactor) {
|
||||
real_glBlendFunc()(sfactor, dfactor);
|
||||
}
|
||||
GL_FUNC(glDrawArrays, void, (GLenum mode, GLint first, GLsizei count));
|
||||
GL_FUNC(glDrawArrays, void, (GLenum mode, GLint first, GLsizei count))
|
||||
void glDrawArrays(const GLenum mode, const GLint first, const GLsizei count) {
|
||||
real_glDrawArrays()(mode, first, count);
|
||||
}
|
||||
GL_FUNC(glMultiDrawArraysEXT, void, (GLenum mode, const GLint *first, const GLsizei *count, GLsizei drawcount));
|
||||
GL_FUNC(glMultiDrawArraysEXT, void, (GLenum mode, const GLint *first, const GLsizei *count, GLsizei drawcount))
|
||||
void glMultiDrawArrays(const GLenum mode, const GLint *first, const GLsizei *count, const GLsizei drawcount) {
|
||||
real_glMultiDrawArraysEXT()(mode, first, count, drawcount);
|
||||
}
|
||||
GL_FUNC(glColor4f, void, (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha));
|
||||
GL_FUNC(glColor4f, void, (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha))
|
||||
void glColor4f(const GLfloat red, const GLfloat green, const GLfloat blue, const GLfloat alpha) {
|
||||
real_glColor4f()(red, green, blue, alpha);
|
||||
}
|
||||
GL_FUNC(glClear, void, (GLbitfield mask));
|
||||
GL_FUNC(glClear, void, (GLbitfield mask))
|
||||
void glClear(const GLbitfield mask) {
|
||||
real_glClear()(mask);
|
||||
}
|
||||
GL_FUNC(glBufferData, void, (GLenum target, GLsizeiptr size, const void *data, GLenum usage));
|
||||
GL_FUNC(glBufferData, void, (GLenum target, GLsizeiptr size, const void *data, GLenum usage))
|
||||
void glBufferData(const GLenum target, const GLsizeiptr size, const void *data, const GLenum usage) {
|
||||
real_glBufferData()(target, size, data, usage);
|
||||
}
|
||||
GL_FUNC(glBufferSubData, void, (GLenum target, GLintptr offset, GLsizeiptr size, const void *data));
|
||||
GL_FUNC(glBufferSubData, void, (GLenum target, GLintptr offset, GLsizeiptr size, const void *data))
|
||||
void glBufferSubData(const GLenum target, const GLintptr offset, const GLsizeiptr size, const void *data) {
|
||||
real_glBufferSubData()(target, offset, size, data);
|
||||
}
|
||||
GL_FUNC(glFogi, void, (GLenum pname, GLint param));
|
||||
GL_FUNC(glFogi, void, (GLenum pname, GLint param))
|
||||
void glFogx(const GLenum pname, const GLfixed param) {
|
||||
real_glFogi()(pname, param);
|
||||
}
|
||||
GL_FUNC(glFogf, void, (GLenum pname, GLfloat param));
|
||||
GL_FUNC(glFogf, void, (GLenum pname, GLfloat param))
|
||||
void glFogf(const GLenum pname, const GLfloat param) {
|
||||
real_glFogf()(pname, param);
|
||||
}
|
||||
GL_FUNC(glMatrixMode, void, (GLenum mode));
|
||||
GL_FUNC(glMatrixMode, void, (GLenum mode))
|
||||
void glMatrixMode(const GLenum mode) {
|
||||
real_glMatrixMode()(mode);
|
||||
}
|
||||
GL_FUNC(glColorPointer, void, (GLint size, GLenum type, GLsizei stride, const void *pointer));
|
||||
GL_FUNC(glColorPointer, void, (GLint size, GLenum type, GLsizei stride, const void *pointer))
|
||||
void glColorPointer(const GLint size, const GLenum type, const GLsizei stride, const void *pointer) {
|
||||
real_glColorPointer()(size, type, stride, pointer);
|
||||
}
|
||||
GL_FUNC(glScissor, void, (GLint x, GLint y, GLsizei width, GLsizei height));
|
||||
GL_FUNC(glScissor, void, (GLint x, GLint y, GLsizei width, GLsizei height))
|
||||
void glScissor(const GLint x, const GLint y, const GLsizei width, const GLsizei height) {
|
||||
real_glScissor()(x, y, width, height);
|
||||
}
|
||||
GL_FUNC(glTexParameteri, void, (GLenum target, GLenum pname, GLint param));
|
||||
GL_FUNC(glTexParameteri, void, (GLenum target, GLenum pname, GLint param))
|
||||
void glTexParameteri(const GLenum target, const GLenum pname, const GLint param) {
|
||||
real_glTexParameteri()(target, pname, param);
|
||||
}
|
||||
GL_FUNC(glTexImage2D, void, (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void *pixels));
|
||||
GL_FUNC(glTexImage2D, void, (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void *pixels))
|
||||
void glTexImage2D(const GLenum target, const GLint level, const GLint internalformat, const GLsizei width, const GLsizei height, const GLint border, const GLenum format, const GLenum type, const void *pixels) {
|
||||
real_glTexImage2D()(target, level, internalformat, width, height, border, format, type, pixels);
|
||||
}
|
||||
GL_FUNC(glEnable, void, (GLenum cap));
|
||||
GL_FUNC(glEnable, void, (GLenum cap))
|
||||
void glEnable(const GLenum cap) {
|
||||
real_glEnable()(cap);
|
||||
}
|
||||
GL_FUNC(glEnableClientState, void, (GLenum array));
|
||||
GL_FUNC(glEnableClientState, void, (GLenum array))
|
||||
void glEnableClientState(const GLenum array) {
|
||||
real_glEnableClientState()(array);
|
||||
}
|
||||
GL_FUNC(glPolygonOffset, void, (GLfloat factor, GLfloat units));
|
||||
GL_FUNC(glPolygonOffset, void, (GLfloat factor, GLfloat units))
|
||||
void glPolygonOffset(const GLfloat factor, const GLfloat units) {
|
||||
real_glPolygonOffset()(factor, units);
|
||||
}
|
||||
GL_FUNC(glDisableClientState, void, (GLenum array));
|
||||
GL_FUNC(glDisableClientState, void, (GLenum array))
|
||||
void glDisableClientState(const GLenum array) {
|
||||
real_glDisableClientState()(array);
|
||||
}
|
||||
GL_FUNC(glDepthRange, void, (GLclampd near, GLclampd far));
|
||||
GL_FUNC(glDepthRange, void, (GLclampd near, GLclampd far))
|
||||
void glDepthRangef(const GLclampf near, const GLclampf far) {
|
||||
real_glDepthRange()(near, far);
|
||||
}
|
||||
GL_FUNC(glDepthFunc, void, (GLenum func));
|
||||
GL_FUNC(glDepthFunc, void, (GLenum func))
|
||||
void glDepthFunc(const GLenum func) {
|
||||
real_glDepthFunc()(func);
|
||||
}
|
||||
GL_FUNC(glBindBuffer, void, (GLenum target, GLuint buffer));
|
||||
GL_FUNC(glBindBuffer, void, (GLenum target, GLuint buffer))
|
||||
void glBindBuffer(const GLenum target, const GLuint buffer) {
|
||||
real_glBindBuffer()(target, buffer);
|
||||
}
|
||||
GL_FUNC(glClearColor, void, (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha));
|
||||
GL_FUNC(glClearColor, void, (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha))
|
||||
void glClearColor(const GLclampf red, const GLclampf green, const GLclampf blue, const GLclampf alpha) {
|
||||
real_glClearColor()(red, green, blue, alpha);
|
||||
}
|
||||
GL_FUNC(glPopMatrix, void, ());
|
||||
GL_FUNC(glPopMatrix, void, ())
|
||||
void glPopMatrix() {
|
||||
real_glPopMatrix()();
|
||||
}
|
||||
GL_FUNC(glLoadIdentity, void, ());
|
||||
GL_FUNC(glLoadIdentity, void, ())
|
||||
void glLoadIdentity() {
|
||||
real_glLoadIdentity()();
|
||||
}
|
||||
GL_FUNC(glScalef, void, (GLfloat x, GLfloat y, GLfloat z));
|
||||
GL_FUNC(glScalef, void, (GLfloat x, GLfloat y, GLfloat z))
|
||||
void glScalef(const GLfloat x, const GLfloat y, const GLfloat z) {
|
||||
real_glScalef()(x, y, z);
|
||||
}
|
||||
GL_FUNC(glPushMatrix, void, ());
|
||||
GL_FUNC(glPushMatrix, void, ())
|
||||
void glPushMatrix() {
|
||||
real_glPushMatrix()();
|
||||
}
|
||||
GL_FUNC(glDepthMask, void, (GLboolean flag));
|
||||
GL_FUNC(glDepthMask, void, (GLboolean flag))
|
||||
void glDepthMask(const GLboolean flag) {
|
||||
real_glDepthMask()(flag);
|
||||
}
|
||||
GL_FUNC(glHint, void, (GLenum target, GLenum mode));
|
||||
GL_FUNC(glHint, void, (GLenum target, GLenum mode))
|
||||
void glHint(const GLenum target, const GLenum mode) {
|
||||
real_glHint()(target, mode);
|
||||
}
|
||||
GL_FUNC(glMultMatrixf, void, (const GLfloat *m));
|
||||
GL_FUNC(glMultMatrixf, void, (const GLfloat *m))
|
||||
void glMultMatrixf(const GLfloat *m) {
|
||||
real_glMultMatrixf()(m);
|
||||
}
|
||||
GL_FUNC(glTexCoordPointer, void, (GLint size, GLenum type, GLsizei stride, const void *pointer));
|
||||
GL_FUNC(glTexCoordPointer, void, (GLint size, GLenum type, GLsizei stride, const void *pointer))
|
||||
void glTexCoordPointer(const GLint size, const GLenum type, const GLsizei stride, const void *pointer) {
|
||||
real_glTexCoordPointer()(size, type, stride, pointer);
|
||||
}
|
||||
GL_FUNC(glDeleteBuffers, void, (GLsizei n, const GLuint *buffers));
|
||||
GL_FUNC(glDeleteBuffers, void, (GLsizei n, const GLuint *buffers))
|
||||
void glDeleteBuffers(const GLsizei n, const GLuint *buffers) {
|
||||
real_glDeleteBuffers()(n, buffers);
|
||||
}
|
||||
GL_FUNC(glColorMask, void, (GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha));
|
||||
GL_FUNC(glColorMask, void, (GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha))
|
||||
void glColorMask(const GLboolean red, const GLboolean green, const GLboolean blue, const GLboolean alpha) {
|
||||
real_glColorMask()(red, green, blue, alpha);
|
||||
}
|
||||
GL_FUNC(glTexSubImage2D, void, (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels));
|
||||
GL_FUNC(glTexSubImage2D, void, (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels))
|
||||
void glTexSubImage2D(const GLenum target, const GLint level, const GLint xoffset, const GLint yoffset, const GLsizei width, const GLsizei height, const GLenum format, const GLenum type, const void *pixels) {
|
||||
real_glTexSubImage2D()(target, level, xoffset, yoffset, width, height, format, type, pixels);
|
||||
}
|
||||
GL_FUNC(glGenTextures, void, (GLsizei n, GLuint *textures));
|
||||
GL_FUNC(glGenTextures, void, (GLsizei n, GLuint *textures))
|
||||
void glGenTextures(const GLsizei n, GLuint *textures) {
|
||||
real_glGenTextures()(n, textures);
|
||||
}
|
||||
GL_FUNC(glDeleteTextures, void, (GLsizei n, const GLuint *textures));
|
||||
GL_FUNC(glDeleteTextures, void, (GLsizei n, const GLuint *textures))
|
||||
void glDeleteTextures(const GLsizei n, const GLuint *textures) {
|
||||
real_glDeleteTextures()(n, textures);
|
||||
}
|
||||
GL_FUNC(glAlphaFunc, void, (GLenum func, GLclampf ref));
|
||||
GL_FUNC(glAlphaFunc, void, (GLenum func, GLclampf ref))
|
||||
void glAlphaFunc(const GLenum func, const GLclampf ref) {
|
||||
real_glAlphaFunc()(func, ref);
|
||||
}
|
||||
GL_FUNC(glGetFloatv, void, (GLenum pname, GLfloat *params));
|
||||
GL_FUNC(glGetFloatv, void, (GLenum pname, GLfloat *params))
|
||||
void glGetFloatv(const GLenum pname, GLfloat *params) {
|
||||
real_glGetFloatv()(pname, params);
|
||||
}
|
||||
GL_FUNC(glBindTexture, void, (GLenum target, GLuint texture));
|
||||
GL_FUNC(glBindTexture, void, (GLenum target, GLuint texture))
|
||||
void glBindTexture(const GLenum target, const GLuint texture) {
|
||||
real_glBindTexture()(target, texture);
|
||||
}
|
||||
GL_FUNC(glTranslatef, void, (GLfloat x, GLfloat y, GLfloat z));
|
||||
GL_FUNC(glTranslatef, void, (GLfloat x, GLfloat y, GLfloat z))
|
||||
void glTranslatef(const GLfloat x, const GLfloat y, const GLfloat z) {
|
||||
real_glTranslatef()(x, y, z);
|
||||
}
|
||||
GL_FUNC(glShadeModel, void, (GLenum mode));
|
||||
GL_FUNC(glShadeModel, void, (GLenum mode))
|
||||
void glShadeModel(const GLenum mode) {
|
||||
real_glShadeModel()(mode);
|
||||
}
|
||||
GL_FUNC(glOrtho, void, (GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble near, GLdouble far));
|
||||
GL_FUNC(glOrtho, void, (GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble near, GLdouble far))
|
||||
void glOrthof(const GLfloat left, const GLfloat right, const GLfloat bottom, const GLfloat top, const GLfloat near, const GLfloat far) {
|
||||
real_glOrtho()(left, right, bottom, top, near, far);
|
||||
}
|
||||
GL_FUNC(glDisable, void, (GLenum cap));
|
||||
GL_FUNC(glDisable, void, (GLenum cap))
|
||||
void glDisable(const GLenum cap) {
|
||||
real_glDisable()(cap);
|
||||
}
|
||||
GL_FUNC(glCullFace, void, (GLenum mode));
|
||||
GL_FUNC(glCullFace, void, (GLenum mode))
|
||||
void glCullFace(const GLenum mode) {
|
||||
real_glCullFace()(mode);
|
||||
}
|
||||
GL_FUNC(glRotatef, void, (GLfloat angle, GLfloat x, GLfloat y, GLfloat z));
|
||||
GL_FUNC(glRotatef, void, (GLfloat angle, GLfloat x, GLfloat y, GLfloat z))
|
||||
void glRotatef(const GLfloat angle, const GLfloat x, const GLfloat y, const GLfloat z) {
|
||||
real_glRotatef()(angle, x, y, z);
|
||||
}
|
||||
GL_FUNC(glViewport, void, (GLint x, GLint y, GLsizei width, GLsizei height));
|
||||
GL_FUNC(glViewport, void, (GLint x, GLint y, GLsizei width, GLsizei height))
|
||||
void glViewport(const GLint x, const GLint y, const GLsizei width, const GLsizei height) {
|
||||
real_glViewport()(x, y, width, height);
|
||||
}
|
||||
GL_FUNC(glNormal3f, void, (GLfloat nx, GLfloat ny, GLfloat nz));
|
||||
GL_FUNC(glNormal3f, void, (GLfloat nx, GLfloat ny, GLfloat nz))
|
||||
void glNormal3f(const GLfloat nx, const GLfloat ny, const GLfloat nz) {
|
||||
real_glNormal3f()(nx, ny, nz);
|
||||
}
|
||||
GL_FUNC(glIsEnabled, GLboolean, (GLenum cap));
|
||||
GL_FUNC(glIsEnabled, GLboolean, (GLenum cap))
|
||||
GLboolean glIsEnabled(const GLenum cap) {
|
||||
return real_glIsEnabled()(cap);
|
||||
}
|
||||
GL_FUNC(glGetIntegerv, void, (GLenum pname, GLint *data));
|
||||
GL_FUNC(glGetIntegerv, void, (GLenum pname, GLint *data))
|
||||
void glGetIntegerv(const GLenum pname, GLint *data) {
|
||||
real_glGetIntegerv()(pname, data);
|
||||
}
|
||||
GL_FUNC(glReadPixels, void, (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, void *data));
|
||||
GL_FUNC(glReadPixels, void, (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, void *data))
|
||||
void glReadPixels(const GLint x, const GLint y, const GLsizei width, const GLsizei height, const GLenum format, const GLenum type, void *data) {
|
||||
real_glReadPixels()(x, y, width, height, format, type, data);
|
||||
}
|
||||
GL_FUNC(glGenBuffers, void, (GLsizei n, GLuint *buffers));
|
||||
GL_FUNC(glGenBuffers, void, (GLsizei n, GLuint *buffers))
|
||||
void glGenBuffers(const GLsizei n, GLuint *buffers) {
|
||||
real_glGenBuffers()(n, buffers);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user