[−][src]Trait riddle_renderer_wgpu::ext::RendererWGPUDevice
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>
&self,
f: &mut dyn FnMut(&SwapChainFrame) -> Result<(), RendererError>
) -> Result<(), RendererError>
Provide a reference to the current swap chain frame for use by the renderer.
Implementors
impl RendererWGPUDevice for WindowWGPUDevice
[src]
fn device(&self) -> &Device
[src]
fn queue(&self) -> &Queue
[src]
fn viewport_dimensions(&self) -> Vector2<f32>
[src]
fn begin_frame(&self) -> Result<(), RendererError>
[src]
fn end_frame(&self)
[src]
fn with_frame(
&self,
f: &mut dyn FnMut(&SwapChainFrame) -> Result<(), RendererError>
) -> Result<(), RendererError>
[src]
&self,
f: &mut dyn FnMut(&SwapChainFrame) -> Result<(), RendererError>
) -> Result<(), RendererError>