Fix retina resolution of example_glium

This commit is contained in:
Emil Ernerfeldt 2019-03-16 12:57:44 +01:00
parent 075fa7ab0f
commit 2c2450e67b

View file

@ -182,10 +182,13 @@ impl Painter {
let index_buffer = let index_buffer =
glium::IndexBuffer::new(display, PrimitiveType::TrianglesList, &indices).unwrap(); glium::IndexBuffer::new(display, PrimitiveType::TrianglesList, &indices).unwrap();
let (width, height) = display.get_framebuffer_dimensions(); let pixels_per_point = display.gl_window().get_hidpi_factor() as f32;
let (width_pixels, height_pixels) = display.get_framebuffer_dimensions();
let width_points = width_pixels as f32 / pixels_per_point;
let height_points = height_pixels as f32 / pixels_per_point;
let uniforms = uniform! { let uniforms = uniform! {
u_screen_size: [width as f32, height as f32], u_screen_size: [width_points, height_points],
u_tex_size: [texture.width as f32, texture.height as f32], u_tex_size: [texture.width as f32, texture.height as f32],
u_sampler: &self.texture, u_sampler: &self.texture,
}; };
@ -226,7 +229,7 @@ fn main() {
mouse_pos: None, mouse_pos: None,
screen_size: { screen_size: {
let (width, height) = display.get_framebuffer_dimensions(); let (width, height) = display.get_framebuffer_dimensions();
vec2(width as f32, height as f32) vec2(width as f32, height as f32) / pixels_per_point
}, },
pixels_per_point, pixels_per_point,
}; };
@ -251,7 +254,7 @@ fn main() {
glutin::WindowEvent::CloseRequested => return glutin::ControlFlow::Break, glutin::WindowEvent::CloseRequested => return glutin::ControlFlow::Break,
glutin::WindowEvent::Resized(glutin::dpi::LogicalSize { width, height }) => { glutin::WindowEvent::Resized(glutin::dpi::LogicalSize { width, height }) => {
raw_input.screen_size = vec2(width as f32, height as f32); raw_input.screen_size = vec2(width as f32, height as f32) / pixels_per_point;
if paint(raw_input) { if paint(raw_input) {
return glutin::ControlFlow::Break; return glutin::ControlFlow::Break;
} }