pebble/rendering/
active_frame.rs1use crate::prelude::{Backend, ColorTarget, FrameOperations, Pass};
2
3pub struct ActiveFrame<'a, B: Backend> {
4 pub(crate) frame: &'a mut B::Frame,
5}
6
7impl<'a, B: Backend> ActiveFrame<'a, B> {
8 pub fn render_context(
10 &mut self,
11 clear: [f32; 4],
12 ) -> <B::Frame as FrameOperations>::Context<'_> {
13 self.begin_pass(Pass {
14 colors: &[ColorTarget::Default { clear: Some(clear) }],
15 depth: None,
16 })
17 }
18
19 pub fn begin_pass(
21 &mut self,
22 pass: Pass<B::Frame>,
23 ) -> <B::Frame as FrameOperations>::Context<'_> {
24 self.frame.begin(pass)
26 }
27}
28
29impl<'a, B: Backend> std::ops::Deref for ActiveFrame<'a, B> {
30 type Target = B::Frame;
31 fn deref(&self) -> &Self::Target {
32 self.frame
33 }
34}
35
36impl<'a, B: Backend> std::ops::DerefMut for ActiveFrame<'a, B> {
37 fn deref_mut(&mut self) -> &mut Self::Target {
38 self.frame
39 }
40}