Skip to content

Support choosing a Renderer at runtime #1199

@hecrj

Description

@hecrj

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_renderer on top of iced_wgpu and iced_glow and implementing a Renderer that picks its internal backend at runtime.
  • iced_shell on top of iced_winit andiced_glutin implementing 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.

Metadata

Metadata

Assignees

Type

No type

Projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions