114 lines
8.2 KiB
D
114 lines
8.2 KiB
D
import dlibincludes;
|
|
|
|
// TODO: fix on js side
|
|
|
|
alias PFNGLXCREATECONTEXTATTRIBSARBPROC = extern(C) GLXContext function(Display*, GLXFBConfig, GLXContext, int, const int*);
|
|
|
|
PFNGLXCREATECONTEXTATTRIBSARBPROC glXCreateContextAttribsARB;
|
|
PFNGLDELETERENDERBUFFERSPROC glDeleteRenderbuffers;
|
|
PFNGLGENRENDERBUFFERSPROC glGenRenderbuffers;
|
|
PFNGLGENVERTEXARRAYSPROC glGenVertexArrays;
|
|
PFNGLDELETEVERTEXARRAYSPROC glDeleteVertexArrays;
|
|
PFNGLGENBUFFERSPROC glGenBuffers;
|
|
PFNGLCOMPILESHADERPROC glCompileShader;
|
|
PFNGLUSEPROGRAMPROC glUseProgram;
|
|
PFNGLVALIDATEPROGRAMPROC glValidateProgram;
|
|
PFNGLBINDBUFFERBASEPROC glBindBufferBase;
|
|
PFNGLGETUNIFORMBLOCKINDEXPROC glGetUniformBlockIndex;
|
|
PFNGLENABLEVERTEXATTRIBARRAYPROC glEnableVertexAttribArray;
|
|
PFNGLDISABLEVERTEXATTRIBARRAYPROC glDisableVertexAttribArray;
|
|
PFNGLBLENDFUNCSEPARATEPROC glBlendFuncSeparate;
|
|
PFNGLBINDVERTEXARRAYPROC glBindVertexArray;
|
|
PFNGLBINDBUFFERPROC glBindBuffer;
|
|
PFNGLBUFFERDATAPROC glBufferData;
|
|
PFNGLBUFFERSUBDATAPROC glBufferSubData;
|
|
PFNGLVERTEXATTRIBDIVISORPROC glVertexAttribDivisor;
|
|
PFNGLVERTEXATTRIBPOINTERPROC glVertexAttribPointer;
|
|
PFNGLDRAWARRAYSINSTANCEDPROC glDrawArraysInstanced;
|
|
PFNGLDRAWELEMENTSINSTANCEDPROC glDrawElementsInstanced;
|
|
PFNGLGETUNIFORMLOCATIONPROC glGetUniformLocation;
|
|
PFNGLUNIFORM1FPROC glUniform1f;
|
|
PFNGLUNIFORM2FPROC glUniform2f;
|
|
PFNGLUNIFORM3FPROC glUniform3f;
|
|
PFNGLUNIFORM4FPROC glUniform4f;
|
|
PFNGLUNIFORM1IPROC glUniform1i;
|
|
PFNGLUNIFORM2IPROC glUniform2i;
|
|
PFNGLUNIFORM3IPROC glUniform3i;
|
|
PFNGLUNIFORM4IPROC glUniform4i;
|
|
PFNGLCREATEPROGRAMPROC glCreateProgram;
|
|
PFNGLCREATESHADERPROC glCreateShader;
|
|
PFNGLDELETEFRAMEBUFFERSPROC glDeleteFramebuffers;
|
|
PFNGLDELETEPROGRAMPROC glDeleteProgram;
|
|
PFNGLDELETESHADERPROC glDeleteShader;
|
|
PFNGLSHADERSOURCEPROC glShaderSource;
|
|
PFNGLGETPROGRAMIVPROC glGetProgramiv;
|
|
PFNGLGETPROGRAMINFOLOGPROC glGetProgramInfoLog;
|
|
PFNGLGETSHADERIVPROC glGetShaderiv;
|
|
PFNGLGETSHADERINFOLOGPROC glGetShaderInfoLog;
|
|
PFNGLATTACHSHADERPROC glAttachShader;
|
|
PFNGLLINKPROGRAMPROC glLinkProgram;
|
|
|
|
static if(!__traits(compiles, { glActiveTexture(0x84C0); }))
|
|
{
|
|
PFNGLACTIVETEXTUREPROC glActiveTexture;
|
|
}
|
|
|
|
version(linux)
|
|
{
|
|
//alias RGFW_getProcAddress_OpenGL = RGFW_getProcAddress_OpenGL_X11;
|
|
}
|
|
|
|
bool
|
|
GLLoadFuncs()
|
|
{
|
|
glDeleteRenderbuffers = cast(typeof(glDeleteRenderbuffers))RGFW_getProcAddress_OpenGL(cast(const(char)*)"glDeleteRenderbuffers".ptr);
|
|
glGenRenderbuffers = cast(typeof(glGenRenderbuffers))RGFW_getProcAddress_OpenGL(cast(const(char)*)"glGenRenderbuffers".ptr);
|
|
glGenVertexArrays = cast(typeof(glGenVertexArrays))RGFW_getProcAddress_OpenGL(cast(const(char)*)"glGenVertexArrays".ptr);
|
|
glDeleteVertexArrays = cast(typeof(glDeleteVertexArrays))RGFW_getProcAddress_OpenGL(cast(const(char)*)"glDeleteVertexArrays".ptr);
|
|
glGenBuffers = cast(typeof(glGenBuffers))RGFW_getProcAddress_OpenGL(cast(const(char)*)"glGenBuffers".ptr);
|
|
glCompileShader = cast(typeof(glCompileShader))RGFW_getProcAddress_OpenGL(cast(const(char)*)"glCompileShader".ptr);
|
|
glUseProgram = cast(typeof(glUseProgram))RGFW_getProcAddress_OpenGL(cast(const(char)*)"glUseProgram".ptr);
|
|
glValidateProgram = cast(typeof(glValidateProgram))RGFW_getProcAddress_OpenGL(cast(const(char)*)"glValidateProgram".ptr);
|
|
glBindBufferBase = cast(typeof(glBindBufferBase))RGFW_getProcAddress_OpenGL(cast(const(char)*)"glBindBufferBase".ptr);
|
|
glGetUniformBlockIndex = cast(typeof(glGetUniformBlockIndex))RGFW_getProcAddress_OpenGL(cast(const(char)*)"glGetUniformBlockIndex".ptr);
|
|
glEnableVertexAttribArray = cast(typeof(glEnableVertexAttribArray))RGFW_getProcAddress_OpenGL(cast(const(char)*)"glEnableVertexAttribArray".ptr);
|
|
glDisableVertexAttribArray = cast(typeof(glDisableVertexAttribArray))RGFW_getProcAddress_OpenGL(cast(const(char)*)"glDisableVertexAttribArray".ptr);
|
|
glBlendFuncSeparate = cast(typeof(glBlendFuncSeparate))RGFW_getProcAddress_OpenGL(cast(const(char)*)"glBlendFuncSeparate".ptr);
|
|
glBindVertexArray = cast(typeof(glBindVertexArray))RGFW_getProcAddress_OpenGL(cast(const(char)*)"glBindVertexArray".ptr);
|
|
glBindBuffer = cast(typeof(glBindBuffer))RGFW_getProcAddress_OpenGL(cast(const(char)*)"glBindBuffer".ptr);
|
|
glBufferData = cast(typeof(glBufferData))RGFW_getProcAddress_OpenGL(cast(const(char)*)"glBufferData".ptr);
|
|
glBufferSubData = cast(typeof(glBufferSubData))RGFW_getProcAddress_OpenGL(cast(const(char)*)"glBufferSubData".ptr);
|
|
glVertexAttribDivisor = cast(typeof(glVertexAttribDivisor))RGFW_getProcAddress_OpenGL(cast(const(char)*)"glVertexAttribDivisor".ptr);
|
|
glVertexAttribPointer = cast(typeof(glVertexAttribPointer))RGFW_getProcAddress_OpenGL(cast(const(char)*)"glVertexAttribPointer".ptr);
|
|
glDrawArraysInstanced = cast(typeof(glDrawArraysInstanced))RGFW_getProcAddress_OpenGL(cast(const(char)*)"glDrawArraysInstanced".ptr);
|
|
glDrawElementsInstanced = cast(typeof(glDrawElementsInstanced))RGFW_getProcAddress_OpenGL(cast(const(char)*)"glDrawElementsInstanced".ptr);
|
|
glGetUniformLocation = cast(typeof(glGetUniformLocation))RGFW_getProcAddress_OpenGL(cast(const(char)*)"glGetUniformLocation".ptr);
|
|
glUniform1f = cast(typeof(glUniform1f))RGFW_getProcAddress_OpenGL(cast(const(char)*)"glUniform1f".ptr);
|
|
glUniform2f = cast(typeof(glUniform2f))RGFW_getProcAddress_OpenGL(cast(const(char)*)"glUniform2f".ptr);
|
|
glUniform3f = cast(typeof(glUniform3f))RGFW_getProcAddress_OpenGL(cast(const(char)*)"glUniform3f".ptr);
|
|
glUniform4f = cast(typeof(glUniform4f))RGFW_getProcAddress_OpenGL(cast(const(char)*)"glUniform4f".ptr);
|
|
glUniform1i = cast(typeof(glUniform1i))RGFW_getProcAddress_OpenGL(cast(const(char)*)"glUniform1i".ptr);
|
|
glUniform2i = cast(typeof(glUniform2i))RGFW_getProcAddress_OpenGL(cast(const(char)*)"glUniform2i".ptr);
|
|
glUniform3i = cast(typeof(glUniform3i))RGFW_getProcAddress_OpenGL(cast(const(char)*)"glUniform3i".ptr);
|
|
glUniform4i = cast(typeof(glUniform4i))RGFW_getProcAddress_OpenGL(cast(const(char)*)"glUniform4i".ptr);
|
|
glCreateProgram = cast(typeof(glCreateProgram))RGFW_getProcAddress_OpenGL(cast(const(char)*)"glCreateProgram".ptr);
|
|
glCreateShader = cast(typeof(glCreateShader))RGFW_getProcAddress_OpenGL(cast(const(char)*)"glCreateShader".ptr);
|
|
glDeleteFramebuffers = cast(typeof(glDeleteFramebuffers))RGFW_getProcAddress_OpenGL(cast(const(char)*)"glDeleteFramebuffers".ptr);
|
|
glDeleteProgram = cast(typeof(glDeleteProgram))RGFW_getProcAddress_OpenGL(cast(const(char)*)"glDeleteProgram".ptr);
|
|
glDeleteShader = cast(typeof(glDeleteShader))RGFW_getProcAddress_OpenGL(cast(const(char)*)"glDeleteShader".ptr);
|
|
glShaderSource = cast(typeof(glShaderSource))RGFW_getProcAddress_OpenGL(cast(const(char)*)"glShaderSource".ptr);
|
|
glGetProgramiv = cast(typeof(glGetProgramiv))RGFW_getProcAddress_OpenGL(cast(const(char)*)"glGetProgramiv".ptr);
|
|
glGetProgramInfoLog = cast(typeof(glGetProgramInfoLog))RGFW_getProcAddress_OpenGL(cast(const(char)*)"glGetProgramInfoLog".ptr);
|
|
glGetShaderiv = cast(typeof(glGetShaderiv))RGFW_getProcAddress_OpenGL(cast(const(char)*)"glGetShaderiv".ptr);
|
|
glGetShaderInfoLog = cast(typeof(glGetShaderInfoLog))RGFW_getProcAddress_OpenGL(cast(const(char)*)"glGetShaderInfoLog".ptr);
|
|
glAttachShader = cast(typeof(glAttachShader))RGFW_getProcAddress_OpenGL(cast(const(char)*)"glAttachShader".ptr);
|
|
glLinkProgram = cast(typeof(glLinkProgram))RGFW_getProcAddress_OpenGL(cast(const(char)*)"glLinkProgram".ptr);
|
|
|
|
static if(!__traits(compiles, { glActiveTexture(0x84C0); }))
|
|
{
|
|
glActiveTexture = cast(typeof(glActiveTexture))RGFW_getProcAddress_OpenGL(cast(const(char)*)"glActiveTexture".ptr);
|
|
}
|
|
|
|
return glDeleteRenderbuffers != null;
|
|
}
|