int glGenBuffers_bind(lua_State *L)
{
	GLsizei n = luaL_checkinteger(L, 1);
	GLuint * buffers = get: GLuint *
	glGenBuffers(n, buffers);
	return 0;
}


int glGenerateMipmap_bind(lua_State *L)
{
	GLenum target = luaL_checkinteger(L, 1);
	glGenerateMipmap(target);
	return 0;
}


int glGenFramebuffers_bind(lua_State *L)
{
	GLsizei n = luaL_checkinteger(L, 1);
	GLuint * ids = get: GLuint *
	glGenFramebuffers(n, ids);
	return 0;
}


int glGenProgramPipelines_bind(lua_State *L)
{
	GLsizei n = luaL_checkinteger(L, 1);
	GLuint * pipelines = get: GLuint *
	glGenProgramPipelines(n, pipelines);
	return 0;
}


int glGenQueries_bind(lua_State *L)
{
	GLsizei n = luaL_checkinteger(L, 1);
	GLuint * ids = get: GLuint *
	glGenQueries(n, ids);
	return 0;
}


int glGenRenderbuffers_bind(lua_State *L)
{
	GLsizei n = luaL_checkinteger(L, 1);
	GLuint * renderbuffers = get: GLuint *
	glGenRenderbuffers(n, renderbuffers);
	return 0;
}


int glGenSamplers_bind(lua_State *L)
{
	GLsizei n = luaL_checkinteger(L, 1);
	GLuint * samplers = get: GLuint *
	glGenSamplers(n, samplers);
	return 0;
}


int glGenTextures_bind(lua_State *L)
{
	GLsizei n = luaL_checkinteger(L, 1);
	GLuint * textures = get: GLuint *
	glGenTextures(n, textures);
	return 0;
}


int glGenTransformFeedbacks_bind(lua_State *L)
{
	GLsizei n = luaL_checkinteger(L, 1);
	GLuint * ids = get: GLuint *
	glGenTransformFeedbacks(n, ids);
	return 0;
}


int glGenVertexArrays_bind(lua_State *L)
{
	GLsizei n = luaL_checkinteger(L, 1);
	GLuint * arrays = get: GLuint *
	glGenVertexArrays(n, arrays);
	return 0;
}


int glGetBooleanv_bind(lua_State *L)
{
	GLenum pname = luaL_checkinteger(L, 1);
	GLboolean * data = get: GLboolean *
	glGetBooleanv(pname, data);
	return 0;
}


int glGetDoublev_bind(lua_State *L)
{
	GLenum pname = luaL_checkinteger(L, 1);
	GLdouble * data = get: GLdouble *
	glGetDoublev(pname, data);
	return 0;
}


int glGetFloatv_bind(lua_State *L)
{
	GLenum pname = luaL_checkinteger(L, 1);
	GLfloat * data = get: GLfloat *
	glGetFloatv(pname, data);
	return 0;
}


int glGetIntegerv_bind(lua_State *L)
{
	GLenum pname = luaL_checkinteger(L, 1);
	GLint * data = get: GLint *
	glGetIntegerv(pname, data);
	return 0;
}


int glGetInteger64v_bind(lua_State *L)
{
	GLenum pname = luaL_checkinteger(L, 1);
	GLint64 * data = get: GLint64 *
	glGetInteger64v(pname, data);
	return 0;
}


int glGetBooleani_v_bind(lua_State *L)
{
	GLenum target = luaL_checkinteger(L, 1);
	GLuint index = luaL_checkinteger(L, 2);
	GLboolean * data = get: GLboolean *
	glGetBooleani_v(target, index, data);
	return 0;
}


int glGetIntegeri_v_bind(lua_State *L)
{
	GLenum target = luaL_checkinteger(L, 1);
	GLuint index = luaL_checkinteger(L, 2);
	GLint * data = get: GLint *
	glGetIntegeri_v(target, index, data);
	return 0;
}


int glGetFloati_v_bind(lua_State *L)
{
	GLenum target = luaL_checkinteger(L, 1);
	GLuint index = luaL_checkinteger(L, 2);
	GLfloat * data = get: GLfloat *
	glGetFloati_v(target, index, data);
	return 0;
}


int glGetDoublei_v_bind(lua_State *L)
{
	GLenum target = luaL_checkinteger(L, 1);
	GLuint index = luaL_checkinteger(L, 2);
	GLdouble * data = get: GLdouble *
	glGetDoublei_v(target, index, data);
	return 0;
}


int glGetInteger64i_v_bind(lua_State *L)
{
	GLenum target = luaL_checkinteger(L, 1);
	GLuint index = luaL_checkinteger(L, 2);
	GLint64 * data = get: GLint64 *
	glGetInteger64i_v(target, index, data);
	return 0;
}


int glGetActiveAttrib_bind(lua_State *L)
{
	GLuint program = luaL_checkinteger(L, 1);
	GLuint index = luaL_checkinteger(L, 2);
	GLsizei bufSize = luaL_checkinteger(L, 3);
	GLsizei * length = get: GLsizei *
	GLint * size = get: GLint *
	GLenum * type = get: GLenum *
	GLchar * name = luaL_checkstring(L, 7);
	glGetActiveAttrib(program, index, bufSize, length, size, type, name);
	return 0;
}


int glGetActiveSubroutineName_bind(lua_State *L)
{
	GLuint program = luaL_checkinteger(L, 1);
	GLenum shadertype = luaL_checkinteger(L, 2);
	GLuint index = luaL_checkinteger(L, 3);
	GLsizei bufSize = luaL_checkinteger(L, 4);
	GLsizei * length = get: GLsizei *
	GLchar * name = luaL_checkstring(L, 6);
	glGetActiveSubroutineName(program, shadertype, index, bufSize, length, name);
	return 0;
}


int glGetActiveSubroutineUniformiv_bind(lua_State *L)
{
	GLuint program = luaL_checkinteger(L, 1);
	GLenum shadertype = luaL_checkinteger(L, 2);
	GLuint index = luaL_checkinteger(L, 3);
	GLenum pname = luaL_checkinteger(L, 4);
	GLint * values = get: GLint *
	glGetActiveSubroutineUniformiv(program, shadertype, index, pname, values);
	return 0;
}


int glGetActiveSubroutineUniformName_bind(lua_State *L)
{
	GLuint program = luaL_checkinteger(L, 1);
	GLenum shadertype = luaL_checkinteger(L, 2);
	GLuint index = luaL_checkinteger(L, 3);
	GLsizei bufSize = luaL_checkinteger(L, 4);
	GLsizei * length = get: GLsizei *
	GLchar * name = luaL_checkstring(L, 6);
	glGetActiveSubroutineUniformName(program, shadertype, index, bufSize, length, name);
	return 0;
}


int glGetActiveUniform_bind(lua_State *L)
{
	GLuint program = luaL_checkinteger(L, 1);
	GLuint index = luaL_checkinteger(L, 2);
	GLsizei bufSize = luaL_checkinteger(L, 3);
	GLsizei * length = get: GLsizei *
	GLint * size = get: GLint *
	GLenum * type = get: GLenum *
	GLchar * name = luaL_checkstring(L, 7);
	glGetActiveUniform(program, index, bufSize, length, size, type, name);
	return 0;
}


int glGetActiveUniformBlockiv_bind(lua_State *L)
{
	GLuint program = luaL_checkinteger(L, 1);
	GLuint uniformBlockIndex = luaL_checkinteger(L, 2);
	GLenum pname = luaL_checkinteger(L, 3);
	GLint * params = get: GLint *
	glGetActiveUniformBlockiv(program, uniformBlockIndex, pname, params);
	return 0;
}


int glGetActiveUniformBlockName_bind(lua_State *L)
{
	GLuint program = luaL_checkinteger(L, 1);
	GLuint uniformBlockIndex = luaL_checkinteger(L, 2);
	GLsizei bufSize = luaL_checkinteger(L, 3);
	GLsizei * length = get: GLsizei *
	GLchar * uniformBlockName = luaL_checkstring(L, 5);
	glGetActiveUniformBlockName(program, uniformBlockIndex, bufSize, length, uniformBlockName);
	return 0;
}


int glGetActiveUniformName_bind(lua_State *L)
{
	GLuint program = luaL_checkinteger(L, 1);
	GLuint uniformIndex = luaL_checkinteger(L, 2);
	GLsizei bufSize = luaL_checkinteger(L, 3);
	GLsizei * length = get: GLsizei *
	GLchar * uniformName = luaL_checkstring(L, 5);
	glGetActiveUniformName(program, uniformIndex, bufSize, length, uniformName);
	return 0;
}


int glGetActiveUniformsiv_bind(lua_State *L)
{
	GLuint program = luaL_checkinteger(L, 1);
	GLsizei uniformCount = luaL_checkinteger(L, 2);
	const GLuint * uniformIndices = get: const GLuint *
	GLenum pname = luaL_checkinteger(L, 4);
	GLint * params = get: GLint *
	glGetActiveUniformsiv(program, uniformCount, uniformIndices, pname, params);
	return 0;
}


int glGetAttachedShaders_bind(lua_State *L)
{
	GLuint program = luaL_checkinteger(L, 1);
	GLsizei maxCount = luaL_checkinteger(L, 2);
	GLsizei * count = get: GLsizei *
	GLuint * shaders = get: GLuint *
	glGetAttachedShaders(program, maxCount, count, shaders);
	return 0;
}


int glGetAttribLocation_bind(lua_State *L)
{
	GLuint program = luaL_checkinteger(L, 1);
	const GLchar * name = luaL_checkstring(L, 2);
	GLint bind_result = glGetAttribLocation(program, name);
	lua_pushinteger(L, bind_result);
	return 1;
}


int glGetBufferParameteriv_bind(lua_State *L)
{
	GLenum target = luaL_checkinteger(L, 1);
	GLenum value = luaL_checkinteger(L, 2);
	GLint * data = get: GLint *
	glGetBufferParameteriv(target, value, data);
	return 0;
}


int glGetBufferParameteri64v_bind(lua_State *L)
{
	GLenum target = luaL_checkinteger(L, 1);
	GLenum value = luaL_checkinteger(L, 2);
	GLint64 * data = get: GLint64 *
	glGetBufferParameteri64v(target, value, data);
	return 0;
}


int glGetBufferPointerv_bind(lua_State *L)
{
	GLenum target = luaL_checkinteger(L, 1);
	GLenum pname = luaL_checkinteger(L, 2);
	void ** params = get: void **
	glGetBufferPointerv(target, pname, params);
	return 0;
}


int glGetBufferSubData_bind(lua_State *L)
{
	GLenum target = luaL_checkinteger(L, 1);
	GLintptr offset = luaL_checkinteger(L, 2);
	GLsizeiptr size = luaL_checkinteger(L, 3);
	void * data = get: void *
	glGetBufferSubData(target, offset, size, data);
	return 0;
}


int glGetCompressedTexImage_bind(lua_State *L)
{
	GLenum target = luaL_checkinteger(L, 1);
	GLint level = luaL_checkinteger(L, 2);
	void * pixels = get: void *
	glGetCompressedTexImage(target, level, pixels);
	return 0;
}


int glGetError_bind(lua_State *L)
{
	 void = get: 
	GLenum bind_result = glGetError(void);
	lua_pushinteger(L, bind_result);
	return 1;
}


int glGetFragDataIndex_bind(lua_State *L)
{
	GLuint program = luaL_checkinteger(L, 1);
	const char * name = luaL_checkstring(L, 2);
	GLint bind_result = glGetFragDataIndex(program, name);
	lua_pushinteger(L, bind_result);
	return 1;
}


int glGetFragDataLocation_bind(lua_State *L)
{
	GLuint program = luaL_checkinteger(L, 1);
	const char * name = luaL_checkstring(L, 2);
	GLint bind_result = glGetFragDataLocation(program, name);
	lua_pushinteger(L, bind_result);
	return 1;
}


int glGetFramebufferAttachmentParameteriv_bind(lua_State *L)
{
	GLenum target = luaL_checkinteger(L, 1);
	GLenum attachment = luaL_checkinteger(L, 2);
	GLenum pname = luaL_checkinteger(L, 3);
	GLint * params = get: GLint *
	glGetFramebufferAttachmentParameteriv(target, attachment, pname, params);
	return 0;
}


int glGetMultisamplefv_bind(lua_State *L)
{
	GLenum pname = luaL_checkinteger(L, 1);
	GLuint index = luaL_checkinteger(L, 2);
	GLfloat * val = get: GLfloat *
	glGetMultisamplefv(pname, index, val);
	return 0;
}


int glGetUniformfv_bind(lua_State *L)
{
	GLuint program = luaL_checkinteger(L, 1);
	GLint location = luaL_checkinteger(L, 2);
	GLfloat * params = get: GLfloat *
	glGetUniformfv(program, location, params);
	return 0;
}


int glGetUniformiv_bind(lua_State *L)
{
	GLuint program = luaL_checkinteger(L, 1);
	GLint location = luaL_checkinteger(L, 2);
	GLint * params = get: GLint *
	glGetUniformiv(program, location, params);
	return 0;
}


int glGetUniformuiv_bind(lua_State *L)
{
	GLuint program = luaL_checkinteger(L, 1);
	GLint location = luaL_checkinteger(L, 2);
	GLuint * params = get: GLuint *
	glGetUniformuiv(program, location, params);
	return 0;
}


int glGetUniformdv_bind(lua_State *L)
{
	GLuint program = luaL_checkinteger(L, 1);
	GLint location = luaL_checkinteger(L, 2);
	GLdouble * params = get: GLdouble *
	glGetUniformdv(program, location, params);
	return 0;
}


int glGetProgramiv_bind(lua_State *L)
{
	GLuint program = luaL_checkinteger(L, 1);
	GLenum pname = luaL_checkinteger(L, 2);
	GLint * params = get: GLint *
	glGetProgramiv(program, pname, params);
	return 0;
}


int glGetProgramBinary_bind(lua_State *L)
{
	GLuint program = luaL_checkinteger(L, 1);
	GLsizei bufSize = luaL_checkinteger(L, 2);
	GLsizei * length = get: GLsizei *
	GLenum * binaryFormat = get: GLenum *
	void * binary = get: void *
	glGetProgramBinary(program, bufSize, length, binaryFormat, binary);
	return 0;
}


int glGetProgramInfoLog_bind(lua_State *L)
{
	GLuint program = luaL_checkinteger(L, 1);
	GLsizei maxLength = luaL_checkinteger(L, 2);
	GLsizei * length = get: GLsizei *
	GLchar * infoLog = luaL_checkstring(L, 4);
	glGetProgramInfoLog(program, maxLength, length, infoLog);
	return 0;
}


int glGetProgramPipelineiv_bind(lua_State *L)
{
	GLuint pipeline = luaL_checkinteger(L, 1);
	GLenum pname = luaL_checkinteger(L, 2);
	GLint * params = get: GLint *
	glGetProgramPipelineiv(pipeline, pname, params);
	return 0;
}


int glGetProgramPipelineInfoLog_bind(lua_State *L)
{
	GLuint pipeline = luaL_checkinteger(L, 1);
	GLsizei bufSize = luaL_checkinteger(L, 2);
	GLsizei * length = get: GLsizei *
	GLchar * infoLog = luaL_checkstring(L, 4);
	glGetProgramPipelineInfoLog(pipeline, bufSize, length, infoLog);
	return 0;
}


int glGetProgramPipelineiv_bind(lua_State *L)
{
	GLuint pipeline = luaL_checkinteger(L, 1);
	GLenum pname = luaL_checkinteger(L, 2);
	GLint * params = get: GLint *
	glGetProgramPipelineiv(pipeline, pname, params);
	return 0;
}


int glGetProgramStageiv_bind(lua_State *L)
{
	GLuint program = luaL_checkinteger(L, 1);
	GLenum shadertype = luaL_checkinteger(L, 2);
	GLenum pname = luaL_checkinteger(L, 3);
	GLint * values = get: GLint *
	glGetProgramStageiv(program, shadertype, pname, values);
	return 0;
}


int glGetQueryIndexediv_bind(lua_State *L)
{
	GLenum target = luaL_checkinteger(L, 1);
	GLuint index = luaL_checkinteger(L, 2);
	GLenum pname = luaL_checkinteger(L, 3);
	GLint * params = get: GLint *
	glGetQueryIndexediv(target, index, pname, params);
	return 0;
}


int glGetQueryiv_bind(lua_State *L)
{
	GLenum target = luaL_checkinteger(L, 1);
	GLenum pname = luaL_checkinteger(L, 2);
	GLint * params = get: GLint *
	glGetQueryiv(target, pname, params);
	return 0;
}


int glGetRenderbufferParameteriv_bind(lua_State *L)
{
	GLenum target = luaL_checkinteger(L, 1);
	GLenum pname = luaL_checkinteger(L, 2);
	GLint * params = get: GLint *
	glGetRenderbufferParameteriv(target, pname, params);
	return 0;
}


int glGetSamplerParameterfv_bind(lua_State *L)
{
	GLuint sampler = luaL_checkinteger(L, 1);
	GLenum pname = luaL_checkinteger(L, 2);
	GLfloat * params = get: GLfloat *
	glGetSamplerParameterfv(sampler, pname, params);
	return 0;
}


int glGetSamplerParameteriv_bind(lua_State *L)
{
	GLuint sampler = luaL_checkinteger(L, 1);
	GLenum pname = luaL_checkinteger(L, 2);
	GLint * params = get: GLint *
	glGetSamplerParameteriv(sampler, pname, params);
	return 0;
}


int glGetSamplerParameterIiv_bind(lua_State *L)
{
	GLuint sampler = luaL_checkinteger(L, 1);
	GLenum pname = luaL_checkinteger(L, 2);
	GLint * params = get: GLint *
	glGetSamplerParameterIiv(sampler, pname, params);
	return 0;
}


int glGetSamplerParameterIuiv_bind(lua_State *L)
{
	GLuint sampler = luaL_checkinteger(L, 1);
	GLenum pname = luaL_checkinteger(L, 2);
	GLuint * params = get: GLuint *
	glGetSamplerParameterIuiv(sampler, pname, params);
	return 0;
}


int glGetShaderiv_bind(lua_State *L)
{
	GLuint shader = luaL_checkinteger(L, 1);
	GLenum pname = luaL_checkinteger(L, 2);
	GLint * params = get: GLint *
	glGetShaderiv(shader, pname, params);
	return 0;
}


int glGetShaderInfoLog_bind(lua_State *L)
{
	GLuint shader = luaL_checkinteger(L, 1);
	GLsizei maxLength = luaL_checkinteger(L, 2);
	GLsizei * length = get: GLsizei *
	GLchar * infoLog = luaL_checkstring(L, 4);
	glGetShaderInfoLog(shader, maxLength, length, infoLog);
	return 0;
}


int glGetShaderiv_bind(lua_State *L)
{
	GLuint shader = luaL_checkinteger(L, 1);
	GLenum pname = luaL_checkinteger(L, 2);
	GLint * params = get: GLint *
	glGetShaderiv(shader, pname, params);
	return 0;
}


int glGetShaderPrecisionFormat_bind(lua_State *L)
{
	GLenum shaderType = luaL_checkinteger(L, 1);
	GLenum precisionType = luaL_checkinteger(L, 2);
	GLint * range = get: GLint *
	GLint * precision = get: GLint *
	glGetShaderPrecisionFormat(shaderType, precisionType, range, precision);
	return 0;
}


int glGetShaderSource_bind(lua_State *L)
{
	GLuint shader = luaL_checkinteger(L, 1);
	GLsizei bufSize = luaL_checkinteger(L, 2);
	GLsizei * length = get: GLsizei *
	GLchar * source = luaL_checkstring(L, 4);
	glGetShaderSource(shader, bufSize, length, source);
	return 0;
}


int glGetString_bind(lua_State *L)
{
	GLenum name = luaL_checkinteger(L, 1);
	const GLubyte * bind_result = glGetString(name);
	/* push result */
	return /* count */;
}


int glGetStringi_bind(lua_State *L)
{
	GLenum name = luaL_checkinteger(L, 1);
	GLuint index = luaL_checkinteger(L, 2);
	const GLubyte * bind_result = glGetStringi(name, index);
	/* push result */
	return /* count */;
}


int glGetSubroutineIndex_bind(lua_State *L)
{
	GLuint program = luaL_checkinteger(L, 1);
	GLenum shadertype = luaL_checkinteger(L, 2);
	const GLchar * name = luaL_checkstring(L, 3);
	GLuint bind_result = glGetSubroutineIndex(program, shadertype, name);
	lua_pushinteger(L, bind_result);
	return 1;
}


int glGetSubroutineUniformLocation_bind(lua_State *L)
{
	GLuint program = luaL_checkinteger(L, 1);
	GLenum shadertype = luaL_checkinteger(L, 2);
	const GLchar * name = luaL_checkstring(L, 3);
	GLint bind_result = glGetSubroutineUniformLocation(program, shadertype, name);
	lua_pushinteger(L, bind_result);
	return 1;
}


int glGetSynciv_bind(lua_State *L)
{
	GLsync sync = luaL_checkinteger(L, 1);
	GLenum pname = luaL_checkinteger(L, 2);
	GLsizei bufSize = luaL_checkinteger(L, 3);
	GLsizei * length = get: GLsizei *
	GLint * values = get: GLint *
	glGetSynciv(sync, pname, bufSize, length, values);
	return 0;
}


int glGetTexImage_bind(lua_State *L)
{
	GLenum target = luaL_checkinteger(L, 1);
	GLint level = luaL_checkinteger(L, 2);
	GLenum format = luaL_checkinteger(L, 3);
	GLenum type = luaL_checkinteger(L, 4);
	void * pixels = get: void *
	glGetTexImage(target, level, format, type, pixels);
	return 0;
}


int glGetTexLevelParameterfv_bind(lua_State *L)
{
	GLenum target = luaL_checkinteger(L, 1);
	GLint level = luaL_checkinteger(L, 2);
	GLenum pname = luaL_checkinteger(L, 3);
	GLfloat * params = get: GLfloat *
	glGetTexLevelParameterfv(target, level, pname, params);
	return 0;
}


int glGetTexLevelParameteriv_bind(lua_State *L)
{
	GLenum target = luaL_checkinteger(L, 1);
	GLint level = luaL_checkinteger(L, 2);
	GLenum pname = luaL_checkinteger(L, 3);
	GLint * params = get: GLint *
	glGetTexLevelParameteriv(target, level, pname, params);
	return 0;
}


int glGetTexParameterfv_bind(lua_State *L)
{
	GLenum target = luaL_checkinteger(L, 1);
	GLenum pname = luaL_checkinteger(L, 2);
	GLfloat * params = get: GLfloat *
	glGetTexParameterfv(target, pname, params);
	return 0;
}


int glGetTexParameteriv_bind(lua_State *L)
{
	GLenum target = luaL_checkinteger(L, 1);
	GLenum pname = luaL_checkinteger(L, 2);
	GLint * params = get: GLint *
	glGetTexParameteriv(target, pname, params);
	return 0;
}


int glGetTexParameterIiv_bind(lua_State *L)
{
	GLenum target = luaL_checkinteger(L, 1);
	GLenum pname = luaL_checkinteger(L, 2);
	GLint * params = get: GLint *
	glGetTexParameterIiv(target, pname, params);
	return 0;
}


int glGetTexParameterIuiv_bind(lua_State *L)
{
	GLenum target = luaL_checkinteger(L, 1);
	GLenum pname = luaL_checkinteger(L, 2);
	GLuint * params = get: GLuint *
	glGetTexParameterIuiv(target, pname, params);
	return 0;
}


int glGetTransformFeedbackVarying_bind(lua_State *L)
{
	GLuint program = luaL_checkinteger(L, 1);
	GLuint index = luaL_checkinteger(L, 2);
	GLsizei bufSize = luaL_checkinteger(L, 3);
	GLsizei * length = get: GLsizei *
	GLsizei * size = get: GLsizei *
	GLenum * type = get: GLenum *
	char * name = luaL_checkstring(L, 7);
	glGetTransformFeedbackVarying(program, index, bufSize, length, size, type, name);
	return 0;
}


int glGetUniformBlockIndex_bind(lua_State *L)
{
	GLuint program = luaL_checkinteger(L, 1);
	const GLchar * uniformBlockName = luaL_checkstring(L, 2);
	GLuint bind_result = glGetUniformBlockIndex(program, uniformBlockName);
	lua_pushinteger(L, bind_result);
	return 1;
}


int glGetUniformIndices_bind(lua_State *L)
{
	GLuint program = luaL_checkinteger(L, 1);
	GLsizei uniformCount = luaL_checkinteger(L, 2);
	const GLchar ** uniformNames = get: const GLchar **
	GLuint * uniformIndices = get: GLuint *
	glGetUniformIndices(program, uniformCount, uniformNames, uniformIndices);
	return 0;
}


int glGetUniformLocation_bind(lua_State *L)
{
	GLuint program = luaL_checkinteger(L, 1);
	const GLchar * name = luaL_checkstring(L, 2);
	GLint bind_result = glGetUniformLocation(program, name);
	lua_pushinteger(L, bind_result);
	return 1;
}


int glGetUniformSubroutineuiv_bind(lua_State *L)
{
	GLenum shadertype = luaL_checkinteger(L, 1);
	GLint location = luaL_checkinteger(L, 2);
	GLuint * values = get: GLuint *
	glGetUniformSubroutineuiv(shadertype, location, values);
	return 0;
}


int glGetVertexAttribdv_bind(lua_State *L)
{
	GLuint index = luaL_checkinteger(L, 1);
	GLenum pname = luaL_checkinteger(L, 2);
	GLdouble * params = get: GLdouble *
	glGetVertexAttribdv(index, pname, params);
	return 0;
}


int glGetVertexAttribfv_bind(lua_State *L)
{
	GLuint index = luaL_checkinteger(L, 1);
	GLenum pname = luaL_checkinteger(L, 2);
	GLfloat * params = get: GLfloat *
	glGetVertexAttribfv(index, pname, params);
	return 0;
}


int glGetVertexAttribiv_bind(lua_State *L)
{
	GLuint index = luaL_checkinteger(L, 1);
	GLenum pname = luaL_checkinteger(L, 2);
	GLint * params = get: GLint *
	glGetVertexAttribiv(index, pname, params);
	return 0;
}


int glGetVertexAttribIiv_bind(lua_State *L)
{
	GLuint index = luaL_checkinteger(L, 1);
	GLenum pname = luaL_checkinteger(L, 2);
	GLint * params = get: GLint *
	glGetVertexAttribIiv(index, pname, params);
	return 0;
}


int glGetVertexAttribIuiv_bind(lua_State *L)
{
	GLuint index = luaL_checkinteger(L, 1);
	GLenum pname = luaL_checkinteger(L, 2);
	GLuint * params = get: GLuint *
	glGetVertexAttribIuiv(index, pname, params);
	return 0;
}


int glGetVertexAttribLdv_bind(lua_State *L)
{
	GLuint index = luaL_checkinteger(L, 1);
	GLenum pname = luaL_checkinteger(L, 2);
	GLdouble * params = get: GLdouble *
	glGetVertexAttribLdv(index, pname, params);
	return 0;
}


int glGetVertexAttribPointerv_bind(lua_State *L)
{
	GLuint index = luaL_checkinteger(L, 1);
	GLenum pname = luaL_checkinteger(L, 2);
	void ** pointer = get: void **
	glGetVertexAttribPointerv(index, pname, pointer);
	return 0;
}