pub struct RenderContextBuilder { /* private fields */ }Expand description
A builder abstraction for making a RenderContext.
It’s possible to make one directly with RenderContext::new, but you need
to provide everything manually. This builder takes care of initilizing the
wgpu handles for you with default values.
Implementations§
Source§impl RenderContextBuilder
impl RenderContextBuilder
Sourcepub fn new_with_instance(instance: Instance) -> Self
pub fn new_with_instance(instance: Instance) -> Self
Prepare a new builder, providing your own
wgpu::Instance.
Sourcepub fn new_with_backends(backends: Backends) -> Self
pub fn new_with_backends(backends: Backends) -> Self
Prepare a new builder, specifying the
wgpu::Backends
you want to support.
The
wgpu::Instance
will be built later when needed with these backends.
Sourcepub fn with_compatible_surface(
&mut self,
surface: Option<Arc<Surface<'static>>>,
) -> &mut Self
pub fn with_compatible_surface( &mut self, surface: Option<Arc<Surface<'static>>>, ) -> &mut Self
Specify a compatible surface for the
wgpu::Adapter.
This is required by WebGL and really annoying to set up, see
winitutils::DeferredContext.
Sourcepub fn with_features(&mut self, features: Features) -> &mut Self
pub fn with_features(&mut self, features: Features) -> &mut Self
Specify the
wgpu::Features
the
wgpu::Device
will require.
Sourcepub fn with_limits(&mut self, limits: Limits) -> &mut Self
pub fn with_limits(&mut self, limits: Limits) -> &mut Self
Specify the
wgpu::Limits
the
wgpu::Device
will require.
On web, this is automatically set to
wgpu::Limits::downlevel_webgl2_defaults,
but is overridable if you really want to.
On native, it’s just Default::default.
Sourcepub fn get_instance(&mut self) -> Instance
pub fn get_instance(&mut self) -> Instance
Get a copy of the
wgpu::Instance
that’ll be used to get the rest of the wgpu handles.
If this wasn’t provided when building, it’ll be generated now.
Sourcepub async fn build(self) -> Result<RenderContext, BuildContextError>
pub async fn build(self) -> Result<RenderContext, BuildContextError>
Try to build the RenderContext with the configured settings.
This function is async because
wgpu::Instance::request_adapter
and
wgpu::Adapter::request_device
are for some reason.
On native, you can use Self::build_poll. On web, you need to spawn a JS
thread to await this, or use Self::deferred which does this internally.
Sourcepub fn build_poll(self) -> Result<RenderContext, BuildContextError>
Available on crate features poll only.
pub fn build_poll(self) -> Result<RenderContext, BuildContextError>
poll only.Try to build the RenderContext with the configured settings, but block
on the result with pollster.
Sourcepub fn deferred(self) -> DeferredContext
Available on crate feature winit and (crate features webgl or poll) only.
pub fn deferred(self) -> DeferredContext
winit and (crate features webgl or poll) only.Put this builder into a winitutils::DeferredContext, which on web will
automate running Self::with_compatible_surface when a window is created
and build the RenderContext as soon as it can.
Trait Implementations§
Source§impl Clone for RenderContextBuilder
impl Clone for RenderContextBuilder
Source§fn clone(&self) -> RenderContextBuilder
fn clone(&self) -> RenderContextBuilder
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreAuto Trait Implementations§
impl Freeze for RenderContextBuilder
impl !RefUnwindSafe for RenderContextBuilder
impl Send for RenderContextBuilder
impl Sync for RenderContextBuilder
impl Unpin for RenderContextBuilder
impl UnsafeUnpin for RenderContextBuilder
impl !UnwindSafe for RenderContextBuilder
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> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§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.