#![no_std]
#[cfg(feature = "std")]
extern crate std;
#[path = "../generator/src/gl_fn_types.rs"]
mod gl_fn_types;
mod gl_struct;
pub mod gl_constants;
pub mod gl_types;
#[allow(unused)]
use core::ffi::c_void;
pub use gl_constants::*;
pub use gl_struct::*;
pub use gl_types::*;
#[cfg(feature = "std")]
pub unsafe extern "system" fn println_gl_debug_callback(
source: GLenum, type_: GLenum, id: GLuint, severity: GLenum, length: GLsizei,
message: *const GLchar, _user_param: *const c_void,
) {
let source = match source {
GL_DEBUG_SOURCE_API => "API",
GL_DEBUG_SOURCE_WINDOW_SYSTEM => "WindowSystem",
GL_DEBUG_SOURCE_SHADER_COMPILER => "ShaderCompiler",
GL_DEBUG_SOURCE_THIRD_PARTY => "ThirdParty",
GL_DEBUG_SOURCE_APPLICATION => "Application",
GL_DEBUG_SOURCE_OTHER => "Other",
_ => "Unknown",
};
let type_ = match type_ {
GL_DEBUG_TYPE_ERROR => "Error",
GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR => "DeprecatedBehavior",
GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR => "UndefinedBehavior",
GL_DEBUG_TYPE_PORTABILITY => "Portability",
GL_DEBUG_TYPE_PERFORMANCE => "Performance",
GL_DEBUG_TYPE_OTHER => "Other",
GL_DEBUG_TYPE_MARKER => "Marker",
_ => "Unknown",
};
let severity = match severity {
GL_DEBUG_SEVERITY_HIGH => "High",
GL_DEBUG_SEVERITY_MEDIUM => "Medium",
GL_DEBUG_SEVERITY_LOW => "Low",
GL_DEBUG_SEVERITY_NOTIFICATION => "Note",
_ => "Unknown",
};
std::println!(
"[src:{source}][ty:{type_}][id:{id}][severity:{severity}]: {msg}",
source = source,
type_ = type_,
id = id,
severity = severity,
msg = core::str::from_utf8(core::slice::from_raw_parts(
message as *const u8,
length as usize,
))
.unwrap_or("message was not utf8")
);
}