kubi/src/rendering.rs

47 lines
1.1 KiB
Rust
Raw Normal View History

use shipyard::{Unique, NonSendSync, UniqueView, UniqueViewMut};
2023-01-19 16:28:07 -06:00
use glium::{
Display, Surface,
2023-01-19 16:28:07 -06:00
glutin::{
event_loop::EventLoop,
window::WindowBuilder,
ContextBuilder, GlProfile
2023-01-22 10:01:54 -06:00
},
2023-01-19 16:28:07 -06:00
};
2023-01-19 17:45:46 -06:00
use glam::Vec3;
2023-01-19 16:28:07 -06:00
2023-01-27 21:35:55 -06:00
pub mod primitives;
2023-01-27 21:20:51 -06:00
pub mod world;
pub mod selection_box;
2023-01-19 16:28:07 -06:00
#[derive(Unique)]
pub struct RenderTarget(pub glium::Frame);
2023-01-19 17:45:46 -06:00
#[derive(Unique)]
pub struct BackgroundColor(pub Vec3);
2023-01-19 16:28:07 -06:00
#[derive(Unique)]
2023-01-21 18:51:23 -06:00
pub struct Renderer {
2023-01-19 16:28:07 -06:00
pub display: Display
}
2023-01-21 18:51:23 -06:00
impl Renderer {
2023-01-19 16:28:07 -06:00
pub fn init(event_loop: &EventLoop<()>) -> Self {
log::info!("initializing display");
let wb = WindowBuilder::new()
.with_title("uwu")
.with_maximized(true);
let cb = ContextBuilder::new()
.with_depth_buffer(24)
.with_gl_profile(GlProfile::Core);
let display = Display::new(wb, cb, event_loop)
.expect("Failed to create a glium Display");
Self { display }
}
2023-01-19 14:58:59 -06:00
}
2023-01-19 17:45:46 -06:00
2023-01-22 10:01:54 -06:00
pub fn clear_background(
mut target: NonSendSync<UniqueViewMut<RenderTarget>>,
color: UniqueView<BackgroundColor>,
) {
2023-01-19 17:45:46 -06:00
target.0.clear_color_srgb_and_depth((color.0.x, color.0.y, color.0.z, 1.), 1.);
}