Struct egui_wgpu::winit::Painter

source ·
pub struct Painter { /* private fields */ }
Expand description

Everything you need to paint egui with wgpu on winit.

Alternatively you can use crate::Renderer directly.

NOTE: all egui viewports share the same painter.

Implementations§

source§

impl Painter

source

pub fn new( configuration: WgpuConfiguration, msaa_samples: u32, depth_format: Option<TextureFormat>, support_transparent_backbuffer: bool, ) -> Self

Manages wgpu state, including surface state, required to render egui.

Only the wgpu::Instance is initialized here. Device selection and the initialization of render + surface state is deferred until the painter is given its first window target via set_window(). (Ensuring that a device that’s compatible with the native window is chosen)

Before calling paint_and_update_textures() a wgpu::Surface must be initialized (and corresponding render state) by calling set_window() once you have a winit::window::Window with a valid .raw_window_handle() associated.

source

pub fn render_state(&self) -> Option<RenderState>

Get the RenderState.

Will return None if the render state has not been initialized yet.

source

pub async fn set_window( &mut self, viewport_id: ViewportId, window: Option<Arc<Window>>, ) -> Result<(), WgpuError>

Updates (or clears) the winit::window::Window associated with the Painter

This creates a wgpu::Surface for the given Window (as well as initializing render state if needed) that is used for egui rendering.

This must be called before trying to render via paint_and_update_textures

§Portability

In particular it’s important to note that on Android a it’s only possible to create a window surface between Resumed and Paused lifecycle events, and Winit will panic on attempts to query the raw window handle while paused.

On Android set_window should be called with Some(window) for each Resumed event and None for each Paused event. Currently, on all other platforms set_window may be called with Some(window) as soon as you have a valid winit::window::Window.

§Errors

If the provided wgpu configuration does not match an available device.

source

pub async unsafe fn set_window_unsafe( &mut self, viewport_id: ViewportId, window: Option<&Window>, ) -> Result<(), WgpuError>

Updates (or clears) the winit::window::Window associated with the Painter without taking ownership of the window.

Like set_window except:

§Safety

The user is responsible for ensuring that the window is alive for as long as it is set.

source

pub fn max_texture_side(&self) -> Option<usize>

Returns the maximum texture dimension supported if known

This API will only return a known dimension after set_window() has been called at least once, since the underlying device and render state are initialized lazily once we have a window (that may determine the choice of adapter/device).

source

pub fn on_window_resized( &mut self, viewport_id: ViewportId, width_in_pixels: NonZeroU32, height_in_pixels: NonZeroU32, )

source

pub fn paint_and_update_textures( &mut self, viewport_id: ViewportId, pixels_per_point: f32, clear_color: [f32; 4], clipped_primitives: &[ClippedPrimitive], textures_delta: &TexturesDelta, capture: bool, ) -> (f32, Option<ColorImage>)

Returns two things:

The approximate number of seconds spent on vsync-waiting (if any), and the captures captured screenshot if it was requested.

source

pub fn gc_viewports(&mut self, active_viewports: &ViewportIdSet)

source

pub fn destroy(&mut self)

Auto Trait Implementations§

§

impl !Freeze for Painter

§

impl !RefUnwindSafe for Painter

§

impl !Send for Painter

§

impl !Sync for Painter

§

impl Unpin for Painter

§

impl !UnwindSafe for Painter

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> Downcast<T> for T

source§

fn downcast(&self) -> &T

source§

impl<T> Downcast for T
where T: Any,

source§

fn into_any(self: Box<T>) -> Box<dyn Any>

Convert Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.
source§

fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>

Convert Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be further downcast into Rc<ConcreteType> where ConcreteType implements Trait.
source§

fn as_any(&self) -> &(dyn Any + 'static)

Convert &Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &Any’s vtable from &Trait’s.
source§

fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)

Convert &mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &mut Any’s vtable from &mut Trait’s.
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T> Instrument for T

source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
source§

impl<T> Upcast<T> for T

source§

fn upcast(&self) -> Option<&T>

source§

impl<T> WithSubscriber for T

source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more