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 {
let event_loop = EventLoop::new().unwrap();
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!("Setting up!");

View file

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

View file

@ -4,7 +4,7 @@ use winit::window::Window;
use comet_colors::Color;
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 resize(&mut self, new_size: winit::dpi::PhysicalSize<u32>);
fn update(&mut self) -> f32;

View file

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