Renderer

Struct Renderer 

Source
pub struct Renderer { /* private fields */ }
Expand description

Immediate mode renderer.

This object allows one to render graphics into arbitrary vectors, holding any QuantizePixel types. The typical flow of each frame is as follows:

  1. Clear the framebuffer with Renderer::clear_screen.
  2. First pass object rendering with Renderer::render.
  3. Second pass text rendering with Renderer::text_pass.

The end result may look something like this:

   ...   .   .   ..    ...   .  . .  .   .. .    ..  .    .
 ..    .  . .. ... . . ...  ==. . .  .  .     . . ..   ..  .
  .      ..   ..   ==+===================..  ...... . .   ..
 .      .  .   ..##=++==========+=+====+=...   ..... . ..  .
      ..    .    .####===.........+=====.. ..  ..        ...
.  .  .......     .###%%#.Example.=====......     .      . .
. .  . .     .      ####%.........=+== .   ..     .  .    .
    .  . ..  ..   . .##########+=====.. ...  . . . .  .  . .
.  ..  . . . .  ..     ########==+==.=+ .... .  ...    . .
.    . .  .     . .... ..######===. .  +==    .. .. .     ..
  ..  ..    ....    .  ..  ###=== .    .  +++.    .. ..   ..
   .    ... .... .  .. .    .#= .          ..++=... ...  . .
.   .    .  .. ..  .. .. ....  .       ....    .=++..  ... .
 . ...      ...  . ...      ...  . ...      ...  . ++.

Implementations§

Source§

impl Renderer

Source

pub fn clear_screen<T: QuantizePixel>( &mut self, bg: &Background, conv_params: &T::Params, dithering: &mut impl Dithering, buf: &mut Vec<T>, w: usize, h: usize, )

Clears the screen with specified background.

This function must be called before every Renderer::render call, because it sets internal buffers up with specified dimensions.

The buf should be then passed to subsequent renderer calls, without having its dimensions modified beforehand.

Source

pub fn render<T: QuantizePixel, M: Material + ?Sized>( &mut self, camera: &Camera, conv_params: &T::Params, mats: &mut [impl AsMut<M>], objects: &[Object], dithering: &mut impl Dithering, buf: &mut Vec<T>, )

Draws objects on screen.

This function takes a list of objects, their materials, and draws them to given buffer. Note that buf must be first cleared using Renderer::clear_screen function.

Source

pub fn text_pass<T: PixelText + QuantizePixel>( &mut self, objects: &[Object], buf: &mut Vec<T>, )

Draws text on top of rendered objects.

This function takes a list of objects (the identical set, to previously passed to Renderer::render), and draws auxiliary text, if it was set.

Trait Implementations§

Source§

impl Debug for Renderer

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for Renderer

Source§

fn default() -> Renderer

Returns the “default value” for a type. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<SS, SP> SupersetOf<SS> for SP
where SS: SubsetOf<SP>,

Source§

fn to_subset(&self) -> Option<SS>

The inverse inclusion map: attempts to construct self from the equivalent element of its superset. Read more
Source§

fn is_in_subset(&self) -> bool

Checks if self is actually part of its subset T (and can be converted to it).
Source§

fn to_subset_unchecked(&self) -> SS

Use with care! Same as self.to_subset but without any property checks. Always succeeds.
Source§

fn from_subset(element: &SS) -> SP

The inclusion map: converts self to the equivalent element of its superset.
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.