Files
mcpe/compat/GLExt.cpp
iProgramInCpp 9642818a88 * Initial commit.
:)
2023-07-30 22:22:02 +03:00

70 lines
1.8 KiB
C++

#include "GL.hpp"
HWND GetHWND();
extern LPCTSTR g_GameTitle;
// this sucks... F* you Microsoft for making me do this hacky ass bullsh*t.
PFNGLBINDBUFFERPROC p_glBindBuffer;
PFNGLBUFFERDATAPROC p_glBufferData;
PFNGLGENBUFFERSPROC p_glGenBuffers;
PFNGLDELETEBUFFERSPROC p_glDeleteBuffers;
// this is stupidly hacky
typedef BOOL(WINAPI* PFNWGLSWAPINTERVALEXTPROC) (int interval);
PFNWGLSWAPINTERVALEXTPROC p_wglSwapIntervalEXT;
bool xglInitted()
{
return p_glBindBuffer && p_glBufferData && p_glGenBuffers && p_glDeleteBuffers;
}
void xglInit()
{
p_glBindBuffer = (PFNGLBINDBUFFERPROC)wglGetProcAddress("glBindBuffer");
p_glBufferData = (PFNGLBUFFERDATAPROC)wglGetProcAddress("glBufferData");
p_glGenBuffers = (PFNGLGENBUFFERSPROC)wglGetProcAddress("glGenBuffers");
p_glDeleteBuffers = (PFNGLDELETEBUFFERSPROC)wglGetProcAddress("glDeleteBuffers");
p_wglSwapIntervalEXT = (PFNWGLSWAPINTERVALEXTPROC)wglGetProcAddress("wglSwapIntervalEXT");
if (!xglInitted())
{
MessageBox(GetHWND(), TEXT("Error initializing GL extensions. Update your graphics drivers!"), g_GameTitle, MB_OK);
}
}
void xglBindBuffer(GLenum target, GLuint buffer)
{
p_glBindBuffer(target, buffer);
}
void xglBufferData(GLenum target, GLsizeiptr size, const GLvoid* data, GLenum usage)
{
p_glBufferData(target, size, data, usage);
}
void xglGenBuffers(GLsizei num, GLuint* buffers)
{
p_glGenBuffers(num, buffers);
}
void xglDeleteBuffers(GLsizei num, GLuint* buffers)
{
p_glDeleteBuffers(num, buffers);
}
void xglOrthof(GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat nearpl, GLfloat farpl)
{
return glOrtho(GLdouble(left), GLdouble(right), GLdouble(bottom), GLfloat(top), GLdouble(nearpl), GLdouble(farpl));
}
void xglSwapIntervalEXT(int interval)
{
if (!p_wglSwapIntervalEXT)
return;
p_wglSwapIntervalEXT(interval);
}