-
-
Notifications
You must be signed in to change notification settings - Fork 1.4k
Closed
Description
Currently, iced forces users to pick a Renderer implementation at compilation time via feature flags (iced_wgpu, iced_glow, etc.).
However, each renderer has its tradeoffs and GUI applications may want to ship different renderers in the same binary to improve compatibility, performance, and correctness.
iced should allow users to enable renderers via feature flags in a non-exclusive way. Then, users could set the priority for each renderer in the Settings of an Application. For instance:
Application::run(Settings {
renderers: [Renderer::Wgpu, Renderer::Glow],
..Settings::default()
})I believe that in order to achieve this we will need to create a couple of new subcrates:
iced_rendereron top oficed_wgpuandiced_glowand implementing aRendererthat picks its internal backend at runtime.iced_shellon top oficed_winitandiced_glutinimplementing a generic shell that spawns and manages windows for the chosen renderer.
Once we have these, it should be relatively straightforward to change the root crate and extend the Settings struct.
0x192, Sherlock-Holo, vgarleanu, yerke, pikhosh and 3 more