Expand description
A shared layer for window-based backends (software, GL, wgpu).
§Architecture
Backend fuses input (poll_event/
push_event) and output (draw_layers/flush/…), which fits a
terminal process but not a window: there, an event loop owns input and a
renderer owns output. This crate splits the two apart and reassembles
them into one Backend:
┌─────────────────────────────┐
│ event loop (winit or │
│ a custom driver) │
└──────────────┬───────────────┘
translated events
│
v
┌────────────────────────────────────────────────────┐
│ WindowBackend<P: Presenter> │
│ (implements Backend: owns the input event queue, │
│ delegates output to P) │
└───────────────────────┬──────────────────────────────┘
│ draw / flush / resize / present
v
┌───────────────────────────────┐
│ P: Presenter │
│ (retroglyph-software today; │
│ wgpu/GL renderers planned) │
└───────────────────────────────┘Presenteris the output half: rasterization plus the surface lifecycle (init_surface/resize_surface/present/cell_size). Renderer crates implement only this trait.WindowBackend<P: Presenter>implementsBackendgenerically, holding the input event queue and delegating output toP.- The
winitmodule (feature-gated, see below) drives the event loop that fills that queue and callsPresenter::presenteach frame.
§Feature flags
Presenter, WindowBackend, and WindowHandle depend only on
raw-window-handle and are always available. The
winit feature (default on) additionally provides the winit module:
the event loop, event translation, and the run_windowed/run_app
drivers. Disable it to implement or drive Presenter with a different
windowing library (SDL2, tao, a custom loop) without pulling in winit.
Re-exports§
pub use backend::WindowBackend;pub use presenter::Presenter;pub use presenter::WindowHandle;pub use raw_window_handle;
Modules§
- backend
- The generic
Backendfor windowed presenters.WindowBackend: the genericBackendimplementation for windowed presenters. - presenter
- The
Presentertrait andWindowHandle. ThePresentertrait: what a renderer crate implements to rasterize a grid and present it to a window surface. - winit
- The winit event loop, event translation, and app drivers. Everything winit-specific in this crate: the event loop, event translation, and the windowed app drivers.