Skip to main content

telar_renderer_core/
renderer.rs

1use crate::{Color, DrawCommand, RendererError};
2
3pub trait RenderBackend {
4    /// Begin a new frame. Note: `scale_factor` and `generation` may be ignored by backends that receive pre-scaled commands (see `SoftwareRenderer::begin_frame`).
5    fn begin_frame(
6        &mut self,
7        width: u32,
8        height: u32,
9        scale_factor: f32,
10        generation: u64,
11    ) -> Result<(), RendererError>;
12    /// Process and present all draw commands for this frame. Must be called exactly once per frame after `begin_frame`.
13    fn render_frame(
14        &mut self,
15        commands: &[DrawCommand],
16        clear_color: Option<Color>,
17    ) -> Result<(), RendererError>;
18    /// The most recently rendered frame as premultiplied RGBA8888 (`[R, G, B, A]` per pixel, row-major), if
19    /// this backend renders to an offscreen target. Windowed/on-screen backends present directly and return
20    /// `None`. Used to read back pixels from a headless render pass.
21    fn read_rgba(&self) -> Option<Vec<u8>> {
22        None
23    }
24}