diff --git a/src/drawing/engines/OpenGLAPI.cpp b/src/drawing/engines/OpenGLAPI.cpp index 9d67df8ce1..9c45d2a32b 100644 --- a/src/drawing/engines/OpenGLAPI.cpp +++ b/src/drawing/engines/OpenGLAPI.cpp @@ -27,8 +27,6 @@ #include "../../core/Console.hpp" -#pragma comment(lib, "opengl32.lib") - template static inline bool SetProc(T * func, const char * name) { @@ -52,6 +50,31 @@ static inline bool SetProc(T * func, const char * name) static const char * TryLoadAllProcAddresses() { + // 1.1 functions + SetupOpenGLFunction(glBegin); + SetupOpenGLFunction(glBindTexture); + SetupOpenGLFunction(glBlendFunc); + SetupOpenGLFunction(glClear); + SetupOpenGLFunction(glClearColor); + SetupOpenGLFunction(glColor3f); + SetupOpenGLFunction(glColor4f); + SetupOpenGLFunction(glDeleteTextures); + SetupOpenGLFunction(glDisable); + SetupOpenGLFunction(glEnable); + SetupOpenGLFunction(glEnd); + SetupOpenGLFunction(glGenTextures); + SetupOpenGLFunction(glLoadIdentity); + SetupOpenGLFunction(glMatrixMode); + SetupOpenGLFunction(glOrtho); + SetupOpenGLFunction(glScalef); + SetupOpenGLFunction(glTexCoord2f); + SetupOpenGLFunction(glTexImage2D); + SetupOpenGLFunction(glTexParameteri); + SetupOpenGLFunction(glTranslatef); + SetupOpenGLFunction(glVertex2i); + SetupOpenGLFunction(glViewport); + + // 2.0+ functions SetupOpenGLFunction(glCreateShader); SetupOpenGLFunction(glDeleteShader); diff --git a/src/drawing/engines/OpenGLAPI.h b/src/drawing/engines/OpenGLAPI.h index 9bb8962992..a11fb3aa44 100644 --- a/src/drawing/engines/OpenGLAPI.h +++ b/src/drawing/engines/OpenGLAPI.h @@ -16,8 +16,80 @@ #pragma once +// BEGIN [Do not define 1.1 function signatures] +#define glBegin __static__glBegin +#define glBindTexture __static__glBindTexture +#define glBlendFunc __static__glBlendFunc +#define glClear __static__glClear +#define glClearColor __static__glClearColor +#define glColor3f __static__glColor3f +#define glColor4f __static__glColor4f +#define glDeleteTextures __static__glDeleteTextures +#define glDisable __static__glDisable +#define glEnable __static__glEnable +#define glEnd __static__glEnd +#define glGenTextures __static__glGenTextures +#define glLoadIdentity __static__glLoadIdentity +#define glMatrixMode __static__glMatrixMode +#define glOrtho __static__glOrtho +#define glScalef __static__glScalef +#define glTexCoord2f __static__glTexCoord2f +#define glTexImage2D __static__glTexImage2D +#define glTexParameteri __static__glTexParameteri +#define glTranslatef __static__glTranslatef +#define glVertex2i __static__glVertex2i +#define glViewport __static__glViewport + #include +// END [Do not define 1.1 function signatures] +#undef glBegin +#undef glBindTexture +#undef glBlendFunc +#undef glClear +#undef glClearColor +#undef glColor3f +#undef glColor4f +#undef glDeleteTextures +#undef glDisable +#undef glEnable +#undef glEnd +#undef glGenTextures +#undef glLoadIdentity +#undef glMatrixMode +#undef glOrtho +#undef glScalef +#undef glTexCoord2f +#undef glTexImage2D +#undef glTexParameteri +#undef glTranslatef +#undef glVertex2i +#undef glViewport + +// 1.1 function signatures +typedef void (APIENTRYP PFNGLBEGINPROC )(GLenum mode); +typedef void (APIENTRYP PFNGLBINDTEXTUREPROC )(GLenum target, GLuint texture); +typedef void (APIENTRYP PFNGLBLENDFUNCPROC )(GLenum sfactor, GLenum dfactor); +typedef void (APIENTRYP PFNGLCLEARPROC )(GLbitfield mask); +typedef void (APIENTRYP PFNGLCLEARCOLORPROC )(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha); +typedef void (APIENTRYP PFNGLCOLOR3FPROC )(GLfloat red, GLfloat green, GLfloat blue); +typedef void (APIENTRYP PFNGLCOLOR4FPROC )(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); +typedef void (APIENTRYP PFNGLDELETETEXTURESPROC)(GLsizei n, const GLuint *textures); +typedef void (APIENTRYP PFNGLDISABLEPROC )(GLenum cap); +typedef void (APIENTRYP PFNGLENABLEPROC )(GLenum cap); +typedef void (APIENTRYP PFNGLENDPROC )(void); +typedef void (APIENTRYP PFNGLGENTEXTURESPROC )(GLsizei n, GLuint *textures); +typedef void (APIENTRYP PFNGLLOADIDENTITYPROC )(void); +typedef void (APIENTRYP PFNGLMATRIXMODEPROC )(GLenum mode); +typedef void (APIENTRYP PFNGLORTHOPROC )(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble near_val, GLdouble far_val); +typedef void (APIENTRYP PFNGLSCALEFPROC )(GLfloat x, GLfloat y, GLfloat z); +typedef void (APIENTRYP PFNGLTEXCOORD2FPROC )(GLfloat s, GLfloat t); +typedef void (APIENTRYP PFNGLTEXIMAGE2DPROC )(GLenum target, GLint level, GLint internalFormat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels); +typedef void (APIENTRYP PFNGLTEXPARAMETERIPROC )(GLenum target, GLenum pname, GLint param); +typedef void (APIENTRYP PFNGLTRANSLATEFPROC )(GLfloat x, GLfloat y, GLfloat z); +typedef void (APIENTRYP PFNGLVERTEX2IPROC )(GLint x, GLint y); +typedef void (APIENTRYP PFNGLVIEWPORTPROC )(GLint x, GLint y, GLsizei width, GLsizei height); + #if __WINDOWS__ #ifdef NO_EXTERN_GLAPI @@ -28,8 +100,33 @@ #define GLAPI_SET #endif -GLAPI_DECL PFNGLCREATESHADERPROC glCreateShader GLAPI_SET; -GLAPI_DECL PFNGLDELETESHADERPROC glDeleteShader GLAPI_SET; +// 1.1 function pointers +GLAPI_DECL PFNGLBEGINPROC glBegin GLAPI_SET; +GLAPI_DECL PFNGLBINDTEXTUREPROC glBindTexture GLAPI_SET; +GLAPI_DECL PFNGLBLENDFUNCPROC glBlendFunc GLAPI_SET; +GLAPI_DECL PFNGLCLEARPROC glClear GLAPI_SET; +GLAPI_DECL PFNGLCLEARCOLORPROC glClearColor GLAPI_SET; +GLAPI_DECL PFNGLCOLOR3FPROC glColor3f GLAPI_SET; +GLAPI_DECL PFNGLCOLOR4FPROC glColor4f GLAPI_SET; +GLAPI_DECL PFNGLDELETETEXTURESPROC glDeleteTextures GLAPI_SET; +GLAPI_DECL PFNGLDISABLEPROC glDisable GLAPI_SET; +GLAPI_DECL PFNGLENABLEPROC glEnable GLAPI_SET; +GLAPI_DECL PFNGLENDPROC glEnd GLAPI_SET; +GLAPI_DECL PFNGLGENTEXTURESPROC glGenTextures GLAPI_SET; +GLAPI_DECL PFNGLLOADIDENTITYPROC glLoadIdentity GLAPI_SET; +GLAPI_DECL PFNGLMATRIXMODEPROC glMatrixMode GLAPI_SET; +GLAPI_DECL PFNGLORTHOPROC glOrtho GLAPI_SET; +GLAPI_DECL PFNGLSCALEFPROC glScalef GLAPI_SET; +GLAPI_DECL PFNGLTEXCOORD2FPROC glTexCoord2f GLAPI_SET; +GLAPI_DECL PFNGLTEXIMAGE2DPROC glTexImage2D GLAPI_SET; +GLAPI_DECL PFNGLTEXPARAMETERIPROC glTexParameteri GLAPI_SET; +GLAPI_DECL PFNGLTRANSLATEFPROC glTranslatef GLAPI_SET; +GLAPI_DECL PFNGLVERTEX2IPROC glVertex2i GLAPI_SET; +GLAPI_DECL PFNGLVIEWPORTPROC glViewport GLAPI_SET; + +// 2.0+ function pointers +GLAPI_DECL PFNGLCREATESHADERPROC glCreateShader GLAPI_SET; +GLAPI_DECL PFNGLDELETESHADERPROC glDeleteShader GLAPI_SET; #endif /* __WINDOWS__ */