pub struct Renderer {
pipeline: RenderPipeline,
index_buffer: SlicedBuffer,
vertex_buffer: SlicedBuffer,
uniform_buffer: Buffer,
previous_uniform_buffer_content: UniformBuffer,
uniform_bind_group: BindGroup,
texture_bind_group_layout: BindGroupLayout,
textures: HashMap<TextureId, Texture, RandomState>,
next_user_texture_id: u64,
samplers: HashMap<TextureOptions, Sampler, RandomState>,
dithering: bool,
pub callback_resources: TypeMap,
}
Expand description
Renderer for a egui based GUI.
Fields§
§pipeline: RenderPipeline
§index_buffer: SlicedBuffer
§vertex_buffer: SlicedBuffer
§uniform_buffer: Buffer
§previous_uniform_buffer_content: UniformBuffer
§uniform_bind_group: BindGroup
§texture_bind_group_layout: BindGroupLayout
§textures: HashMap<TextureId, Texture, RandomState>
§next_user_texture_id: u64
§samplers: HashMap<TextureOptions, Sampler, RandomState>
§dithering: bool
§callback_resources: TypeMap
Storage for resources shared with all invocations of CallbackTrait
’s methods.
See also CallbackTrait
.
Implementations§
§impl Renderer
impl Renderer
pub fn new(
device: &Device,
output_color_format: TextureFormat,
output_depth_format: Option<TextureFormat>,
msaa_samples: u32,
dithering: bool
) -> Renderer
pub fn new( device: &Device, output_color_format: TextureFormat, output_depth_format: Option<TextureFormat>, msaa_samples: u32, dithering: bool ) -> Renderer
Creates a renderer for a egui UI.
output_color_format
should preferably be wgpu::TextureFormat::Rgba8Unorm
or
wgpu::TextureFormat::Bgra8Unorm
, i.e. in gamma-space.
pub fn render(
&self,
render_pass: &mut RenderPass<'static>,
paint_jobs: &[ClippedPrimitive],
screen_descriptor: &ScreenDescriptor
)
pub fn render( &self, render_pass: &mut RenderPass<'static>, paint_jobs: &[ClippedPrimitive], screen_descriptor: &ScreenDescriptor )
Executes the egui renderer onto an existing wgpu renderpass.
Note that the lifetime of render_pass
is 'static
which requires a call to wgpu::RenderPass::forget_lifetime
.
This allows users to pass resources that live outside of the callback resources to the render pass.
The render pass internally keeps all referenced resources alive as long as necessary.
The only consequence of forget_lifetime
is that any operation on the parent encoder will cause a runtime error
instead of a compile time error.
pub fn update_texture(
&mut self,
device: &Device,
queue: &Queue,
id: TextureId,
image_delta: &ImageDelta
)
pub fn update_texture( &mut self, device: &Device, queue: &Queue, id: TextureId, image_delta: &ImageDelta )
Should be called before Self::render
.
pub fn free_texture(&mut self, id: &TextureId)
pub fn texture(&self, id: &TextureId) -> Option<&Texture>
pub fn texture(&self, id: &TextureId) -> Option<&Texture>
Get the WGPU texture and bind group associated to a texture that has been allocated by egui.
This could be used by custom paint hooks to render images that have been added through
epaint::Context::load_texture
.
pub fn register_native_texture(
&mut self,
device: &Device,
texture: &TextureView,
texture_filter: FilterMode
) -> TextureId
pub fn register_native_texture( &mut self, device: &Device, texture: &TextureView, texture_filter: FilterMode ) -> TextureId
Registers a wgpu::Texture
with a epaint::TextureId
.
This enables the application to reference the texture inside an image ui element.
This effectively enables off-screen rendering inside the egui UI. Texture must have
the texture format wgpu::TextureFormat::Rgba8UnormSrgb
.
pub fn update_egui_texture_from_wgpu_texture(
&mut self,
device: &Device,
texture: &TextureView,
texture_filter: FilterMode,
id: TextureId
)
pub fn update_egui_texture_from_wgpu_texture( &mut self, device: &Device, texture: &TextureView, texture_filter: FilterMode, id: TextureId )
Registers a wgpu::Texture
with an existing epaint::TextureId
.
This enables applications to reuse epaint::TextureId
s.
pub fn register_native_texture_with_sampler_options(
&mut self,
device: &Device,
texture: &TextureView,
sampler_descriptor: SamplerDescriptor<'_>
) -> TextureId
pub fn register_native_texture_with_sampler_options( &mut self, device: &Device, texture: &TextureView, sampler_descriptor: SamplerDescriptor<'_> ) -> TextureId
Registers a wgpu::Texture
with a epaint::TextureId
while also accepting custom
wgpu::SamplerDescriptor
options.
This allows applications to specify individual minification/magnification filters as well as custom mipmap and tiling options.
The texture must have the format wgpu::TextureFormat::Rgba8UnormSrgb
.
Any compare function supplied in the wgpu::SamplerDescriptor
will be ignored.
pub fn update_egui_texture_from_wgpu_texture_with_sampler_options(
&mut self,
device: &Device,
texture: &TextureView,
sampler_descriptor: SamplerDescriptor<'_>,
id: TextureId
)
pub fn update_egui_texture_from_wgpu_texture_with_sampler_options( &mut self, device: &Device, texture: &TextureView, sampler_descriptor: SamplerDescriptor<'_>, id: TextureId )
Registers a wgpu::Texture
with an existing epaint::TextureId
while also accepting custom
wgpu::SamplerDescriptor
options.
This allows applications to reuse epaint::TextureId
s created with custom sampler options.
pub fn update_buffers(
&mut self,
device: &Device,
queue: &Queue,
encoder: &mut CommandEncoder,
paint_jobs: &[ClippedPrimitive],
screen_descriptor: &ScreenDescriptor
) -> Vec<CommandBuffer>
pub fn update_buffers( &mut self, device: &Device, queue: &Queue, encoder: &mut CommandEncoder, paint_jobs: &[ClippedPrimitive], screen_descriptor: &ScreenDescriptor ) -> Vec<CommandBuffer>
Uploads the uniform, vertex and index data used by the renderer.
Should be called before Self::render
.
Returns all user-defined command buffers gathered from CallbackTrait::prepare
& CallbackTrait::finish_prepare
callbacks.
Auto Trait Implementations§
impl !Freeze for Renderer
impl !RefUnwindSafe for Renderer
impl Send for Renderer
impl Sync for Renderer
impl Unpin for Renderer
impl !UnwindSafe for Renderer
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
source§impl<T> CheckedAs for T
impl<T> CheckedAs for T
source§fn checked_as<Dst>(self) -> Option<Dst>where
T: CheckedCast<Dst>,
fn checked_as<Dst>(self) -> Option<Dst>where
T: CheckedCast<Dst>,
source§impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere
Src: CheckedCast<Dst>,
impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere
Src: CheckedCast<Dst>,
source§fn checked_cast_from(src: Src) -> Option<Dst>
fn checked_cast_from(src: Src) -> Option<Dst>
§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
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
.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &Any
’s vtable from &Trait
’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &mut Any
’s vtable from &mut Trait
’s.§impl<T> DowncastSync for T
impl<T> DowncastSync for T
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
source§impl<T> IntoEither for T
impl<T> IntoEither for T
source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moresource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moresource§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T
in a tonic::Request