[][src]Trait riddle_renderer_wgpu::ext::RendererWGPUDevice

pub trait RendererWGPUDevice: Send + Sync {
    fn device(&self) -> &Device;
fn queue(&self) -> &Queue;
fn begin_frame(&self) -> Result<(), RendererError>;
fn end_frame(&self);
fn viewport_dimensions(&self) -> Vector2<f32>;
fn with_frame(
        &self,
        f: &mut dyn FnMut(&SwapChainFrame) -> Result<(), RendererError>
    ) -> Result<(), RendererError>; }

A Renderer compatible WGPU device.

A default implementation exists for riddle_platform_winit::Window in WindowWGPUDevice.

The application may implement this trait to layer the renderer on top of custom WGPU renderer.

Example

use std::sync::Arc;
use riddle::{common::Color, platform::*, renderer::{ext::*, *}, *};

#[derive(Clone)]
struct ACustomRenderer {
    // [..]
}

impl ACustomRenderer {
    // [..]
}

impl RendererWGPUDevice for ACustomRenderer {
    // [..]
}

fn main() -> Result<(), RiddleError> {
    let rdl =  RiddleLib::new()?;
    let window = WindowBuilder::new().build(rdl.context())?;

    let custom_renderer = ACustomRenderer::new();

    let renderer = Renderer::new_from_device(Box::new(custom_renderer.clone()))?;

    rdl.run(move |rdl| match rdl.event() {
        Event::Platform(PlatformEvent::WindowClose(_)) => rdl.quit(),
        Event::ProcessFrame => {
            custom_renderer.start_render();
            custom_renderer.render_3d_scene();

            let mut render_ctx = renderer.begin_render().unwrap();
            render_ctx.clear(Color::RED);
            render_ctx.present();

            custom_renderer.end_render();
        }
        _ => (),
    })
}

Required methods

fn device(&self) -> &Device

fn queue(&self) -> &Queue

fn begin_frame(&self) -> Result<(), RendererError>

Called when the Renderer begins rendering to the swap chain frame.

Invoked through Renderer::begin_render

fn end_frame(&self)

When the renderer is done renderering to the swap chain frame.

Invoked by a RenderContext::present call on the context returned from Renderer::begin_render.

fn viewport_dimensions(&self) -> Vector2<f32>

The viewport dimensions of the swapchain frame.

This controls the projection matrix used by the sprite renderer.

fn with_frame(
    &self,
    f: &mut dyn FnMut(&SwapChainFrame) -> Result<(), RendererError>
) -> Result<(), RendererError>

Provide a reference to the current swap chain frame for use by the renderer.

Loading content...

Implementors

impl RendererWGPUDevice for WindowWGPUDevice[src]

Loading content...