pub struct Context { /* private fields */ }Expand description
Contains the adapter, device, queue and RenderTarget.
A Context is created to initialize rendering to a window, canvas or
texture.
use renderling::Context;
let ctx = Context::headless(100, 100);Implementations§
Source§impl Context
impl Context
pub fn new( target: RenderTarget, adapter: impl Into<Arc<Adapter>>, device: impl Into<Arc<Device>>, queue: impl Into<Arc<Queue>>, ) -> Self
pub async fn try_new_headless( width: u32, height: u32, backends: Option<Backends>, ) -> Result<Self, ContextError>
pub async fn try_from_raw_window( width: u32, height: u32, backends: Option<Backends>, window: impl Into<SurfaceTarget<'static>>, ) -> Result<Self, ContextError>
pub async fn from_window_async( backends: Option<Backends>, window: Arc<Window>, ) -> Self
Sourcepub fn from_window(backends: Option<Backends>, window: Arc<Window>) -> Self
pub fn from_window(backends: Option<Backends>, window: Arc<Window>) -> Self
Create a new context from a winit::window::Window, blocking until it
is created.
§Panics
Panics if the context cannot be created.
pub fn try_from_raw_window_handle( window_handle: impl Into<SurfaceTarget<'static>>, width: u32, height: u32, backends: Option<Backends>, ) -> Result<Self, ContextError>
pub fn try_from_window( backends: Option<Backends>, window: Arc<Window>, ) -> Result<Self, ContextError>
Sourcepub fn headless(width: u32, height: u32) -> Self
pub fn headless(width: u32, height: u32) -> Self
Create a new headless renderer.
§Panics
This function will panic if an adapter cannot be found. For example this would happen on machines without a GPU.
pub fn get_size(&self) -> UVec2
pub fn set_size(&mut self, size: UVec2)
Sourcepub fn create_texture<P>(
&self,
label: Option<&str>,
img: &ImageBuffer<P, Vec<u8>>,
) -> Result<Texture, TextureError>
pub fn create_texture<P>( &self, label: Option<&str>, img: &ImageBuffer<P, Vec<u8>>, ) -> Result<Texture, TextureError>
Convenience method for creating textures from an image buffer.
pub fn texture_from_wgpu_tex( &self, texture: impl Into<Arc<Texture>>, sampler: Option<SamplerDescriptor<'_>>, ) -> Texture
pub fn get_device(&self) -> &Device
pub fn get_queue(&self) -> &Queue
pub fn get_adapter(&self) -> &Adapter
Sourcepub fn get_adapter_owned(&self) -> Arc<Adapter>
pub fn get_adapter_owned(&self) -> Arc<Adapter>
Returns a the adapter in an owned wrapper.
Sourcepub fn get_device_and_queue_owned(&self) -> (Arc<Device>, Arc<Queue>)
pub fn get_device_and_queue_owned(&self) -> (Arc<Device>, Arc<Queue>)
Returns a pair of the device and queue in an owned wrapper.
pub fn get_render_target(&self) -> &RenderTarget
Sourcepub fn get_next_frame(&self) -> Result<Frame, ContextError>
pub fn get_next_frame(&self) -> Result<Frame, ContextError>
Get the next frame from the render target.
A surface context (window or canvas) will return the next swapchain texture.
A headless context will return the underlying headless texture.
Errs if the render target is a surface and there was an error getting the next swapchain texture. This can happen if the frame has already been acquired.
Sourcepub fn set_default_atlas_texture_size(&self, size: impl Into<UVec3>) -> &Self
pub fn set_default_atlas_texture_size(&self, size: impl Into<UVec3>) -> &Self
Set the default texture size for any atlas.
- Width is
size.xand must be a power of two. - Height is
size.y, must matchsize.xand must be a power of two. - Layers is
size.zand must be two or greater.
§Panics
Will panic if the above conditions are not met.
Sourcepub fn with_default_atlas_texture_size(self, size: impl Into<UVec3>) -> Self
pub fn with_default_atlas_texture_size(self, size: impl Into<UVec3>) -> Self
Set the default texture size for any atlas.
- Width is
size.xand must be a power of two. - Height is
size.y, must matchsize.xand must be a power of two. - Layers is
size.zand must be greater than zero.
§Panics
Will panic if the above conditions are not met.
Auto Trait Implementations§
impl !Freeze for Context
impl !RefUnwindSafe for Context
impl Send for Context
impl Sync for Context
impl Unpin for Context
impl !UnwindSafe for Context
Blanket Implementations§
§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
§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> DowncastSync for T
impl<T> DowncastSync for T
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