1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
#![feature(arc_new_cyclic)]

/*!

Riddle simple sprite-based renderer built on `wgpu`.

The renderer can be used by itself as the only renderer in your application,
or it can be constructed on top of existing WGPU devices to provide simple
2D rendering.

# Riddle Example

The **recommended** way to use this crate is through the main `riddle` crate.
Riddle exposes this crate through `riddle::renderer`. The following example
lets this crate take full ownership over creating the WGPU device.

```no_run
use riddle::{common::Color, platform::*, renderer::*, *};

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

    rdl.run(move |rdl| {
        match rdl.event() {
            Event::Platform(PlatformEvent::WindowClose(_)) => rdl.quit(),
            Event::ProcessFrame => {
                let mut render_ctx = renderer.begin_render().unwrap();
                render_ctx.clear(Color::RED);
                render_ctx.present();
            },
            _ => ()
         }
    })
}
```

# Direct Usage

To use this crate directly see [`ext::RendererWGPUDevice`] for how to use the renderer
with custom WGPU devices.

*/

mod buffered_renderer;
mod error;
mod render_context;
mod renderer;
mod shader;
mod sprite;
mod sprite_atlas;
mod sprite_render_target;
mod swap_chain_target;
mod texture;
mod vertex;

pub mod ext;

pub use error::*;
pub use render_context::*;
pub use renderer::*;
pub use sprite::*;
pub use sprite_atlas::*;
pub use sprite_render_target::*;
pub use texture::*;

use buffered_renderer::*;
use riddle_common::*;
use shader::*;
use swap_chain_target::*;
use vertex::*;

use riddle_image as image;
use riddle_math as math;
use riddle_platform_winit as platform;

type Result<R> = std::result::Result<R, RendererError>;