gl: add bind_attrib_location, also add gl cleanup functions

pull/4960/head
Louis Schmieder 2020-05-20 15:24:37 +02:00 committed by GitHub
parent c9f3a05ef6
commit a0ed1e2878
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 34 additions and 0 deletions

View File

@ -22,9 +22,11 @@ fn C.glScissor()
fn C.glVertexAttribPointer() fn C.glVertexAttribPointer()
fn C.glGenBuffers() fn C.glGenBuffers()
fn C.glEnableVertexAttribArray() fn C.glEnableVertexAttribArray()
fn C.glDisableVertexAttribArray()
fn C.glGenVertexArrays() fn C.glGenVertexArrays()
fn C.glDrawElements() fn C.glDrawElements()
fn C.glUseProgram() fn C.glUseProgram()
fn C.glValidateProgram()
fn C.glDrawArrays() fn C.glDrawArrays()
fn C.glBufferData() fn C.glBufferData()
fn C.glGenerateMipmap() fn C.glGenerateMipmap()
@ -41,10 +43,12 @@ fn C.glDeleteShader()
fn C.glGetProgramiv() fn C.glGetProgramiv()
fn C.glLinkProgram() fn C.glLinkProgram()
fn C.glAttachShader() fn C.glAttachShader()
fn C.glDetachShader()
fn C.glGetShaderiv() fn C.glGetShaderiv()
fn C.glCompileShader() fn C.glCompileShader()
fn C.glShaderSource() fn C.glShaderSource()
fn C.glCreateProgram() int fn C.glCreateProgram() int
fn C.glDeleteProgram()
fn C.glClear() fn C.glClear()
fn C.glCreateShader() int fn C.glCreateShader() int
fn C.glClearColor() fn C.glClearColor()
@ -54,8 +58,10 @@ fn C.glPixelStorei()
fn C.glBlendFunc() fn C.glBlendFunc()
fn C.glPolygonMode() fn C.glPolygonMode()
fn C.glDeleteBuffers() fn C.glDeleteBuffers()
fn C.glDeleteVertexArrays()
fn C.glGetUniformLocation() int fn C.glGetUniformLocation() int
fn C.glGetAttribLocation() int fn C.glGetAttribLocation() int
fn C.glBindAttribLocation()
pub fn init_glad() { pub fn init_glad() {
@ -86,6 +92,10 @@ pub fn create_program() int {
return C.glCreateProgram() return C.glCreateProgram()
} }
pub fn delete_program(program int) {
C.glDeleteProgram(program)
}
pub fn shader_source(shader, a int, source string, b int) { pub fn shader_source(shader, a int, source string, b int) {
C.glShaderSource(shader, a, &source.str, b) C.glShaderSource(shader, a, &source.str, b)
} }
@ -105,6 +115,10 @@ pub fn attach_shader(program, shader int) {
C.glAttachShader(program, shader) C.glAttachShader(program, shader)
} }
pub fn detach_shader(program, shader int) {
C.glDetachShader(program, shader)
}
pub fn link_program(program int) { pub fn link_program(program int) {
C.glLinkProgram(program) C.glLinkProgram(program)
} }
@ -115,6 +129,10 @@ pub fn get_program_link_status(program int) int {
return success return success
} }
pub fn validate_program(program int) {
C.glValidateProgram(program)
}
pub fn delete_shader(shader int) { pub fn delete_shader(shader int) {
C.glDeleteShader(shader) C.glDeleteShader(shader)
} }
@ -182,6 +200,14 @@ pub fn set_ebo(ebo u32, indices []int, draw_typ int) {
gl.buffer_data_int(C.GL_ELEMENT_ARRAY_BUFFER, indices, draw_typ) gl.buffer_data_int(C.GL_ELEMENT_ARRAY_BUFFER, indices, draw_typ)
} }
pub fn delete_buffer(vbo u32) {
C.glDeleteBuffers(1, vbo)
}
pub fn delete_vao(vao u32) {
C.glDeleteVertexArrays(1, vao)
}
// ///////////////////// // /////////////////////
// fn gen_vertex_arrays(a int, vao uint) { // fn gen_vertex_arrays(a int, vao uint) {
// # glGenVertexArrays(a, &VAO); // # glGenVertexArrays(a, &VAO);
@ -197,6 +223,10 @@ pub fn get_attrib_location(program int, key string) int {
return C.glGetAttribLocation(program, key.str) return C.glGetAttribLocation(program, key.str)
} }
pub fn bind_attrib_location(program int, index int, name string) {
C.glBindAttribLocation(program, index, name.str)
}
pub fn draw_arrays(typ, start, len int) { pub fn draw_arrays(typ, start, len int) {
C.glDrawArrays(typ, start, len) C.glDrawArrays(typ, start, len)
} }
@ -219,6 +249,10 @@ pub fn enable_vertex_attrib_array(n int) {
C.glEnableVertexAttribArray(n) C.glEnableVertexAttribArray(n)
} }
pub fn disable_vertex_attrib_array(n int) {
C.glDisableVertexAttribArray(n)
}
pub fn gen_buffer() u32 { pub fn gen_buffer() u32 {
vbo := u32(0) vbo := u32(0)
C.glGenBuffers(1, &vbo) C.glGenBuffers(1, &vbo)