pub struct RenderContext {
pub instance: Instance,
pub adapter: Adapter,
pub device: Device,
pub queue: Queue,
/* private fields */
}Expand description
The heart of mew. Bundles all necessary wgpu handles and takes care of constructing buffers, bind groups, & pipelines with a single function call.
Fields§
§instance: Instance§adapter: Adapter§device: Device§queue: QueueImplementations§
Source§impl RenderContext
impl RenderContext
Sourcepub fn new(
instance: Instance,
adapter: Adapter,
device: Device,
queue: Queue,
) -> Self
pub fn new( instance: Instance, adapter: Adapter, device: Device, queue: Queue, ) -> Self
Build a context manually by providing the
wgpu::Instance,
wgpu::Adapter,
wgpu::Device,
and
wgpu::Queue.
You can build this directly , but a RenderContextBuilder takes care of
the annoying stuff for you.
Sourcepub fn new_buffer<BUFFER: MewBuffer>(&self, inner_size: u64) -> BUFFER
pub fn new_buffer<BUFFER: MewBuffer>(&self, inner_size: u64) -> BUFFER
Build a new buffer with an internal capacity to fit its internal type.
The type of buffer it makes is determined by its type parameter.
buffer! { SomeBuffer <InternalType> as STORAGE | COPY_DST }
let buffer: SomeBuffer = context.new_buffer(10);
assert_eq!(buffer.size() as usize, size_of::<InternalType>() * 10);Sourcepub fn new_sampler<SAMPLER: MewSampler>(&self) -> SAMPLER
pub fn new_sampler<SAMPLER: MewSampler>(&self) -> SAMPLER
Build a new sampler.
The type of sampler it makes is determined by its type parameter.
sampler! { SomeSampler as Filtering }
let sampler: SomeSampler = context.new_sampler();Sourcepub fn new_texture<TEXTURE: MewTexture>(
&self,
inner_size: (u32, u32, u32),
format: TextureFormat,
) -> TEXTURE
pub fn new_texture<TEXTURE: MewTexture>( &self, inner_size: (u32, u32, u32), format: TextureFormat, ) -> TEXTURE
Build a new sampler with dimensions and a
wgpu::TextureFormat.
The type of texture it makes is determined by its type parameter.
texture! { SomeTexture { ... } }
let texture: SomeTexture = context.new_texture((64, 64, 1), wgpu::TextureFormat::Rgba8Unorm);Sourcepub fn new_bind_group<BIND: MewBindGroup + 'static>(
&self,
buffers: BIND::BufferSet,
) -> BIND
pub fn new_bind_group<BIND: MewBindGroup + 'static>( &self, buffers: BIND::BufferSet, ) -> BIND
Build a new buffer with a tuple of its bind groups.
The type of bind group it makes is determined by its type parameter.
bind_group! { StuffBindGroup [
0 buffer_one @ VERTEX => SomeBuffer,
1 other_buffer @ FRAGMENT => SomeOtherBuffer,
] }
let bind_group: SomeBindGroup = render_context.new_bind_group((buffer, other_buffer));Sourcepub fn new_pipeline<PIPE: MewPipeline + 'static>(
&self,
surface_fmt: TextureFormat,
shader: &ShaderModule,
vertex_entry: Option<&str>,
fragment_entry: Option<&str>,
) -> PIPE
pub fn new_pipeline<PIPE: MewPipeline + 'static>( &self, surface_fmt: TextureFormat, shader: &ShaderModule, vertex_entry: Option<&str>, fragment_entry: Option<&str>, ) -> PIPE
Build a new pipeline given a
wgpu::TextureFormat,
a
wgpu::ShaderModule
(that you need to construct yourself), and the shader’s entry points (or
None if you only have one entry point).
The type of pipeline it makes is determined by its type parameter.
pipeline! { Pipeline { ... } }
let pipeline: Pipeline = render_context.new_pipeline(wgpu::Rgba8Unorm, shader, Some("vs_main"), None);Trait Implementations§
Auto Trait Implementations§
impl !Freeze for RenderContext
impl !RefUnwindSafe for RenderContext
impl Send for RenderContext
impl !Sync for RenderContext
impl Unpin for RenderContext
impl UnsafeUnpin for RenderContext
impl !UnwindSafe for RenderContext
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
§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.