pub struct RenderContext<'w> { /* private fields */ }
Expand description
The context with all information required to interact with the GPU.
The RenderDevice
is used to create render resources and the
the CommandEncoder
is used to record a series of GPU operations.
Implementations§
Source§impl<'w> RenderContext<'w>
impl<'w> RenderContext<'w>
Sourcepub fn new(
render_device: RenderDevice,
adapter_info: AdapterInfo,
diagnostics_recorder: Option<DiagnosticsRecorder>,
) -> Self
pub fn new( render_device: RenderDevice, adapter_info: AdapterInfo, diagnostics_recorder: Option<DiagnosticsRecorder>, ) -> Self
Creates a new RenderContext
from a RenderDevice
.
Sourcepub fn render_device(&self) -> &RenderDevice
pub fn render_device(&self) -> &RenderDevice
Gets the underlying RenderDevice
.
Sourcepub fn diagnostic_recorder(&self) -> impl RecordDiagnostics
pub fn diagnostic_recorder(&self) -> impl RecordDiagnostics
Gets the diagnostics recorder, used to track elapsed time and pipeline statistics of various render and compute passes.
Sourcepub fn command_encoder(&mut self) -> &mut CommandEncoder
pub fn command_encoder(&mut self) -> &mut CommandEncoder
Gets the current CommandEncoder
.
Sourcepub fn begin_tracked_render_pass<'a>(
&'a mut self,
descriptor: RenderPassDescriptor<'_>,
) -> TrackedRenderPass<'a>
pub fn begin_tracked_render_pass<'a>( &'a mut self, descriptor: RenderPassDescriptor<'_>, ) -> TrackedRenderPass<'a>
Creates a new TrackedRenderPass
for the context,
configured using the provided descriptor
.
Sourcepub fn add_command_buffer(&mut self, command_buffer: CommandBuffer)
pub fn add_command_buffer(&mut self, command_buffer: CommandBuffer)
Append a CommandBuffer
to the command buffer queue.
If present, this will flush the currently unflushed CommandEncoder
into a CommandBuffer
into the queue before appending the provided
buffer.
Sourcepub fn add_command_buffer_generation_task(
&mut self,
task: impl FnOnce(RenderDevice) -> CommandBuffer + 'w + Send,
)
pub fn add_command_buffer_generation_task( &mut self, task: impl FnOnce(RenderDevice) -> CommandBuffer + 'w + Send, )
Append a function that will generate a CommandBuffer
to the
command buffer queue, to be ran later.
If present, this will flush the currently unflushed CommandEncoder
into a CommandBuffer
into the queue before appending the provided
buffer.
Sourcepub fn finish(
self,
) -> (Vec<CommandBuffer>, RenderDevice, Option<DiagnosticsRecorder>)
pub fn finish( self, ) -> (Vec<CommandBuffer>, RenderDevice, Option<DiagnosticsRecorder>)
Finalizes and returns the queue of CommandBuffer
s.
This function will wait until all command buffer generation tasks are complete by running them in parallel (where supported).
The CommandBuffer
s will be returned in the order that they were added.
Auto Trait Implementations§
impl<'w> Freeze for RenderContext<'w>
impl<'w> !RefUnwindSafe for RenderContext<'w>
impl<'w> Send for RenderContext<'w>
impl<'w> !Sync for RenderContext<'w>
impl<'w> Unpin for RenderContext<'w>
impl<'w> !UnwindSafe for RenderContext<'w>
Blanket Implementations§
Source§impl<T, U> AsBindGroupShaderType<U> for T
impl<T, U> AsBindGroupShaderType<U> for T
Source§fn as_bind_group_shader_type(&self, _images: &RenderAssets<GpuImage>) -> U
fn as_bind_group_shader_type(&self, _images: &RenderAssets<GpuImage>) -> U
T
ShaderType
for self
. When used in AsBindGroup
derives, it is safe to assume that all images in self
exist.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> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§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
.Source§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
.Source§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.Source§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.Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§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 more