mirror of
https://github.com/lisk77/comet.git
synced 2025-12-12 09:08:49 +00:00
feat(renderer): added scale_factor to the trait to allow checking for scale factors in the event loop
This commit is contained in:
parent
dd89d71565
commit
87f0233066
3 changed files with 32 additions and 7 deletions
|
|
@ -381,6 +381,9 @@ impl App {
|
|||
WindowEvent::Resized(physical_size) => {
|
||||
renderer.resize(*physical_size);
|
||||
}
|
||||
WindowEvent::ScaleFactorChanged { scale_factor, .. } => {
|
||||
renderer.set_scale_factor(*scale_factor);
|
||||
}
|
||||
WindowEvent::RedrawRequested => {
|
||||
window.request_redraw();
|
||||
match renderer.render() {
|
||||
|
|
|
|||
|
|
@ -1,12 +1,15 @@
|
|||
use comet_colors::Color;
|
||||
use std::sync::Arc;
|
||||
use winit::dpi::PhysicalSize;
|
||||
use winit::window::Window;
|
||||
use comet_colors::Color;
|
||||
|
||||
pub trait Renderer: Sized + Send + Sync {
|
||||
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;
|
||||
fn render(&mut self) -> Result<(), wgpu::SurfaceError>;
|
||||
}
|
||||
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 scale_factor(&self) -> f64;
|
||||
fn set_scale_factor(&mut self, scale_factor: f64);
|
||||
fn update(&mut self) -> f32;
|
||||
fn render(&mut self) -> Result<(), wgpu::SurfaceError>;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -26,6 +26,7 @@ pub struct Renderer2D<'a> {
|
|||
queue: wgpu::Queue,
|
||||
config: wgpu::SurfaceConfiguration,
|
||||
size: PhysicalSize<u32>,
|
||||
scale_factor: f64,
|
||||
universal_render_pipeline: wgpu::RenderPipeline,
|
||||
texture_bind_group_layout: wgpu::BindGroupLayout,
|
||||
texture_sampler: wgpu::Sampler,
|
||||
|
|
@ -43,6 +44,7 @@ pub struct Renderer2D<'a> {
|
|||
impl<'a> Renderer2D<'a> {
|
||||
pub fn new(window: Arc<Window>, clear_color: Option<impl Color>) -> Renderer2D<'a> {
|
||||
let size = window.inner_size(); //PhysicalSize::<u32>::new(1920, 1080);
|
||||
let scale_factor = window.scale_factor();
|
||||
|
||||
let instance = wgpu::Instance::new(wgpu::InstanceDescriptor {
|
||||
backends: wgpu::Backends::PRIMARY,
|
||||
|
|
@ -258,6 +260,7 @@ impl<'a> Renderer2D<'a> {
|
|||
queue,
|
||||
config,
|
||||
size,
|
||||
scale_factor,
|
||||
universal_render_pipeline,
|
||||
texture_bind_group_layout,
|
||||
texture_sampler,
|
||||
|
|
@ -294,6 +297,14 @@ impl<'a> Renderer2D<'a> {
|
|||
}
|
||||
}
|
||||
|
||||
pub fn scale_factor(&self) -> f64 {
|
||||
self.scale_factor
|
||||
}
|
||||
|
||||
pub fn set_scale_factor(&mut self, scale_factor: f64) {
|
||||
self.scale_factor = scale_factor
|
||||
}
|
||||
|
||||
pub fn add_draw_call(&mut self, draw_call: String, texture: Texture) {
|
||||
let draw_info = DrawInfo::new(
|
||||
draw_call,
|
||||
|
|
@ -919,6 +930,14 @@ impl<'a> Renderer for Renderer2D<'a> {
|
|||
self.resize(new_size)
|
||||
}
|
||||
|
||||
fn scale_factor(&self) -> f64 {
|
||||
self.scale_factor()
|
||||
}
|
||||
|
||||
fn set_scale_factor(&mut self, scale_factor: f64) {
|
||||
self.set_scale_factor(scale_factor);
|
||||
}
|
||||
|
||||
fn update(&mut self) -> f32 {
|
||||
self.update()
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue