1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
use super::enums::*;
use gl;
use gl::types::*;
use std::ffi::CString;
use std::ptr;
pub fn gl_create_program() -> GLuint {
unsafe { gl::CreateProgram() }
}
pub fn gl_create_shader(type_: GLShaderType) -> GLuint {
unsafe { gl::CreateShader(type_ as GLenum) }
}
pub fn gl_shader_source(shader: GLuint, source: &str) {
unsafe {
gl::ShaderSource(
shader,
1,
&CString::new(source).unwrap().as_ptr(),
ptr::null(),
);
}
}
pub fn gl_compile_shader(shader: GLuint) {
unsafe {
gl::CompileShader(shader);
}
}
pub fn gl_get_shader_iv(shader: GLuint, parameter: GLShaderInfoParam, status: &mut GLint) {
unsafe {
gl::GetShaderiv(shader, parameter as GLenum, status);
}
}
pub fn gl_get_shader_info_log(
shader: GLuint,
buffer_size: GLsizei,
length: &mut GLsizei,
info_log: &mut Vec<GLchar>,
) {
unsafe {
gl::GetShaderInfoLog(
shader,
buffer_size,
length,
info_log.as_mut_ptr() as *mut GLchar,
);
}
}
pub fn gl_attach_shader(program: GLuint, shader: GLuint) {
unsafe {
gl::AttachShader(program, shader);
}
}
pub fn gl_link_program(program: GLuint) {
unsafe {
gl::LinkProgram(program);
}
}
pub fn gl_use_program(program: GLuint) {
unsafe {
gl::UseProgram(program);
}
}
pub fn gl_delete_program(program: GLuint) {
unsafe {
gl::DeleteProgram(program);
}
}
pub fn gl_delete_shader(shader: GLuint) {
unsafe {
gl::DeleteShader(shader);
}
}