--lualoader, R"EOF(-- --OpenGL binding, taken and modified from https://github.com/malkia/luajit-opencl ffi.cdef[[ void glSampleCoverage (GLclampf value, GLboolean invert); void glSamplePass (GLenum pass); void glLoadTransposeMatrixf (const GLfloat *m); void glLoadTransposeMatrixd (const GLdouble *m); void glMultTransposeMatrixf (const GLfloat *m); void glMultTransposeMatrixd (const GLdouble *m); void glCompressedTexImage3D (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *data); void glCompressedTexImage2D (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data); void glCompressedTexImage1D (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid *data); void glCompressedTexSubImage3D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid *data); void glCompressedTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data); void glCompressedTexSubImage1D (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *data); void glGetCompressedTexImage (GLenum target, GLint lod, GLvoid *img); void glActiveTexture (GLenum texture); void glClientActiveTexture (GLenum texture); void glMultiTexCoord1d (GLenum target, GLdouble s); void glMultiTexCoord1dv (GLenum target, const GLdouble *v); void glMultiTexCoord1f (GLenum target, GLfloat s); void glMultiTexCoord1fv (GLenum target, const GLfloat *v); void glMultiTexCoord1i (GLenum target, GLint s); void glMultiTexCoord1iv (GLenum target, const GLint *v); void glMultiTexCoord1s (GLenum target, GLshort s); void glMultiTexCoord1sv (GLenum target, const GLshort *v); void glMultiTexCoord2d (GLenum target, GLdouble s, GLdouble t); void glMultiTexCoord2dv (GLenum target, const GLdouble *v); void glMultiTexCoord2f (GLenum target, GLfloat s, GLfloat t); void glMultiTexCoord2fv (GLenum target, const GLfloat *v); void glMultiTexCoord2i (GLenum target, GLint s, GLint t); void glMultiTexCoord2iv (GLenum target, const GLint *v); void glMultiTexCoord2s (GLenum target, GLshort s, GLshort t); void glMultiTexCoord2sv (GLenum target, const GLshort *v); void glMultiTexCoord3d (GLenum target, GLdouble s, GLdouble t, GLdouble r); void glMultiTexCoord3dv (GLenum target, const GLdouble *v); void glMultiTexCoord3f (GLenum target, GLfloat s, GLfloat t, GLfloat r); void glMultiTexCoord3fv (GLenum target, const GLfloat *v); void glMultiTexCoord3i (GLenum target, GLint s, GLint t, GLint r); void glMultiTexCoord3iv (GLenum target, const GLint *v); void glMultiTexCoord3s (GLenum target, GLshort s, GLshort t, GLshort r); void glMultiTexCoord3sv (GLenum target, const GLshort *v); void glMultiTexCoord4d (GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q); void glMultiTexCoord4dv (GLenum target, const GLdouble *v); void glMultiTexCoord4f (GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q); void glMultiTexCoord4fv (GLenum target, const GLfloat *v); void glMultiTexCoord4i (GLenum target, GLint, GLint s, GLint t, GLint r); void glMultiTexCoord4iv (GLenum target, const GLint *v); void glMultiTexCoord4s (GLenum target, GLshort s, GLshort t, GLshort r, GLshort q); void glMultiTexCoord4sv (GLenum target, const GLshort *v); void glFogCoordf (GLfloat coord); void glFogCoordfv (const GLfloat *coord); void glFogCoordd (GLdouble coord); void glFogCoorddv (const GLdouble * coord); void glFogCoordPointer (GLenum type, GLsizei stride, const GLvoid *pointer); void glSecondaryColor3b (GLbyte red, GLbyte green, GLbyte blue); void glSecondaryColor3bv (const GLbyte *v); void glSecondaryColor3d (GLdouble red, GLdouble green, GLdouble blue); void glSecondaryColor3dv (const GLdouble *v); void glSecondaryColor3f (GLfloat red, GLfloat green, GLfloat blue); void glSecondaryColor3fv (const GLfloat *v); void glSecondaryColor3i (GLint red, GLint green, GLint blue); void glSecondaryColor3iv (const GLint *v); void glSecondaryColor3s (GLshort red, GLshort green, GLshort blue); void glSecondaryColor3sv (const GLshort *v); void glSecondaryColor3ub (GLubyte red, GLubyte green, GLubyte blue); void glSecondaryColor3ubv (const GLubyte *v); void glSecondaryColor3ui (GLuint red, GLuint green, GLuint blue); void glSecondaryColor3uiv (const GLuint *v); void glSecondaryColor3us (GLushort red, GLushort green, GLushort blue); void glSecondaryColor3usv (const GLushort *v); void glSecondaryColorPointer (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); void glPointParameterf (GLenum pname, GLfloat param); void glPointParameterfv (GLenum pname, const GLfloat *params); void glPointParameteri (GLenum pname, GLint param); void glPointParameteriv (GLenum pname, const GLint *params); void glBlendFuncSeparate (GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha); void glMultiDrawArrays (GLenum mode, const GLint *first, const GLsizei *count, GLsizei primcount); void glMultiDrawElements (GLenum mode, const GLsizei *count, GLenum type, const GLvoid* *indices, GLsizei primcount); void glWindowPos2d (GLdouble x, GLdouble y); void glWindowPos2dv (const GLdouble *v); void glWindowPos2f (GLfloat x, GLfloat y); void glWindowPos2fv (const GLfloat *v); void glWindowPos2i (GLint x, GLint y); void glWindowPos2iv (const GLint *v); void glWindowPos2s (GLshort x, GLshort y); void glWindowPos2sv (const GLshort *v); void glWindowPos3d (GLdouble x, GLdouble y, GLdouble z); void glWindowPos3dv (const GLdouble *v); void glWindowPos3f (GLfloat x, GLfloat y, GLfloat z); void glWindowPos3fv (const GLfloat *v); void glWindowPos3i (GLint x, GLint y, GLint z); void glWindowPos3iv (const GLint *v); void glWindowPos3s (GLshort x, GLshort y, GLshort z); void glWindowPos3sv (const GLshort *v); void glGenQueries(GLsizei n, GLuint *ids); void glDeleteQueries(GLsizei n, const GLuint *ids); GLboolean glIsQuery(GLuint id); void glBeginQuery(GLenum target, GLuint id); void glEndQuery(GLenum target); void glGetQueryiv(GLenum target, GLenum pname, GLint *params); void glGetQueryObjectiv(GLuint id, GLenum pname, GLint *params); void glGetQueryObjectuiv(GLuint id, GLenum pname, GLuint *params); void glBindBuffer (GLenum target, GLuint buffer); void glDeleteBuffers (GLsizei n, const GLuint *buffers); void glGenBuffers (GLsizei n, GLuint *buffers); GLboolean glIsBuffer (GLuint buffer); void glBufferData (GLenum target, GLsizeiptr size, const GLvoid *data, GLenum usage); void glBufferSubData (GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid *data); void glGetBufferSubData (GLenum target, GLintptr offset, GLsizeiptr size, GLvoid *data); GLvoid * glMapBuffer (GLenum target, GLenum access); GLboolean glUnmapBuffer (GLenum target); void glGetBufferParameteriv (GLenum target, GLenum pname, GLint *params); void glGetBufferPointerv (GLenum target, GLenum pname, GLvoid **params); void glDrawBuffers (GLsizei n, const GLenum *bufs); void glVertexAttrib1d (GLuint index, GLdouble x); void glVertexAttrib1dv (GLuint index, const GLdouble *v); void glVertexAttrib1f (GLuint index, GLfloat x); void glVertexAttrib1fv (GLuint index, const GLfloat *v); void glVertexAttrib1s (GLuint index, GLshort x); void glVertexAttrib1sv (GLuint index, const GLshort *v); void glVertexAttrib2d (GLuint index, GLdouble x, GLdouble y); void glVertexAttrib2dv (GLuint index, const GLdouble *v); void glVertexAttrib2f (GLuint index, GLfloat x, GLfloat y); void glVertexAttrib2fv (GLuint index, const GLfloat *v); void glVertexAttrib2s (GLuint index, GLshort x, GLshort y); void glVertexAttrib2sv (GLuint index, const GLshort *v); void glVertexAttrib3d (GLuint index, GLdouble x, GLdouble y, GLdouble z); void glVertexAttrib3dv (GLuint index, const GLdouble *v); void glVertexAttrib3f (GLuint index, GLfloat x, GLfloat y, GLfloat z); void glVertexAttrib3fv (GLuint index, const GLfloat *v); void glVertexAttrib3s (GLuint index, GLshort x, GLshort y, GLshort z); void glVertexAttrib3sv (GLuint index, const GLshort *v); void glVertexAttrib4Nbv (GLuint index, const GLbyte *v); void glVertexAttrib4Niv (GLuint index, const GLint *v); void glVertexAttrib4Nsv (GLuint index, const GLshort *v); void glVertexAttrib4Nub (GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w); void glVertexAttrib4Nubv (GLuint index, const GLubyte *v); void glVertexAttrib4Nuiv (GLuint index, const GLuint *v); void glVertexAttrib4Nusv (GLuint index, const GLushort *v); void glVertexAttrib4bv (GLuint index, const GLbyte *v); void glVertexAttrib4d (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); void glVertexAttrib4dv (GLuint index, const GLdouble *v); void glVertexAttrib4f (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); void glVertexAttrib4fv (GLuint index, const GLfloat *v); void glVertexAttrib4iv (GLuint index, const GLint *v); void glVertexAttrib4s (GLuint index, GLshort x, GLshort y, GLshort z, GLshort w); void glVertexAttrib4sv (GLuint index, const GLshort *v); void glVertexAttrib4ubv (GLuint index, const GLubyte *v); void glVertexAttrib4uiv (GLuint index, const GLuint *v); void glVertexAttrib4usv (GLuint index, const GLushort *v); void glVertexAttribPointer (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid *pointer); void glEnableVertexAttribArray (GLuint index); void glDisableVertexAttribArray (GLuint index); void glGetVertexAttribdv (GLuint index, GLenum pname, GLdouble *params); void glGetVertexAttribfv (GLuint index, GLenum pname, GLfloat *params); void glGetVertexAttribiv (GLuint index, GLenum pname, GLint *params); void glGetVertexAttribPointerv (GLuint index, GLenum pname, GLvoid* *pointer); void glDeleteShader (GLuint shader); void glDetachShader (GLuint program, GLuint shader); GLuint glCreateShader (GLenum type); void glShaderSource (GLuint shader, GLsizei count, const GLchar* *string, const GLint *length); void glCompileShader (GLuint shader); GLuint glCreateProgram (void); void glAttachShader (GLuint program, GLuint shader); void glLinkProgram (GLuint program); void glUseProgram (GLuint program); void glDeleteProgram (GLuint program); void glValidateProgram (GLuint program); void glUniform1f (GLint location, GLfloat v0); void glUniform2f (GLint location, GLfloat v0, GLfloat v1); void glUniform3f (GLint location, GLfloat v0, GLfloat v1, GLfloat v2); void glUniform4f (GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); void glUniform1i (GLint location, GLint v0); void glUniform2i (GLint location, GLint v0, GLint v1); void glUniform3i (GLint location, GLint v0, GLint v1, GLint v2); void glUniform4i (GLint location, GLint v0, GLint v1, GLint v2, GLint v3); void glUniform1fv (GLint location, GLsizei count, const GLfloat *value); void glUniform2fv (GLint location, GLsizei count, const GLfloat *value); void glUniform3fv (GLint location, GLsizei count, const GLfloat *value); void glUniform4fv (GLint location, GLsizei count, const GLfloat *value); void glUniform1iv (GLint location, GLsizei count, const GLint *value); void glUniform2iv (GLint location, GLsizei count, const GLint *value); void glUniform3iv (GLint location, GLsizei count, const GLint *value); void glUniform4iv (GLint location, GLsizei count, const GLint *value); void glUniformMatrix2fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); void glUniformMatrix3fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); void glUniformMatrix4fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); GLboolean glIsShader (GLuint shader); GLboolean glIsProgram (GLuint program); void glGetShaderiv (GLuint shader, GLenum pname, GLint *params); void glGetProgramiv (GLuint program, GLenum pname, GLint *params); void glGetAttachedShaders (GLuint program, GLsizei maxCount, GLsizei *count, GLuint *shaders); void glGetShaderInfoLog (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog); void glGetProgramInfoLog (GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog); GLint glGetUniformLocation (GLuint program, const GLchar *name); void glGetActiveUniform (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name); void glGetUniformfv (GLuint program, GLint location, GLfloat *params); void glGetUniformiv (GLuint program, GLint location, GLint *params); void glGetShaderSource (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source); void glBindAttribLocation (GLuint program, GLuint index, const GLchar *name); void glGetActiveAttrib (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name); GLint glGetAttribLocation (GLuint program, const GLchar *name); void glStencilFuncSeparate (GLenum face, GLenum func, GLint ref, GLuint mask); void glStencilOpSeparate (GLenum face, GLenum fail, GLenum zfail, GLenum zpass); void glStencilMaskSeparate (GLenum face, GLuint mask); void glUniformMatrix2x3fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); void glUniformMatrix3x2fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); void glUniformMatrix2x4fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); void glUniformMatrix4x2fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); void glUniformMatrix3x4fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); void glUniformMatrix4x3fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); ]] gl = ffi.load "gl" -- )EOF"