--lualoader, R"EOF(-- --OpenGL binding, taken and modified from https://github.com/malkia/luajit-opencl ffi.cdef[[ void glActiveTextureARB (GLenum); void glClientActiveTextureARB (GLenum); void glMultiTexCoord1dARB (GLenum, GLdouble); void glMultiTexCoord1dvARB (GLenum, const GLdouble *); void glMultiTexCoord1fARB (GLenum, GLfloat); void glMultiTexCoord1fvARB (GLenum, const GLfloat *); void glMultiTexCoord1iARB (GLenum, GLint); void glMultiTexCoord1ivARB (GLenum, const GLint *); void glMultiTexCoord1sARB (GLenum, GLshort); void glMultiTexCoord1svARB (GLenum, const GLshort *); void glMultiTexCoord2dARB (GLenum, GLdouble, GLdouble); void glMultiTexCoord2dvARB (GLenum, const GLdouble *); void glMultiTexCoord2fARB (GLenum, GLfloat, GLfloat); void glMultiTexCoord2fvARB (GLenum, const GLfloat *); void glMultiTexCoord2iARB (GLenum, GLint, GLint); void glMultiTexCoord2ivARB (GLenum, const GLint *); void glMultiTexCoord2sARB (GLenum, GLshort, GLshort); void glMultiTexCoord2svARB (GLenum, const GLshort *); void glMultiTexCoord3dARB (GLenum, GLdouble, GLdouble, GLdouble); void glMultiTexCoord3dvARB (GLenum, const GLdouble *); void glMultiTexCoord3fARB (GLenum, GLfloat, GLfloat, GLfloat); void glMultiTexCoord3fvARB (GLenum, const GLfloat *); void glMultiTexCoord3iARB (GLenum, GLint, GLint, GLint); void glMultiTexCoord3ivARB (GLenum, const GLint *); void glMultiTexCoord3sARB (GLenum, GLshort, GLshort, GLshort); void glMultiTexCoord3svARB (GLenum, const GLshort *); void glMultiTexCoord4dARB (GLenum, GLdouble, GLdouble, GLdouble, GLdouble); void glMultiTexCoord4dvARB (GLenum, const GLdouble *); void glMultiTexCoord4fARB (GLenum, GLfloat, GLfloat, GLfloat, GLfloat); void glMultiTexCoord4fvARB (GLenum, const GLfloat *); void glMultiTexCoord4iARB (GLenum, GLint, GLint, GLint, GLint); void glMultiTexCoord4ivARB (GLenum, const GLint *); void glMultiTexCoord4sARB (GLenum, GLshort, GLshort, GLshort, GLshort); void glMultiTexCoord4svARB (GLenum, const GLshort *); void glLoadTransposeMatrixfARB (const GLfloat *); void glLoadTransposeMatrixdARB (const GLdouble *); void glMultTransposeMatrixfARB (const GLfloat *); void glMultTransposeMatrixdARB (const GLdouble *); void glSampleCoverageARB (GLclampf, GLboolean); void glSamplePassARB (GLenum); void glCompressedTexImage3DARB (GLenum, GLint, GLenum, GLsizei, GLsizei, GLsizei, GLint, GLsizei, const GLvoid *); void glCompressedTexImage2DARB (GLenum, GLint, GLenum, GLsizei, GLsizei, GLint, GLsizei, const GLvoid *); void glCompressedTexImage1DARB (GLenum, GLint, GLenum, GLsizei, GLint, GLsizei, const GLvoid *); void glCompressedTexSubImage3DARB (GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLsizei, const GLvoid *); void glCompressedTexSubImage2DARB (GLenum, GLint, GLint, GLint, GLsizei, GLsizei, GLenum, GLsizei, const GLvoid *); void glCompressedTexSubImage1DARB (GLenum, GLint, GLint, GLsizei, GLenum, GLsizei, const GLvoid *); void glGetCompressedTexImageARB (GLenum, GLint, GLvoid *); void glWeightbvARB(GLint, const GLbyte *); void glWeightsvARB(GLint, const GLshort *); void glWeightivARB(GLint, const GLint *); void glWeightfvARB(GLint, const GLfloat *); void glWeightdvARB(GLint, const GLdouble *); void glWeightubvARB(GLint, const GLubyte *); void glWeightusvARB(GLint, const GLushort *); void glWeightuivARB(GLint, const GLuint *); void glWeightPointerARB(GLint, GLenum, GLsizei, const GLvoid *); void glVertexBlendARB(GLint); void glWindowPos2dARB (GLdouble, GLdouble); void glWindowPos2dvARB (const GLdouble *); void glWindowPos2fARB (GLfloat, GLfloat); void glWindowPos2fvARB (const GLfloat *); void glWindowPos2iARB (GLint, GLint); void glWindowPos2ivARB (const GLint *); void glWindowPos2sARB (GLshort, GLshort); void glWindowPos2svARB (const GLshort *); void glWindowPos3dARB (GLdouble, GLdouble, GLdouble); void glWindowPos3dvARB (const GLdouble *); void glWindowPos3fARB (GLfloat, GLfloat, GLfloat); void glWindowPos3fvARB (const GLfloat *); void glWindowPos3iARB (GLint, GLint, GLint); void glWindowPos3ivARB (const GLint *); void glWindowPos3sARB (GLshort, GLshort, GLshort); void glWindowPos3svARB (const GLshort *); void glGenQueriesARB(GLsizei n, GLuint *ids); void glDeleteQueriesARB(GLsizei n, const GLuint *ids); GLboolean glIsQueryARB(GLuint id); void glBeginQueryARB(GLenum target, GLuint id); void glEndQueryARB(GLenum target); void glGetQueryivARB(GLenum target, GLenum pname, GLint *params); void glGetQueryObjectivARB(GLuint id, GLenum pname, GLint *params); void glGetQueryObjectuivARB(GLuint id, GLenum pname, GLuint *params); void glPointParameterfARB(GLenum pname, GLfloat param); void glPointParameterfvARB(GLenum pname, const GLfloat *params); void glBindProgramARB(GLenum target, GLuint program); void glDeleteProgramsARB(GLsizei n, const GLuint *programs); void glGenProgramsARB(GLsizei n, GLuint *programs); GLboolean glIsProgramARB(GLuint program); void glProgramEnvParameter4dARB(GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); void glProgramEnvParameter4dvARB(GLenum target, GLuint index, const GLdouble *params); void glProgramEnvParameter4fARB(GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); void glProgramEnvParameter4fvARB(GLenum target, GLuint index, const GLfloat *params); void glProgramLocalParameter4dARB(GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); void glProgramLocalParameter4dvARB(GLenum target, GLuint index, const GLdouble *params); void glProgramLocalParameter4fARB(GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); void glProgramLocalParameter4fvARB(GLenum target, GLuint index, const GLfloat *params); void glGetProgramEnvParameterdvARB(GLenum target, GLuint index, GLdouble *params); void glGetProgramEnvParameterfvARB(GLenum target, GLuint index, GLfloat *params); void glProgramEnvParameters4fvEXT(GLenum target, GLuint index, GLsizei count, const GLfloat *params); void glProgramLocalParameters4fvEXT(GLenum target, GLuint index, GLsizei count, const GLfloat *params); void glGetProgramLocalParameterdvARB(GLenum target, GLuint index, GLdouble *params); void glGetProgramLocalParameterfvARB(GLenum target, GLuint index, GLfloat *params); void glProgramStringARB(GLenum target, GLenum format, GLsizei len, const GLvoid *string); void glGetProgramStringARB(GLenum target, GLenum pname, GLvoid *string); void glGetProgramivARB(GLenum target, GLenum pname, GLint *params); void glVertexAttrib1dARB(GLuint index, GLdouble x); void glVertexAttrib1dvARB(GLuint index, const GLdouble *v); void glVertexAttrib1fARB(GLuint index, GLfloat x); void glVertexAttrib1fvARB(GLuint index, const GLfloat *v); void glVertexAttrib1sARB(GLuint index, GLshort x); void glVertexAttrib1svARB(GLuint index, const GLshort *v); void glVertexAttrib2dARB(GLuint index, GLdouble x, GLdouble y); void glVertexAttrib2dvARB(GLuint index, const GLdouble *v); void glVertexAttrib2fARB(GLuint index, GLfloat x, GLfloat y); void glVertexAttrib2fvARB(GLuint index, const GLfloat *v); void glVertexAttrib2sARB(GLuint index, GLshort x, GLshort y); void glVertexAttrib2svARB(GLuint index, const GLshort *v); void glVertexAttrib3dARB(GLuint index, GLdouble x, GLdouble y, GLdouble z); void glVertexAttrib3dvARB(GLuint index, const GLdouble *v); void glVertexAttrib3fARB(GLuint index, GLfloat x, GLfloat y, GLfloat z); void glVertexAttrib3fvARB(GLuint index, const GLfloat *v); void glVertexAttrib3sARB(GLuint index, GLshort x, GLshort y, GLshort z); void glVertexAttrib3svARB(GLuint index, const GLshort *v); void glVertexAttrib4NbvARB(GLuint index, const GLbyte *v); void glVertexAttrib4NivARB(GLuint index, const GLint *v); void glVertexAttrib4NsvARB(GLuint index, const GLshort *v); void glVertexAttrib4NubARB(GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w); void glVertexAttrib4NubvARB(GLuint index, const GLubyte *v); void glVertexAttrib4NuivARB(GLuint index, const GLuint *v); void glVertexAttrib4NusvARB(GLuint index, const GLushort *v); void glVertexAttrib4bvARB(GLuint index, const GLbyte *v); void glVertexAttrib4dARB(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); void glVertexAttrib4dvARB(GLuint index, const GLdouble *v); void glVertexAttrib4fARB(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); void glVertexAttrib4fvARB(GLuint index, const GLfloat *v); void glVertexAttrib4ivARB(GLuint index, const GLint *v); void glVertexAttrib4sARB(GLuint index, GLshort x, GLshort y, GLshort z, GLshort w); void glVertexAttrib4svARB(GLuint index, const GLshort *v); void glVertexAttrib4ubvARB(GLuint index, const GLubyte *v); void glVertexAttrib4uivARB(GLuint index, const GLuint *v); void glVertexAttrib4usvARB(GLuint index, const GLushort *v); void glVertexAttribPointerARB(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid *pointer); void glDisableVertexAttribArrayARB(GLuint index); void glEnableVertexAttribArrayARB(GLuint index); void glGetVertexAttribPointervARB(GLuint index, GLenum pname, GLvoid **pointer); void glGetVertexAttribdvARB(GLuint index, GLenum pname, GLdouble *params); void glGetVertexAttribfvARB(GLuint index, GLenum pname, GLfloat *params); void glGetVertexAttribivARB(GLuint index, GLenum pname, GLint *params); void glDeleteObjectARB(GLhandleARB obj); GLhandleARB glGetHandleARB(GLenum pname); void glDetachObjectARB(GLhandleARB containerObj, GLhandleARB attachedObj); GLhandleARB glCreateShaderObjectARB(GLenum shaderType); void glShaderSourceARB(GLhandleARB shaderObj, GLsizei count, const GLcharARB **string, const GLint *length); void glCompileShaderARB(GLhandleARB shaderObj); GLhandleARB glCreateProgramObjectARB(void); void glAttachObjectARB(GLhandleARB containerObj, GLhandleARB obj); void glLinkProgramARB(GLhandleARB programObj); void glUseProgramObjectARB(GLhandleARB programObj); void glValidateProgramARB(GLhandleARB programObj); void glUniform1fARB(GLint location, GLfloat v0); void glUniform2fARB(GLint location, GLfloat v0, GLfloat v1); void glUniform3fARB(GLint location, GLfloat v0, GLfloat v1, GLfloat v2); void glUniform4fARB(GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); void glUniform1iARB(GLint location, GLint v0); void glUniform2iARB(GLint location, GLint v0, GLint v1); void glUniform3iARB(GLint location, GLint v0, GLint v1, GLint v2); void glUniform4iARB(GLint location, GLint v0, GLint v1, GLint v2, GLint v3); void glUniform1fvARB(GLint location, GLsizei count, const GLfloat *value); void glUniform2fvARB(GLint location, GLsizei count, const GLfloat *value); void glUniform3fvARB(GLint location, GLsizei count, const GLfloat *value); void glUniform4fvARB(GLint location, GLsizei count, const GLfloat *value); void glUniform1ivARB(GLint location, GLsizei count, const GLint *value); void glUniform2ivARB(GLint location, GLsizei count, const GLint *value); void glUniform3ivARB(GLint location, GLsizei count, const GLint *value); void glUniform4ivARB(GLint location, GLsizei count, const GLint *value); void glUniformMatrix2fvARB(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); void glUniformMatrix3fvARB(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); void glUniformMatrix4fvARB(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); void glGetObjectParameterfvARB(GLhandleARB obj, GLenum pname, GLfloat *params); void glGetObjectParameterivARB(GLhandleARB obj, GLenum pname, GLint *params); void glGetInfoLogARB(GLhandleARB obj, GLsizei maxLength, GLsizei *length, GLcharARB *infoLog); void glGetAttachedObjectsARB(GLhandleARB containerObj, GLsizei maxCount, GLsizei *count, GLhandleARB *obj); GLint glGetUniformLocationARB(GLhandleARB programObj, const GLcharARB *name); void glGetActiveUniformARB(GLhandleARB programObj, GLuint index, GLsizei maxLength, GLsizei *length, GLint *size, GLenum *type, GLcharARB *name); void glGetUniformfvARB(GLhandleARB programObj, GLint location, GLfloat *params); void glGetUniformivARB(GLhandleARB programObj, GLint location, GLint *params); void glGetShaderSourceARB(GLhandleARB obj, GLsizei maxLength, GLsizei *length, GLcharARB *source); void glBindAttribLocationARB(GLhandleARB programObj, GLuint index, const GLcharARB *name); void glGetActiveAttribARB(GLhandleARB programObj, GLuint index, GLsizei maxLength, GLsizei *length, GLint *size, GLenum *type, GLcharARB *name); GLint glGetAttribLocationARB(GLhandleARB programObj, const GLcharARB *name); void glBindBufferARB(GLenum target, GLuint buffer); void glDeleteBuffersARB(GLsizei n, const GLuint *buffers); void glGenBuffersARB(GLsizei n, GLuint *buffers); GLboolean glIsBufferARB(GLuint buffer); void glBufferDataARB(GLenum target, GLsizeiptrARB size, const GLvoid *data, GLenum usage); void glBufferSubDataARB(GLenum target, GLintptrARB offset, GLsizeiptrARB size, const GLvoid *data); void glGetBufferSubDataARB(GLenum target, GLintptrARB offset, GLsizeiptrARB size, GLvoid *data); GLvoid *glMapBufferARB(GLenum target, GLenum access); GLboolean glUnmapBufferARB(GLenum target); void glGetBufferParameterivARB(GLenum target, GLenum pname, GLint *params); void glGetBufferPointervARB(GLenum target, GLenum pname, GLvoid **params); void glDrawBuffersARB(GLsizei n, const GLenum *bufs); void glClampColorARB(GLenum target, GLenum clamp); void glDrawArraysInstancedARB(GLenum mode, GLint first, GLsizei count, GLsizei primcount); void glDrawElementsInstancedARB(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei primcount); void glVertexAttribDivisorARB(GLuint index, GLuint divisor); void glGetUniformIndices(GLuint program, GLsizei uniformCount, const GLchar** uniformNames, GLuint* uniformIndices); void glGetActiveUniformsiv(GLuint program, GLsizei uniformCount, const GLuint* uniformIndices, GLenum pname, GLint* params); void glGetActiveUniformName(GLuint program, GLuint uniformIndex, GLsizei bufSize, GLsizei* length, GLchar* uniformName); GLuint glGetUniformBlockIndex(GLuint program, const GLchar* uniformBlockName); void glGetActiveUniformBlockiv(GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint* params); void glGetActiveUniformBlockName(GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei* length, GLchar* uniformBlockName); void glBindBufferRange(GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size); void glBindBufferBase(GLenum target, GLuint index, GLuint buffer); void glGetIntegeri_v(GLenum pname, GLuint index, GLint* data); void glUniformBlockBinding(GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding); void glBlendColorEXT (GLclampf, GLclampf, GLclampf, GLclampf); void glBlendEquationEXT (GLenum); void glLockArraysEXT (GLint, GLsizei); void glUnlockArraysEXT (void); void glDrawRangeElementsEXT (GLenum, GLuint, GLuint, GLsizei, GLenum, const GLvoid *); void glSecondaryColor3bEXT (GLbyte, GLbyte, GLbyte); void glSecondaryColor3bvEXT (const GLbyte *); void glSecondaryColor3dEXT (GLdouble, GLdouble, GLdouble); void glSecondaryColor3dvEXT (const GLdouble *); void glSecondaryColor3fEXT (GLfloat, GLfloat, GLfloat); void glSecondaryColor3fvEXT (const GLfloat *); void glSecondaryColor3iEXT (GLint, GLint, GLint); void glSecondaryColor3ivEXT (const GLint *); void glSecondaryColor3sEXT (GLshort, GLshort, GLshort); void glSecondaryColor3svEXT (const GLshort *); void glSecondaryColor3ubEXT (GLubyte, GLubyte, GLubyte); void glSecondaryColor3ubvEXT (const GLubyte *); void glSecondaryColor3uiEXT (GLuint, GLuint, GLuint); void glSecondaryColor3uivEXT (const GLuint *); void glSecondaryColor3usEXT (GLushort, GLushort, GLushort); void glSecondaryColor3usvEXT (const GLushort *); void glSecondaryColorPointerEXT (GLint, GLenum, GLsizei, const GLvoid *); void glMultiDrawArraysEXT (GLenum, const GLint *, const GLsizei *, GLsizei); void glMultiDrawElementsEXT (GLenum, const GLsizei *, GLenum, const GLvoid* *, GLsizei); void glFogCoordfEXT (GLfloat); void glFogCoordfvEXT (const GLfloat *); void glFogCoorddEXT (GLdouble); void glFogCoorddvEXT (const GLdouble *); void glFogCoordPointerEXT (GLenum, GLsizei, const GLvoid *); ]] -- )EOF"