| 82 | |
| 83 | impl ViewerRenderer { |
| 84 | pub fn new(display: Display, renderer: Renderer) -> Self { |
| 85 | let vertex_buffer = VertexBuffer::new(&display, VERTICES).unwrap(); |
| 86 | let image_program = Program::from_source(&display, IMAGE_VERT, IMAGE_FRAG, None).unwrap(); |
| 87 | |
| 88 | let size = display.gl_window().window().inner_size(); |
| 89 | let image_size = Vec2::new(size.width as usize, size.height as usize); |
| 90 | let texture = |
| 91 | SrgbTexture2d::empty(&display, image_size.x as u32, image_size.y as u32).unwrap(); |
| 92 | |
| 93 | let mut imgui_ctx = imgui::Context::create(); |
| 94 | imgui_ctx.set_ini_filename(None); |
| 95 | |
| 96 | let mut platform = WinitPlatform::init(&mut imgui_ctx); |
| 97 | { |
| 98 | let gl_window = display.gl_window(); |
| 99 | let window = gl_window.window(); |
| 100 | platform.attach_window(imgui_ctx.io_mut(), window, HiDpiMode::Rounded); |
| 101 | } |
| 102 | |
| 103 | let hidpi_factor = platform.hidpi_factor(); |
| 104 | imgui_ctx.io_mut().font_global_scale = (1.0 / hidpi_factor) as f32; |
| 105 | |
| 106 | let imgui_renderer = |
| 107 | imgui_glium_renderer::Renderer::init(&mut imgui_ctx, &display).unwrap(); |
| 108 | |
| 109 | Self { |
| 110 | vertex_buffer, |
| 111 | image_program, |
| 112 | image_size, |
| 113 | renderer, |
| 114 | imgui_ctx, |
| 115 | texture, |
| 116 | display, |
| 117 | imgui_renderer, |
| 118 | platform, |
| 119 | } |
| 120 | } |
| 121 | |
| 122 | pub fn process_event( |
| 123 | &mut self, |