fix: removed the asynchronicity of the Renderer trait

This commit is contained in:
lisk77 2025-04-18 15:01:22 +02:00
parent fd8cf1f278
commit 45fffba528
4 changed files with 11 additions and 12 deletions

View file

@ -250,7 +250,7 @@ impl App {
pollster::block_on(async { pollster::block_on(async {
let event_loop = EventLoop::new().unwrap(); let event_loop = EventLoop::new().unwrap();
let window = Arc::new(Self::create_window(self.title.clone(), &self.icon, &self.size ,&event_loop)); let window = Arc::new(Self::create_window(self.title.clone(), &self.icon, &self.size ,&event_loop));
let mut renderer = R::new(window.clone(), self.clear_color.clone()).await; let mut renderer = R::new(window.clone(), self.clear_color.clone());
info!("Renderer created! ({})", type_name::<R>()); info!("Renderer created! ({})", type_name::<R>());
info!("Setting up!"); info!("Setting up!");

View file

@ -14,4 +14,5 @@ bytemuck = { version = "1.16", features = [ "derive" ] }
cgmath = "0.18" cgmath = "0.18"
wgpu = { version = "22.0", features = ["glsl", "wgsl", "naga-ir"]} wgpu = { version = "22.0", features = ["glsl", "wgsl", "naga-ir"]}
winit = { version = "0.29", features = ["rwh_05"] } winit = { version = "0.29", features = ["rwh_05"] }
chrono = "0.4.40" chrono = "0.4.40"
pollster = "0.3"

View file

@ -4,7 +4,7 @@ use winit::window::Window;
use comet_colors::Color; use comet_colors::Color;
pub trait Renderer: Sized + Send + Sync { pub trait Renderer: Sized + Send + Sync {
async fn new(window: Arc<Window>, clear_color: Option<impl Color>) -> Self; fn new(window: Arc<Window>, clear_color: Option<impl Color>) -> Self;
fn size(&self) -> PhysicalSize<u32>; fn size(&self) -> PhysicalSize<u32>;
fn resize(&mut self, new_size: winit::dpi::PhysicalSize<u32>); fn resize(&mut self, new_size: winit::dpi::PhysicalSize<u32>);
fn update(&mut self) -> f32; fn update(&mut self) -> f32;

View file

@ -43,7 +43,7 @@ pub struct Renderer2D<'a> {
} }
impl<'a> Renderer2D<'a> { impl<'a> Renderer2D<'a> {
pub async fn new(window: Arc<Window>, clear_color: Option<impl Color>) -> Renderer2D<'a> { pub fn new(window: Arc<Window>, clear_color: Option<impl Color>) -> Renderer2D<'a> {
let size = PhysicalSize::<u32>::new(1920, 1080); let size = PhysicalSize::<u32>::new(1920, 1080);
let instance = wgpu::Instance::new(wgpu::InstanceDescriptor { let instance = wgpu::Instance::new(wgpu::InstanceDescriptor {
@ -53,16 +53,15 @@ impl<'a> Renderer2D<'a> {
let surface = instance.create_surface(window).unwrap(); let surface = instance.create_surface(window).unwrap();
let adapter = instance let adapter = pollster::block_on(instance
.request_adapter(&wgpu::RequestAdapterOptions { .request_adapter(&wgpu::RequestAdapterOptions {
power_preference: wgpu::PowerPreference::default(), power_preference: wgpu::PowerPreference::default(),
compatible_surface: Some(&surface), compatible_surface: Some(&surface),
force_fallback_adapter: false, force_fallback_adapter: false,
}) }))
.await
.unwrap(); .unwrap();
let (device, queue) = adapter let (device, queue) = pollster::block_on(adapter
.request_device( .request_device(
&wgpu::DeviceDescriptor { &wgpu::DeviceDescriptor {
label: None, label: None,
@ -71,8 +70,7 @@ impl<'a> Renderer2D<'a> {
memory_hints: Default::default(), memory_hints: Default::default(),
}, },
None, // Trace path None, // Trace path
) ))
.await
.unwrap(); .unwrap();
let surface_caps = surface.get_capabilities(&adapter); let surface_caps = surface.get_capabilities(&adapter);
@ -1009,8 +1007,8 @@ impl<'a> Renderer2D<'a> {
} }
impl<'a> Renderer for Renderer2D<'a> { impl<'a> Renderer for Renderer2D<'a> {
async fn new(window: Arc<Window>, clear_color: Option<impl Color>) -> Renderer2D<'a> { fn new(window: Arc<Window>, clear_color: Option<impl Color>) -> Renderer2D<'a> {
Self::new(window, clear_color).await Self::new(window, clear_color)
} }
fn size(&self) -> PhysicalSize<u32> { fn size(&self) -> PhysicalSize<u32> {