Use crawl context builder

This commit is contained in:
Jarrod Doyle 2024-04-25 18:08:25 +01:00
parent 7787a8b69e
commit 9d332655be
Signed by: Jayrude
GPG Key ID: 38B57B16E7C0ADF7
2 changed files with 22 additions and 69 deletions

View File

@ -1,65 +0,0 @@
use std::sync::Arc;
use anyhow::Result;
use crawl::{
wgpu,
winit::{
self,
dpi::PhysicalSize,
event::{Event, WindowEvent},
event_loop::EventLoop,
},
};
pub struct App<'window> {
title: String,
event_loop: EventLoop<()>,
render_ctx: crawl::Context<'window>,
}
impl<'window> App<'window> {
pub async fn new(width: u32, height: u32, title: &str) -> Result<Self> {
log::info!("Initialising window...");
let size = PhysicalSize::new(width, height);
let event_loop = EventLoop::new()?;
let window = Arc::new(
winit::window::WindowBuilder::new()
.with_title(title)
.with_inner_size(size)
.build(&event_loop)?,
);
let render_ctx = crawl::Context::new(
window,
wgpu::Limits {
max_storage_buffer_binding_size: 1 << 30,
max_buffer_size: 1 << 30,
..Default::default()
},
)
.await?;
Ok(Self {
title: title.to_owned(),
event_loop,
render_ctx,
})
}
pub fn run(mut self) -> Result<()> {
self.event_loop.run(|event, elwt| match event {
Event::WindowEvent { window_id, event } if window_id == self.render_ctx.window.id() => {
if self.render_ctx.handle_window_event(&event, elwt) {
return;
}
if let WindowEvent::RedrawRequested = event {
self.render_ctx.window.request_redraw();
}
}
_ => (),
})?;
Ok(())
}
}

View File

@ -1,10 +1,28 @@
mod app;
use anyhow::Result;
use app::App;
use crawl::winit::event::{Event, WindowEvent};
fn main() -> Result<()> {
env_logger::init();
pollster::block_on(App::new(1280, 720, "Epic"))?.run()?;
let (mut context, event_loop) = pollster::block_on(
crawl::ContextBuilder::new()
.with_title("BEAVER")
.with_vsync(false)
.build(),
)?;
event_loop.run(|event, elwt| match event {
Event::WindowEvent { window_id, event } if window_id == context.window.id() => {
if context.handle_window_event(&event, elwt) {
return;
}
if let WindowEvent::RedrawRequested = event {
log::info!("Epic");
context.window.request_redraw();
}
}
_ => (),
})?;
Ok(())
}