crystal_api/
render_target.rs1use std::sync::Arc;
2
3use crate::{debug::log, errors::GraphicsResult, proxies::RenderTargetProxy, texture::Texture};
4
5pub struct RenderTarget {
7 pub(crate) inner: Arc<dyn RenderTargetProxy>,
8}
9
10impl RenderTarget {
11 pub(crate) fn new(proxy: Arc<dyn RenderTargetProxy>) -> Self {
12 Self { inner: proxy }
13 }
14
15 pub fn inherit(
17 &self,
18 extent: [u32; 2],
19 anisotropy_texels: f32,
20 msaa_samples: u8,
21 ) -> GraphicsResult<(Self, Texture)> {
22 log!(
23 "creating render target [ extent: {}x{} ]",
24 extent[0],
25 extent[1]
26 );
27
28 let (render_target, texture) =
29 self.inner
30 .create_render_target(extent, anisotropy_texels, msaa_samples)?;
31
32 Ok((
33 Self {
34 inner: render_target,
35 },
36 Texture::new(texture),
37 ))
38 }
39}