use winit::dpi::PhysicalSize;
use glutin::{ContextBuilder, Context, NotCurrent, GlRequest, GlProfile, Api};
use crate::draw::gl;
use crate::application::get_or_create_event_loop;
static mut CONTEXT: Option<Context<NotCurrent>> = None;
fn ensure_context() {
unsafe {
match &CONTEXT {
Some(_context) => (),
None => {
let event_loop = get_or_create_event_loop();
let context = ContextBuilder::new()
.with_gl(GlRequest::Specific(Api::OpenGlEs, (3, 2)))
.with_gl_profile(GlProfile::Core)
.build_headless(&event_loop, PhysicalSize::new(1, 1))
.unwrap();
CONTEXT = Some(context);
}
}
}
}
pub fn get_or_create_context() -> &'static mut Context<NotCurrent> {
ensure_context();
unsafe {
CONTEXT.as_mut().unwrap()
}
}