pub mod shader;
pub mod vertex_array;
pub mod texture;
use gl;
pub extern "system"
fn standard_debug_callback(
source: u32,
gltype: u32,
id: u32,
severity: u32,
_length: i32,
message: *const i8,
_user_param: *mut std::ffi::c_void,
) {
if severity == gl::DEBUG_SEVERITY_NOTIFICATION {
return;
}
let source = match source {
gl::DEBUG_SOURCE_API => "API",
gl::DEBUG_SOURCE_WINDOW_SYSTEM => "Window System",
gl::DEBUG_SOURCE_SHADER_COMPILER => "Shader Compiler",
gl::DEBUG_SOURCE_THIRD_PARTY => "Third Party",
gl::DEBUG_SOURCE_APPLICATION => "Application",
gl::DEBUG_SOURCE_OTHER => "Other",
_ => "Unknown",
};
let gltype = match gltype {
gl::DEBUG_TYPE_ERROR => "Error",
gl::DEBUG_TYPE_DEPRECATED_BEHAVIOR => "Deprecated Behavior",
gl::DEBUG_TYPE_UNDEFINED_BEHAVIOR => "Undefined Behavior",
gl::DEBUG_TYPE_PORTABILITY => "Portability",
gl::DEBUG_TYPE_PERFORMANCE => "Performance",
gl::DEBUG_TYPE_MARKER => "Marker",
gl::DEBUG_TYPE_PUSH_GROUP => "Push Group",
gl::DEBUG_TYPE_POP_GROUP => "Pop Group",
gl::DEBUG_TYPE_OTHER => "Other",
_ => "Unknown",
};
let severity = match severity {
gl::DEBUG_SEVERITY_HIGH => "High",
gl::DEBUG_SEVERITY_MEDIUM => "Medium",
gl::DEBUG_SEVERITY_LOW => "Low",
gl::DEBUG_SEVERITY_NOTIFICATION => "Notification",
_ => "Unknown",
};
unsafe {
let message = std::ffi::CStr::from_ptr(message).to_str().unwrap();
println!(
"OpenGL Debug Message: source: {}, type: {}, id: {}, severity: {}, message: {}",
source, gltype, id, severity, message
);
}
}