mirror of
https://gitlab.com/veloren/veloren.git
synced 2024-08-30 18:12:32 +00:00
Slightly improve render target creation code
Former-commit-id: 7ce92cce35834b006df9dacb4b4dd3e88d603b4e
This commit is contained in:
parent
821ab80c5b
commit
209b29a870
@ -112,14 +112,8 @@ impl Renderer {
|
||||
)?;
|
||||
|
||||
let dims = win_color_view.get_dimensions();
|
||||
let d_dims = win_depth_view.get_dimensions();
|
||||
|
||||
let (_, tgt_color_res, tgt_color_view) = factory
|
||||
.create_render_target::<TgtColorFmt>(dims.0, dims.1)
|
||||
.map_err(RenderError::CombinedError)?;
|
||||
let (_, _, tgt_depth_view) = factory
|
||||
.create_depth_stencil(d_dims.0, d_dims.1)
|
||||
.map_err(RenderError::CombinedError)?;
|
||||
let (tgt_color_view, tgt_depth_view, tgt_color_res) =
|
||||
Self::create_rt_views(&mut factory, (dims.0, dims.1))?;
|
||||
|
||||
let sampler = factory.create_sampler_linear();
|
||||
|
||||
@ -155,30 +149,32 @@ impl Renderer {
|
||||
(&mut self.win_color_view, &mut self.win_depth_view)
|
||||
}
|
||||
|
||||
/// Resize internal render targets to match window render target dimensions
|
||||
pub fn on_resize(&mut self) -> Result<(), RenderError> {
|
||||
let dims = self.win_color_view.get_dimensions();
|
||||
let d_dims = self.win_depth_view.get_dimensions();
|
||||
|
||||
if dims.0 > 0 && dims.1 > 0 {
|
||||
let (_, tgt_color_res, tgt_color_view) = self
|
||||
.factory
|
||||
.create_render_target::<TgtColorFmt>(dims.0, dims.1)
|
||||
.map_err(RenderError::CombinedError)?;
|
||||
self.tgt_color_res = tgt_color_res;
|
||||
self.tgt_color_view = tgt_color_view;
|
||||
}
|
||||
|
||||
if d_dims.0 > 0 && d_dims.1 > 0 {
|
||||
let (_, _, tgt_depth_view) = self
|
||||
.factory
|
||||
.create_depth_stencil(d_dims.0, d_dims.1)
|
||||
.map_err(RenderError::CombinedError)?;
|
||||
self.tgt_depth_view = tgt_depth_view;
|
||||
}
|
||||
let (tgt_color_view, tgt_depth_view, tgt_color_res) =
|
||||
Self::create_rt_views(&mut self.factory, (dims.0, dims.1))?;
|
||||
self.tgt_color_res = tgt_color_res;
|
||||
self.tgt_color_view = tgt_color_view;
|
||||
self.tgt_depth_view = tgt_depth_view;
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
||||
fn create_rt_views(
|
||||
factory: &mut gfx_device_gl::Factory,
|
||||
size: (u16, u16),
|
||||
) -> Result<(TgtColorView, TgtDepthView, TgtColorRes), RenderError> {
|
||||
let (_, tgt_color_res, tgt_color_view) = factory
|
||||
.create_render_target::<TgtColorFmt>(size.0, size.1)
|
||||
.map_err(RenderError::CombinedError)?;;
|
||||
let tgt_depth_view = factory
|
||||
.create_depth_stencil_view_only::<TgtDepthFmt>(size.0, size.1)
|
||||
.map_err(RenderError::CombinedError)?;;
|
||||
Ok((tgt_color_view, tgt_depth_view, tgt_color_res))
|
||||
}
|
||||
|
||||
/// Get the resolution of the render target.
|
||||
pub fn get_resolution(&self) -> Vec2<u16> {
|
||||
Vec2::new(
|
||||
|
Loading…
Reference in New Issue
Block a user