pub struct Context(/* private fields */);Expand description
The main dunge context.
Implementations§
Source§impl Context
impl Context
pub fn make_shader<I, S>(&self, render: Render<I, S>) -> Shader<I, S>
pub fn make_set<I, G, const N: usize>(
&self,
shader: &Shader<I, G::Inner>,
set: G,
) -> UniqueSet<G::Inner>where
G: Groups<N>,
Sourcepub fn make_uniform<V>(&self, value: &V) -> Uniform<V>
pub fn make_uniform<V>(&self, value: &V) -> Uniform<V>
Creates a uniform from the given value.
Sourcepub fn make_storage<V>(&self, value: &V) -> Option<Storage<V>>where
V: StorageValue + ?Sized,
pub fn make_storage<V>(&self, value: &V) -> Option<Storage<V>>where
V: StorageValue + ?Sized,
Creates a storage from the given value.
Sourcepub fn make_layer<V, I, S, C>(
&self,
shader: &RenderShader<S, V, I>,
conf: C,
) -> Layer<Input<V, I, S>>
pub fn make_layer<V, I, S, C>( &self, shader: &RenderShader<S, V, I>, conf: C, ) -> Layer<Input<V, I, S>>
Creates a layer for the given render shader.
This method also accepts a config which defines the layer’s properties.
Sourcepub fn make_texture<U>(&self, data: TextureData<'_, U>) -> TextureBuffer<2, U>where
U: TextureUsages,
pub fn make_texture<U>(&self, data: TextureData<'_, U>) -> TextureBuffer<2, U>where
U: TextureUsages,
Creates a 2D texture with the given data.
Sourcepub fn make_sampler(&self, filter: Filter) -> TextureSampler
pub fn make_sampler(&self, filter: Filter) -> TextureSampler
Sourcepub fn make_buffer<U>(&self, data: BufferData<'_, U>) -> Buffer<U>where
U: BufferUsages,
pub fn make_buffer<U>(&self, data: BufferData<'_, U>) -> Buffer<U>where
U: BufferUsages,
Creates a buffer with the given data.
§Examples
use dunge::buffer::BufferData;
let cx = dunge::context().await?;
// Create a buffer filled with four `i32` numbers
let data = BufferData::new(&[1, 2, 3, 4])
.read() // set a usage to read from the buffer
.copy_to(); // set a usage to copy to the buffer
let buffer = cx.make_buffer(data);Sourcepub async fn read<'buf, U>(
&self,
buf: &'buf mut Buffer<U>,
) -> Result<Read<'buf>, ReadFailed>where
U: Read,
pub async fn read<'buf, U>(
&self,
buf: &'buf mut Buffer<U>,
) -> Result<Read<'buf>, ReadFailed>where
U: Read,
Reads from a buffer.
Sourcepub async fn write<'buf, U>(
&self,
buf: &'buf mut Buffer<U>,
) -> Result<Write<'buf>, WriteFailed>where
U: Write,
pub async fn write<'buf, U>(
&self,
buf: &'buf mut Buffer<U>,
) -> Result<Write<'buf>, WriteFailed>where
U: Write,
Writes to a buffer.
Sourcepub async fn shed<F>(&self, f: F)
pub async fn shed<F>(&self, f: F)
Runs a closure that schedules GPU work.
The closure receives a scheduler object capable of scheduling various GPU operations, such as rendering, compute, or data copying. All scheduled operations will begin executing as soon as possible. This function is asynchronous and awaiting it will wait until all scheduled operations have completed.
§Examples
Typical window render loop:
use dunge::Options;
let cx = dunge::context().await?;
let (window, layer, mesh) = ..
loop {
let redraw = window.redraw().await;
cx.shed(|s| {
let opts = Options::default();
s.render(&redraw, opts).layer(&layer).draw(&mesh);
})
.await;
redraw.present();
}See the render function for more details.
pub fn update_group<S, G, const N: usize>( &self, set: &mut UniqueSet<S>, handler: &GroupHandler<G::Inner, N>, group: G, )
pub fn wgpu_info(&self) -> AdapterInfo
Trait Implementations§
Auto Trait Implementations§
impl !RefUnwindSafe for Context
impl !UnwindSafe for Context
impl Freeze for Context
impl Send for Context
impl Sync for Context
impl Unpin for Context
impl UnsafeUnpin for Context
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
Mutably borrows from an owned value. Read more