remove duplicate code

This commit is contained in:
FunkyFr3sh 2018-10-24 06:27:42 +02:00
parent 35ac845688
commit 4814054df5
2 changed files with 75 additions and 88 deletions

View file

@ -1,54 +1,34 @@
#pragma once #pragma once
#include "glcorearb.h" #include "glcorearb.h"
typedef HGLRC (APIENTRYP PFNWGLCREATECONTEXT)(HDC); // wgl
typedef BOOL (APIENTRYP PFNWGLDELETECONTEXT)(HGLRC); typedef HGLRC (APIENTRYP PFNWGLCREATECONTEXTPROC)(HDC);
typedef PROC (APIENTRYP PFNWGLGETPROCADDRESS)(LPCSTR); typedef BOOL (APIENTRYP PFNWGLDELETECONTEXTPROC)(HGLRC);
typedef BOOL (APIENTRYP PFNWGLMAKECURRENT)(HDC, 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 PFNWGLCREATECONTEXTPROC xwglCreateContext;
extern PFNWGLDELETECONTEXT xwglDeleteContext; extern PFNWGLDELETECONTEXTPROC xwglDeleteContext;
extern PFNWGLGETPROCADDRESS xwglGetProcAddress; extern PFNWGLGETPROCADDRESSPROC xwglGetProcAddress;
extern PFNWGLMAKECURRENT xwglMakeCurrent; 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 ---> //compat profile only --->
#define GL_LUMINANCE 0x1909 #define GL_LUMINANCE 0x1909
#define GL_LUMINANCE8 0x8040 #define GL_LUMINANCE8 0x8040
typedef void (APIENTRYP PFNGLBEGIN)(GLenum mode); typedef void (APIENTRYP PFNGLBEGINPROC)(GLenum mode);
typedef void (APIENTRYP PFNGLEND)(void); typedef void (APIENTRYP PFNGLENDPROC)(void);
typedef void (APIENTRYP PFNGLTEXCOORD2F)(GLfloat s, GLfloat t); typedef void (APIENTRYP PFNGLTEXCOORD2FPROC)(GLfloat s, GLfloat t);
typedef void (APIENTRYP PFNGLVERTEX2F)(GLfloat x, GLfloat y); typedef void (APIENTRYP PFNGLVERTEX2FPROC)(GLfloat x, GLfloat y);
extern PFNGLBEGIN glBegin; extern PFNGLBEGINPROC glBegin;
extern PFNGLEND glEnd; extern PFNGLENDPROC glEnd;
extern PFNGLTEXCOORD2F glTexCoord2f; extern PFNGLTEXCOORD2FPROC glTexCoord2f;
extern PFNGLVERTEX2F glVertex2f; extern PFNGLVERTEX2FPROC glVertex2f;
// <--- compat profile only // <--- 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_BuildProgram(const GLchar *vertSource, const GLchar *fragSource);
GLuint OpenGL_BuildProgramFromFile(const char *filePath); GLuint OpenGL_BuildProgramFromFile(const char *filePath);
typedef void (APIENTRYP PFNWGLSWAPINTERVALEXT) (int interval); extern PFNGLVIEWPORTPROC glViewport;
typedef const char* (WINAPI *PFNWGLGETEXTENSIONSSTRINGARBPROC)(HDC hdc); 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 PFNGLCREATEPROGRAMPROC glCreateProgram;
extern PFNGLDELETEPROGRAMPROC glDeleteProgram; extern PFNGLDELETEPROGRAMPROC glDeleteProgram;
@ -120,9 +110,6 @@ extern PFNGLDRAWBUFFERSPROC glDrawBuffers;
extern PFNGLCHECKFRAMEBUFFERSTATUSPROC glCheckFramebufferStatus; extern PFNGLCHECKFRAMEBUFFERSTATUSPROC glCheckFramebufferStatus;
extern PFNGLDELETEFRAMEBUFFERSPROC glDeleteFramebuffers; extern PFNGLDELETEFRAMEBUFFERSPROC glDeleteFramebuffers;
extern PFNWGLSWAPINTERVALEXT wglSwapIntervalEXT;
extern PFNWGLGETEXTENSIONSSTRINGARBPROC wglGetExtensionsStringARB;
extern PFNGLTEXBUFFERPROC glTexBuffer; extern PFNGLTEXBUFFERPROC glTexBuffer;
extern HMODULE OpenGL_hModule; extern HMODULE OpenGL_hModule;

View file

@ -2,28 +2,28 @@
#include <stdio.h> #include <stdio.h>
#include "opengl.h" #include "opengl.h"
PFNWGLCREATECONTEXT xwglCreateContext; PFNWGLCREATECONTEXTPROC xwglCreateContext;
PFNWGLDELETECONTEXT xwglDeleteContext; PFNWGLDELETECONTEXTPROC xwglDeleteContext;
PFNWGLGETPROCADDRESS xwglGetProcAddress; PFNWGLGETPROCADDRESSPROC xwglGetProcAddress;
PFNWGLMAKECURRENT xwglMakeCurrent; PFNWGLMAKECURRENTPROC xwglMakeCurrent;
PFNGLVIEWPORT glViewport; PFNGLVIEWPORTPROC glViewport;
PFNGLBINDTEXTURE glBindTexture; PFNGLBINDTEXTUREPROC glBindTexture;
PFNGLGENTEXTURES glGenTextures; PFNGLGENTEXTURESPROC glGenTextures;
PFNGLTEXPARAMETERI glTexParameteri; PFNGLTEXPARAMETERIPROC glTexParameteri;
PFNGLDELETETEXTURES glDeleteTextures; PFNGLDELETETEXTURESPROC glDeleteTextures;
PFNGLTEXIMAGE2D glTexImage2D; PFNGLTEXIMAGE2DPROC glTexImage2D;
PFNGLDRAWELEMENTS glDrawElements; PFNGLDRAWELEMENTSPROC glDrawElements;
PFNGLTEXSUBIMAGE2D glTexSubImage2D; PFNGLTEXSUBIMAGE2DPROC glTexSubImage2D;
PFNGLGETERROR glGetError; PFNGLGETERRORPROC glGetError;
PFNGLGETSTRING glGetString; PFNGLGETSTRINGPROC glGetString;
PFNGLGETTEXIMAGE glGetTexImage; PFNGLGETTEXIMAGEPROC glGetTexImage;
PFNGLPIXELSTOREI glPixelStorei; PFNGLPIXELSTOREIPROC glPixelStorei;
PFNGLBEGIN glBegin; PFNGLBEGINPROC glBegin;
PFNGLEND glEnd; PFNGLENDPROC glEnd;
PFNGLTEXCOORD2F glTexCoord2f; PFNGLTEXCOORD2FPROC glTexCoord2f;
PFNGLVERTEX2F glVertex2f; PFNGLVERTEX2FPROC glVertex2f;
// Program // Program
PFNGLCREATEPROGRAMPROC glCreateProgram; PFNGLCREATEPROGRAMPROC glCreateProgram;
@ -85,7 +85,7 @@ PFNGLDRAWBUFFERSPROC glDrawBuffers;
PFNGLCHECKFRAMEBUFFERSTATUSPROC glCheckFramebufferStatus; PFNGLCHECKFRAMEBUFFERSTATUSPROC glCheckFramebufferStatus;
PFNGLDELETEFRAMEBUFFERSPROC glDeleteFramebuffers; PFNGLDELETEFRAMEBUFFERSPROC glDeleteFramebuffers;
PFNWGLSWAPINTERVALEXT wglSwapIntervalEXT; PFNWGLSWAPINTERVALEXTPROC wglSwapIntervalEXT;
PFNWGLGETEXTENSIONSSTRINGARBPROC wglGetExtensionsStringARB; PFNWGLGETEXTENSIONSSTRINGARBPROC wglGetExtensionsStringARB;
PFNGLTEXBUFFERPROC glTexBuffer; PFNGLTEXBUFFERPROC glTexBuffer;
@ -104,28 +104,28 @@ BOOL OpenGL_LoadDll()
if (OpenGL_hModule) if (OpenGL_hModule)
{ {
xwglCreateContext = (PFNWGLCREATECONTEXT)GetProcAddress(OpenGL_hModule, "wglCreateContext"); xwglCreateContext = (PFNWGLCREATECONTEXTPROC)GetProcAddress(OpenGL_hModule, "wglCreateContext");
xwglDeleteContext = (PFNWGLDELETECONTEXT)GetProcAddress(OpenGL_hModule, "wglDeleteContext"); xwglDeleteContext = (PFNWGLDELETECONTEXTPROC)GetProcAddress(OpenGL_hModule, "wglDeleteContext");
xwglGetProcAddress = (PFNWGLGETPROCADDRESS)GetProcAddress(OpenGL_hModule, "wglGetProcAddress"); xwglGetProcAddress = (PFNWGLGETPROCADDRESSPROC)GetProcAddress(OpenGL_hModule, "wglGetProcAddress");
xwglMakeCurrent = (PFNWGLMAKECURRENT)GetProcAddress(OpenGL_hModule, "wglMakeCurrent"); xwglMakeCurrent = (PFNWGLMAKECURRENTPROC)GetProcAddress(OpenGL_hModule, "wglMakeCurrent");
glViewport = (PFNGLVIEWPORT)GetProcAddress(OpenGL_hModule, "glViewport"); glViewport = (PFNGLVIEWPORTPROC)GetProcAddress(OpenGL_hModule, "glViewport");
glBindTexture = (PFNGLBINDTEXTURE)GetProcAddress(OpenGL_hModule, "glBindTexture"); glBindTexture = (PFNGLBINDTEXTUREPROC)GetProcAddress(OpenGL_hModule, "glBindTexture");
glGenTextures = (PFNGLGENTEXTURES)GetProcAddress(OpenGL_hModule, "glGenTextures"); glGenTextures = (PFNGLGENTEXTURESPROC)GetProcAddress(OpenGL_hModule, "glGenTextures");
glTexParameteri = (PFNGLTEXPARAMETERI)GetProcAddress(OpenGL_hModule, "glTexParameteri"); glTexParameteri = (PFNGLTEXPARAMETERIPROC)GetProcAddress(OpenGL_hModule, "glTexParameteri");
glDeleteTextures = (PFNGLDELETETEXTURES)GetProcAddress(OpenGL_hModule, "glDeleteTextures"); glDeleteTextures = (PFNGLDELETETEXTURESPROC)GetProcAddress(OpenGL_hModule, "glDeleteTextures");
glTexImage2D = (PFNGLTEXIMAGE2D)GetProcAddress(OpenGL_hModule, "glTexImage2D"); glTexImage2D = (PFNGLTEXIMAGE2DPROC)GetProcAddress(OpenGL_hModule, "glTexImage2D");
glDrawElements = (PFNGLDRAWELEMENTS)GetProcAddress(OpenGL_hModule, "glDrawElements"); glDrawElements = (PFNGLDRAWELEMENTSPROC)GetProcAddress(OpenGL_hModule, "glDrawElements");
glTexSubImage2D = (PFNGLTEXSUBIMAGE2D)GetProcAddress(OpenGL_hModule, "glTexSubImage2D"); glTexSubImage2D = (PFNGLTEXSUBIMAGE2DPROC)GetProcAddress(OpenGL_hModule, "glTexSubImage2D");
glGetError = (PFNGLGETERROR)GetProcAddress(OpenGL_hModule, "glGetError"); glGetError = (PFNGLGETERRORPROC)GetProcAddress(OpenGL_hModule, "glGetError");
glGetString = (PFNGLGETSTRING)GetProcAddress(OpenGL_hModule, "glGetString"); glGetString = (PFNGLGETSTRINGPROC)GetProcAddress(OpenGL_hModule, "glGetString");
glGetTexImage = (PFNGLGETTEXIMAGE)GetProcAddress(OpenGL_hModule, "glGetTexImage"); glGetTexImage = (PFNGLGETTEXIMAGEPROC)GetProcAddress(OpenGL_hModule, "glGetTexImage");
glPixelStorei = (PFNGLPIXELSTOREI)GetProcAddress(OpenGL_hModule, "glPixelStorei"); glPixelStorei = (PFNGLPIXELSTOREIPROC)GetProcAddress(OpenGL_hModule, "glPixelStorei");
glBegin = (PFNGLBEGIN)GetProcAddress(OpenGL_hModule, "glBegin"); glBegin = (PFNGLBEGINPROC)GetProcAddress(OpenGL_hModule, "glBegin");
glEnd = (PFNGLEND)GetProcAddress(OpenGL_hModule, "glEnd"); glEnd = (PFNGLENDPROC)GetProcAddress(OpenGL_hModule, "glEnd");
glTexCoord2f = (PFNGLTEXCOORD2F)GetProcAddress(OpenGL_hModule, "glTexCoord2f"); glTexCoord2f = (PFNGLTEXCOORD2FPROC)GetProcAddress(OpenGL_hModule, "glTexCoord2f");
glVertex2f = (PFNGLVERTEX2F)GetProcAddress(OpenGL_hModule, "glVertex2f"); glVertex2f = (PFNGLVERTEX2FPROC)GetProcAddress(OpenGL_hModule, "glVertex2f");
} }
return xwglCreateContext && xwglDeleteContext && xwglGetProcAddress && xwglMakeCurrent && glViewport && return xwglCreateContext && xwglDeleteContext && xwglGetProcAddress && xwglMakeCurrent && glViewport &&
@ -194,7 +194,7 @@ void OpenGL_Init()
glCheckFramebufferStatus = (PFNGLCHECKFRAMEBUFFERSTATUSPROC)xwglGetProcAddress("glCheckFramebufferStatus"); glCheckFramebufferStatus = (PFNGLCHECKFRAMEBUFFERSTATUSPROC)xwglGetProcAddress("glCheckFramebufferStatus");
glDeleteFramebuffers = (PFNGLDELETEFRAMEBUFFERSPROC)xwglGetProcAddress("glDeleteFramebuffers"); glDeleteFramebuffers = (PFNGLDELETEFRAMEBUFFERSPROC)xwglGetProcAddress("glDeleteFramebuffers");
wglSwapIntervalEXT = (PFNWGLSWAPINTERVALEXT)xwglGetProcAddress("wglSwapIntervalEXT"); wglSwapIntervalEXT = (PFNWGLSWAPINTERVALEXTPROC)xwglGetProcAddress("wglSwapIntervalEXT");
wglGetExtensionsStringARB = (PFNWGLGETEXTENSIONSSTRINGARBPROC)xwglGetProcAddress("wglGetExtensionsStringARB"); wglGetExtensionsStringARB = (PFNWGLGETEXTENSIONSSTRINGARBPROC)xwglGetProcAddress("wglGetExtensionsStringARB");
glTexBuffer = (PFNGLTEXBUFFERPROC)xwglGetProcAddress("glTexBuffer"); glTexBuffer = (PFNGLTEXBUFFERPROC)xwglGetProcAddress("glTexBuffer");