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}