mirror of
https://github.com/hannobraun/Fornjot
synced 2025-05-12 13:58:28 +00:00
Improve error handling
This commit is contained in:
parent
8e2ec045c3
commit
ab4a2f6f40
@ -32,7 +32,7 @@ impl ApplicationHandler for App {
|
|||||||
.unwrap(),
|
.unwrap(),
|
||||||
);
|
);
|
||||||
|
|
||||||
let renderer = Renderer::new(window.clone());
|
let renderer = Renderer::new(window.clone()).unwrap();
|
||||||
|
|
||||||
self.window = Some(window);
|
self.window = Some(window);
|
||||||
self.renderer = Some(renderer);
|
self.renderer = Some(renderer);
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
use std::sync::Arc;
|
use std::sync::Arc;
|
||||||
|
|
||||||
|
use anyhow::anyhow;
|
||||||
use winit::window::Window;
|
use winit::window::Window;
|
||||||
|
|
||||||
pub struct Renderer {
|
pub struct Renderer {
|
||||||
@ -9,31 +10,30 @@ pub struct Renderer {
|
|||||||
}
|
}
|
||||||
|
|
||||||
impl Renderer {
|
impl Renderer {
|
||||||
pub fn new(window: Arc<Window>) -> Self {
|
pub fn new(window: Arc<Window>) -> anyhow::Result<Self> {
|
||||||
let instance = wgpu::Instance::default();
|
let instance = wgpu::Instance::default();
|
||||||
let surface = instance.create_surface(window.clone()).unwrap();
|
let surface = instance.create_surface(window.clone())?;
|
||||||
let adapter = pollster::block_on(instance.request_adapter(
|
let adapter = pollster::block_on(instance.request_adapter(
|
||||||
&wgpu::RequestAdapterOptions {
|
&wgpu::RequestAdapterOptions {
|
||||||
compatible_surface: Some(&surface),
|
compatible_surface: Some(&surface),
|
||||||
..Default::default()
|
..Default::default()
|
||||||
},
|
},
|
||||||
))
|
))
|
||||||
.unwrap();
|
.ok_or_else(|| anyhow!("Failed to request adapter"))?;
|
||||||
let (device, queue) = pollster::block_on(
|
let (device, queue) = pollster::block_on(
|
||||||
adapter.request_device(&wgpu::DeviceDescriptor::default(), None),
|
adapter.request_device(&wgpu::DeviceDescriptor::default(), None),
|
||||||
)
|
)?;
|
||||||
.unwrap();
|
|
||||||
|
|
||||||
let size = window.inner_size();
|
let size = window.inner_size();
|
||||||
let config = surface
|
let config = surface
|
||||||
.get_default_config(&adapter, size.width, size.height)
|
.get_default_config(&adapter, size.width, size.height)
|
||||||
.unwrap();
|
.ok_or_else(|| anyhow!("Failed to get default surface config"))?;
|
||||||
surface.configure(&device, &config);
|
surface.configure(&device, &config);
|
||||||
|
|
||||||
Self {
|
Ok(Self {
|
||||||
surface,
|
surface,
|
||||||
device,
|
device,
|
||||||
queue,
|
queue,
|
||||||
}
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user