diff --git a/inc/opengl.h b/inc/opengl.h index c140894..9d7e5c1 100644 --- a/inc/opengl.h +++ b/inc/opengl.h @@ -1,54 +1,34 @@ #pragma once #include "glcorearb.h" -typedef HGLRC (APIENTRYP PFNWGLCREATECONTEXT)(HDC); -typedef BOOL (APIENTRYP PFNWGLDELETECONTEXT)(HGLRC); -typedef PROC (APIENTRYP PFNWGLGETPROCADDRESS)(LPCSTR); -typedef BOOL (APIENTRYP PFNWGLMAKECURRENT)(HDC, HGLRC); +// wgl +typedef HGLRC (APIENTRYP PFNWGLCREATECONTEXTPROC)(HDC); +typedef BOOL (APIENTRYP PFNWGLDELETECONTEXTPROC)(HGLRC); +typedef PROC (APIENTRYP PFNWGLGETPROCADDRESSPROC)(LPCSTR); +typedef BOOL (APIENTRYP PFNWGLMAKECURRENTPROC)(HDC, HGLRC); +typedef void (APIENTRYP PFNWGLSWAPINTERVALEXTPROC) (int interval); +typedef const char* (APIENTRYP PFNWGLGETEXTENSIONSSTRINGARBPROC)(HDC hdc); -extern PFNWGLCREATECONTEXT xwglCreateContext; -extern PFNWGLDELETECONTEXT xwglDeleteContext; -extern PFNWGLGETPROCADDRESS xwglGetProcAddress; -extern PFNWGLMAKECURRENT xwglMakeCurrent; +extern PFNWGLCREATECONTEXTPROC xwglCreateContext; +extern PFNWGLDELETECONTEXTPROC xwglDeleteContext; +extern PFNWGLGETPROCADDRESSPROC xwglGetProcAddress; +extern PFNWGLMAKECURRENTPROC xwglMakeCurrent; +extern PFNWGLSWAPINTERVALEXTPROC wglSwapIntervalEXT; +extern PFNWGLGETEXTENSIONSSTRINGARBPROC wglGetExtensionsStringARB; -typedef void (APIENTRYP PFNGLVIEWPORT)(GLint x, GLint y, GLsizei width, GLsizei height); -typedef void (APIENTRYP PFNGLBINDTEXTURE)(GLenum target, GLuint texture); -typedef void (APIENTRYP PFNGLGENTEXTURES)(GLsizei n, GLuint *textures); -typedef void (APIENTRYP PFNGLTEXPARAMETERI)(GLenum target, GLenum pname, GLint param); -typedef void (APIENTRYP PFNGLDELETETEXTURES)(GLsizei n, const GLuint *textures); -typedef void (APIENTRYP PFNGLTEXIMAGE2D)(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels); -typedef void (APIENTRYP PFNGLDRAWELEMENTS)(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices); -typedef void (APIENTRYP PFNGLTEXSUBIMAGE2D)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels); -typedef GLenum (APIENTRYP PFNGLGETERROR)(void); -typedef const GLubyte * (APIENTRYP PFNGLGETSTRING)(GLenum name); -typedef void (APIENTRYP PFNGLGETTEXIMAGE)(GLenum target, GLint level, GLenum format, GLenum type, GLvoid *pixels); -typedef void (APIENTRYP PFNGLPIXELSTOREI)(GLenum pname, GLint param); - -extern PFNGLVIEWPORT glViewport; -extern PFNGLBINDTEXTURE glBindTexture; -extern PFNGLGENTEXTURES glGenTextures; -extern PFNGLTEXPARAMETERI glTexParameteri; -extern PFNGLDELETETEXTURES glDeleteTextures; -extern PFNGLTEXIMAGE2D glTexImage2D; -extern PFNGLDRAWELEMENTS glDrawElements; -extern PFNGLTEXSUBIMAGE2D glTexSubImage2D; -extern PFNGLGETERROR glGetError; -extern PFNGLGETSTRING glGetString; -extern PFNGLGETTEXIMAGE glGetTexImage; -extern PFNGLPIXELSTOREI glPixelStorei; //compat profile only ---> #define GL_LUMINANCE 0x1909 #define GL_LUMINANCE8 0x8040 -typedef void (APIENTRYP PFNGLBEGIN)(GLenum mode); -typedef void (APIENTRYP PFNGLEND)(void); -typedef void (APIENTRYP PFNGLTEXCOORD2F)(GLfloat s, GLfloat t); -typedef void (APIENTRYP PFNGLVERTEX2F)(GLfloat x, GLfloat y); +typedef void (APIENTRYP PFNGLBEGINPROC)(GLenum mode); +typedef void (APIENTRYP PFNGLENDPROC)(void); +typedef void (APIENTRYP PFNGLTEXCOORD2FPROC)(GLfloat s, GLfloat t); +typedef void (APIENTRYP PFNGLVERTEX2FPROC)(GLfloat x, GLfloat y); -extern PFNGLBEGIN glBegin; -extern PFNGLEND glEnd; -extern PFNGLTEXCOORD2F glTexCoord2f; -extern PFNGLVERTEX2F glVertex2f; +extern PFNGLBEGINPROC glBegin; +extern PFNGLENDPROC glEnd; +extern PFNGLTEXCOORD2FPROC glTexCoord2f; +extern PFNGLVERTEX2FPROC glVertex2f; // <--- compat profile only @@ -58,8 +38,18 @@ BOOL OpenGL_ExtExists(char *ext, HDC hdc); GLuint OpenGL_BuildProgram(const GLchar *vertSource, const GLchar *fragSource); GLuint OpenGL_BuildProgramFromFile(const char *filePath); -typedef void (APIENTRYP PFNWGLSWAPINTERVALEXT) (int interval); -typedef const char* (WINAPI *PFNWGLGETEXTENSIONSSTRINGARBPROC)(HDC hdc); +extern PFNGLVIEWPORTPROC glViewport; +extern PFNGLBINDTEXTUREPROC glBindTexture; +extern PFNGLGENTEXTURESPROC glGenTextures; +extern PFNGLTEXPARAMETERIPROC glTexParameteri; +extern PFNGLDELETETEXTURESPROC glDeleteTextures; +extern PFNGLTEXIMAGE2DPROC glTexImage2D; +extern PFNGLDRAWELEMENTSPROC glDrawElements; +extern PFNGLTEXSUBIMAGE2DPROC glTexSubImage2D; +extern PFNGLGETERRORPROC glGetError; +extern PFNGLGETSTRINGPROC glGetString; +extern PFNGLGETTEXIMAGEPROC glGetTexImage; +extern PFNGLPIXELSTOREIPROC glPixelStorei; extern PFNGLCREATEPROGRAMPROC glCreateProgram; extern PFNGLDELETEPROGRAMPROC glDeleteProgram; @@ -120,9 +110,6 @@ extern PFNGLDRAWBUFFERSPROC glDrawBuffers; extern PFNGLCHECKFRAMEBUFFERSTATUSPROC glCheckFramebufferStatus; extern PFNGLDELETEFRAMEBUFFERSPROC glDeleteFramebuffers; -extern PFNWGLSWAPINTERVALEXT wglSwapIntervalEXT; -extern PFNWGLGETEXTENSIONSSTRINGARBPROC wglGetExtensionsStringARB; - extern PFNGLTEXBUFFERPROC glTexBuffer; extern HMODULE OpenGL_hModule; diff --git a/src/opengl.c b/src/opengl.c index eef3ac3..7057f2e 100644 --- a/src/opengl.c +++ b/src/opengl.c @@ -2,28 +2,28 @@ #include #include "opengl.h" -PFNWGLCREATECONTEXT xwglCreateContext; -PFNWGLDELETECONTEXT xwglDeleteContext; -PFNWGLGETPROCADDRESS xwglGetProcAddress; -PFNWGLMAKECURRENT xwglMakeCurrent; +PFNWGLCREATECONTEXTPROC xwglCreateContext; +PFNWGLDELETECONTEXTPROC xwglDeleteContext; +PFNWGLGETPROCADDRESSPROC xwglGetProcAddress; +PFNWGLMAKECURRENTPROC xwglMakeCurrent; -PFNGLVIEWPORT glViewport; -PFNGLBINDTEXTURE glBindTexture; -PFNGLGENTEXTURES glGenTextures; -PFNGLTEXPARAMETERI glTexParameteri; -PFNGLDELETETEXTURES glDeleteTextures; -PFNGLTEXIMAGE2D glTexImage2D; -PFNGLDRAWELEMENTS glDrawElements; -PFNGLTEXSUBIMAGE2D glTexSubImage2D; -PFNGLGETERROR glGetError; -PFNGLGETSTRING glGetString; -PFNGLGETTEXIMAGE glGetTexImage; -PFNGLPIXELSTOREI glPixelStorei; +PFNGLVIEWPORTPROC glViewport; +PFNGLBINDTEXTUREPROC glBindTexture; +PFNGLGENTEXTURESPROC glGenTextures; +PFNGLTEXPARAMETERIPROC glTexParameteri; +PFNGLDELETETEXTURESPROC glDeleteTextures; +PFNGLTEXIMAGE2DPROC glTexImage2D; +PFNGLDRAWELEMENTSPROC glDrawElements; +PFNGLTEXSUBIMAGE2DPROC glTexSubImage2D; +PFNGLGETERRORPROC glGetError; +PFNGLGETSTRINGPROC glGetString; +PFNGLGETTEXIMAGEPROC glGetTexImage; +PFNGLPIXELSTOREIPROC glPixelStorei; -PFNGLBEGIN glBegin; -PFNGLEND glEnd; -PFNGLTEXCOORD2F glTexCoord2f; -PFNGLVERTEX2F glVertex2f; +PFNGLBEGINPROC glBegin; +PFNGLENDPROC glEnd; +PFNGLTEXCOORD2FPROC glTexCoord2f; +PFNGLVERTEX2FPROC glVertex2f; // Program PFNGLCREATEPROGRAMPROC glCreateProgram; @@ -85,7 +85,7 @@ PFNGLDRAWBUFFERSPROC glDrawBuffers; PFNGLCHECKFRAMEBUFFERSTATUSPROC glCheckFramebufferStatus; PFNGLDELETEFRAMEBUFFERSPROC glDeleteFramebuffers; -PFNWGLSWAPINTERVALEXT wglSwapIntervalEXT; +PFNWGLSWAPINTERVALEXTPROC wglSwapIntervalEXT; PFNWGLGETEXTENSIONSSTRINGARBPROC wglGetExtensionsStringARB; PFNGLTEXBUFFERPROC glTexBuffer; @@ -104,28 +104,28 @@ BOOL OpenGL_LoadDll() if (OpenGL_hModule) { - xwglCreateContext = (PFNWGLCREATECONTEXT)GetProcAddress(OpenGL_hModule, "wglCreateContext"); - xwglDeleteContext = (PFNWGLDELETECONTEXT)GetProcAddress(OpenGL_hModule, "wglDeleteContext"); - xwglGetProcAddress = (PFNWGLGETPROCADDRESS)GetProcAddress(OpenGL_hModule, "wglGetProcAddress"); - xwglMakeCurrent = (PFNWGLMAKECURRENT)GetProcAddress(OpenGL_hModule, "wglMakeCurrent"); + xwglCreateContext = (PFNWGLCREATECONTEXTPROC)GetProcAddress(OpenGL_hModule, "wglCreateContext"); + xwglDeleteContext = (PFNWGLDELETECONTEXTPROC)GetProcAddress(OpenGL_hModule, "wglDeleteContext"); + xwglGetProcAddress = (PFNWGLGETPROCADDRESSPROC)GetProcAddress(OpenGL_hModule, "wglGetProcAddress"); + xwglMakeCurrent = (PFNWGLMAKECURRENTPROC)GetProcAddress(OpenGL_hModule, "wglMakeCurrent"); - glViewport = (PFNGLVIEWPORT)GetProcAddress(OpenGL_hModule, "glViewport"); - glBindTexture = (PFNGLBINDTEXTURE)GetProcAddress(OpenGL_hModule, "glBindTexture"); - glGenTextures = (PFNGLGENTEXTURES)GetProcAddress(OpenGL_hModule, "glGenTextures"); - glTexParameteri = (PFNGLTEXPARAMETERI)GetProcAddress(OpenGL_hModule, "glTexParameteri"); - glDeleteTextures = (PFNGLDELETETEXTURES)GetProcAddress(OpenGL_hModule, "glDeleteTextures"); - glTexImage2D = (PFNGLTEXIMAGE2D)GetProcAddress(OpenGL_hModule, "glTexImage2D"); - glDrawElements = (PFNGLDRAWELEMENTS)GetProcAddress(OpenGL_hModule, "glDrawElements"); - glTexSubImage2D = (PFNGLTEXSUBIMAGE2D)GetProcAddress(OpenGL_hModule, "glTexSubImage2D"); - glGetError = (PFNGLGETERROR)GetProcAddress(OpenGL_hModule, "glGetError"); - glGetString = (PFNGLGETSTRING)GetProcAddress(OpenGL_hModule, "glGetString"); - glGetTexImage = (PFNGLGETTEXIMAGE)GetProcAddress(OpenGL_hModule, "glGetTexImage"); - glPixelStorei = (PFNGLPIXELSTOREI)GetProcAddress(OpenGL_hModule, "glPixelStorei"); + glViewport = (PFNGLVIEWPORTPROC)GetProcAddress(OpenGL_hModule, "glViewport"); + glBindTexture = (PFNGLBINDTEXTUREPROC)GetProcAddress(OpenGL_hModule, "glBindTexture"); + glGenTextures = (PFNGLGENTEXTURESPROC)GetProcAddress(OpenGL_hModule, "glGenTextures"); + glTexParameteri = (PFNGLTEXPARAMETERIPROC)GetProcAddress(OpenGL_hModule, "glTexParameteri"); + glDeleteTextures = (PFNGLDELETETEXTURESPROC)GetProcAddress(OpenGL_hModule, "glDeleteTextures"); + glTexImage2D = (PFNGLTEXIMAGE2DPROC)GetProcAddress(OpenGL_hModule, "glTexImage2D"); + glDrawElements = (PFNGLDRAWELEMENTSPROC)GetProcAddress(OpenGL_hModule, "glDrawElements"); + glTexSubImage2D = (PFNGLTEXSUBIMAGE2DPROC)GetProcAddress(OpenGL_hModule, "glTexSubImage2D"); + glGetError = (PFNGLGETERRORPROC)GetProcAddress(OpenGL_hModule, "glGetError"); + glGetString = (PFNGLGETSTRINGPROC)GetProcAddress(OpenGL_hModule, "glGetString"); + glGetTexImage = (PFNGLGETTEXIMAGEPROC)GetProcAddress(OpenGL_hModule, "glGetTexImage"); + glPixelStorei = (PFNGLPIXELSTOREIPROC)GetProcAddress(OpenGL_hModule, "glPixelStorei"); - glBegin = (PFNGLBEGIN)GetProcAddress(OpenGL_hModule, "glBegin"); - glEnd = (PFNGLEND)GetProcAddress(OpenGL_hModule, "glEnd"); - glTexCoord2f = (PFNGLTEXCOORD2F)GetProcAddress(OpenGL_hModule, "glTexCoord2f"); - glVertex2f = (PFNGLVERTEX2F)GetProcAddress(OpenGL_hModule, "glVertex2f"); + glBegin = (PFNGLBEGINPROC)GetProcAddress(OpenGL_hModule, "glBegin"); + glEnd = (PFNGLENDPROC)GetProcAddress(OpenGL_hModule, "glEnd"); + glTexCoord2f = (PFNGLTEXCOORD2FPROC)GetProcAddress(OpenGL_hModule, "glTexCoord2f"); + glVertex2f = (PFNGLVERTEX2FPROC)GetProcAddress(OpenGL_hModule, "glVertex2f"); } return xwglCreateContext && xwglDeleteContext && xwglGetProcAddress && xwglMakeCurrent && glViewport && @@ -194,7 +194,7 @@ void OpenGL_Init() glCheckFramebufferStatus = (PFNGLCHECKFRAMEBUFFERSTATUSPROC)xwglGetProcAddress("glCheckFramebufferStatus"); glDeleteFramebuffers = (PFNGLDELETEFRAMEBUFFERSPROC)xwglGetProcAddress("glDeleteFramebuffers"); - wglSwapIntervalEXT = (PFNWGLSWAPINTERVALEXT)xwglGetProcAddress("wglSwapIntervalEXT"); + wglSwapIntervalEXT = (PFNWGLSWAPINTERVALEXTPROC)xwglGetProcAddress("wglSwapIntervalEXT"); wglGetExtensionsStringARB = (PFNWGLGETEXTENSIONSSTRINGARBPROC)xwglGetProcAddress("wglGetExtensionsStringARB"); glTexBuffer = (PFNGLTEXBUFFERPROC)xwglGetProcAddress("glTexBuffer");