#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); extern PFNWGLCREATECONTEXT xwglCreateContext; extern PFNWGLDELETECONTEXT xwglDeleteContext; extern PFNWGLGETPROCADDRESS xwglGetProcAddress; extern PFNWGLMAKECURRENT xwglMakeCurrent; 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); extern PFNGLBEGIN glBegin; extern PFNGLEND glEnd; extern PFNGLTEXCOORD2F glTexCoord2f; extern PFNGLVERTEX2F glVertex2f; // <--- compat profile only BOOL OpenGL_LoadDll(); void OpenGL_Init(); 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 PFNGLCREATEPROGRAMPROC glCreateProgram; extern PFNGLDELETEPROGRAMPROC glDeleteProgram; extern PFNGLUSEPROGRAMPROC glUseProgram; extern PFNGLATTACHSHADERPROC glAttachShader; extern PFNGLDETACHSHADERPROC glDetachShader; extern PFNGLLINKPROGRAMPROC glLinkProgram; extern PFNGLGETPROGRAMIVPROC glGetProgramiv; extern PFNGLGETSHADERINFOLOGPROC glGetShaderInfoLog; extern PFNGLGETUNIFORMLOCATIONPROC glGetUniformLocation; extern PFNGLUNIFORM1IPROC glUniform1i; extern PFNGLUNIFORM1IVPROC glUniform1iv; extern PFNGLUNIFORM2IVPROC glUniform2iv; extern PFNGLUNIFORM3IVPROC glUniform3iv; extern PFNGLUNIFORM4IVPROC glUniform4iv; extern PFNGLUNIFORM1FPROC glUniform1f; extern PFNGLUNIFORM1FVPROC glUniform1fv; extern PFNGLUNIFORM2FVPROC glUniform2fv; extern PFNGLUNIFORM3FVPROC glUniform3fv; extern PFNGLUNIFORM4FVPROC glUniform4fv; extern PFNGLUNIFORM4FPROC glUniform4f; extern PFNGLUNIFORMMATRIX4FVPROC glUniformMatrix4fv; extern PFNGLGETATTRIBLOCATIONPROC glGetAttribLocation; extern PFNGLVERTEXATTRIB1FPROC glVertexAttrib1f; extern PFNGLVERTEXATTRIB1FVPROC glVertexAttrib1fv; extern PFNGLVERTEXATTRIB2FVPROC glVertexAttrib2fv; extern PFNGLVERTEXATTRIB3FVPROC glVertexAttrib3fv; extern PFNGLVERTEXATTRIB4FVPROC glVertexAttrib4fv; extern PFNGLENABLEVERTEXATTRIBARRAYPROC glEnableVertexAttribArray; extern PFNGLDISABLEVERTEXATTRIBARRAYPROC glDisableVertexAttribArray; extern PFNGLBINDATTRIBLOCATIONPROC glBindAttribLocation; extern PFNGLGETACTIVEUNIFORMPROC glGetActiveUniform; extern PFNGLCREATESHADERPROC glCreateShader; extern PFNGLDELETESHADERPROC glDeleteShader; extern PFNGLSHADERSOURCEPROC glShaderSource; extern PFNGLCOMPILESHADERPROC glCompileShader; extern PFNGLGETSHADERIVPROC glGetShaderiv; extern PFNGLGENBUFFERSPROC glGenBuffers; extern PFNGLBINDBUFFERPROC glBindBuffer; extern PFNGLBUFFERDATAPROC glBufferData; extern PFNGLMAPBUFFERPROC glMapBuffer; extern PFNGLUNMAPBUFFERPROC glUnmapBuffer; extern PFNGLBUFFERSUBDATAPROC glBufferSubData; extern PFNGLVERTEXATTRIBPOINTERPROC glVertexAttribPointer; extern PFNGLDELETEBUFFERSPROC glDeleteBuffers; extern PFNGLGENVERTEXARRAYSPROC glGenVertexArrays; extern PFNGLBINDVERTEXARRAYPROC glBindVertexArray; extern PFNGLDELETEVERTEXARRAYSPROC glDeleteVertexArrays; extern PFNGLACTIVETEXTUREPROC glActiveTexture; extern PFNGLGENFRAMEBUFFERSPROC glGenFramebuffers; extern PFNGLBINDFRAMEBUFFERPROC glBindFramebuffer; extern PFNGLFRAMEBUFFERTEXTURE2DPROC glFramebufferTexture2D; extern PFNGLDRAWBUFFERSPROC glDrawBuffers; extern PFNGLCHECKFRAMEBUFFERSTATUSPROC glCheckFramebufferStatus; extern PFNGLDELETEFRAMEBUFFERSPROC glDeleteFramebuffers; extern PFNWGLSWAPINTERVALEXT wglSwapIntervalEXT; extern PFNWGLGETEXTENSIONSSTRINGARBPROC wglGetExtensionsStringARB; extern PFNGLTEXBUFFERPROC glTexBuffer; extern HMODULE OpenGL_hModule; extern BOOL OpenGL_GotVersion2; extern BOOL OpenGL_GotVersion3; extern char OpenGL_Version[];