Struct web_glitz_buffer_vec::BufferVec[][src]

pub struct BufferVec<Rc, T> { /* fields omitted */ }
Expand description

A growable GPU buffer for data that may be used to store GPU accessiable data that may be used in WebGlitz tasks.

Elements must implement Copy.

Example

use web_glitz_buffer_vec::BufferVec;
use web_glitz::buffer::UsageHint;

#[derive(web_glitz::derive::Vertex, Clone, Copy)]
struct Vertex {
    #[vertex_attribute(location = 0, format = "Float2_f32")]
    position: [f32; 2],
}

let mut vertices = BufferVec::new(context, UsageHint::StaticDraw);

vertices.update([
    Vertex { position: [-0.5, -0.5] },
    Vertex { position: [0.5, -0.5] },
    Vertex { position: [0.0, 0.5] },
]);

let vertices_view = vertices.as_buffer_view();

assert_eq!(vertices_view.len(), 3);

let render_pass = render_target.create_render_pass(|framebuffer| {
    framebuffer.pipeline_task(&graphics_pipeline, |active_pipeline| {
        active_pipeline.task_builder()
            .bind_vertex_buffers(vertices_view)
            .bind_resources(resources)
            .draw(3, 1)
            .finish()
    })
});

Here context is a WebGlitz RenderingContext. For details on rendering with WebGlitz, see the web_glitz::rendering module documentation.

Implementations

impl<Rc, T> BufferVec<Rc, T> where
    Rc: RenderingContext,
    T: Copy + 'static, 
[src]

pub fn new(context: Rc, usage: UsageHint) -> Self[src]

Creates a new buffer-backed vector with 0 capacity for the given RenderingContext.

See UsageHint for details on GPU buffer performance hints.

Example

use web_glitz_buffer_vec::BufferVec;
use web_glitz::buffer::UsageHint;

let mut vec = BufferVec::new(context, UsageHint::StaticDraw);

assert_eq!(vec.capacity(), 0);

Here context is a RenderingContext.

pub fn with_capacity(context: Rc, usage: UsageHint, capacity: usize) -> Self[src]

Creates a new buffer-backed vector with the specified capacity for the given RenderingContext.

See UsageHint for details on GPU buffer performance hints.

Example

use web_glitz_buffer_vec::BufferVec;
use web_glitz::buffer::UsageHint;

let mut vec = BufferVec::with_capacity(context, UsageHint::StaticDraw, 10);

assert_eq!(vec.capacity(), 10);

Here context is a RenderingContext.

pub fn update<D>(&mut self, data: D) -> bool where
    D: Borrow<[T]> + Send + Sync + 'static, 
[src]

Replaces the data in the buffer with the given data, resizing the buffer if necessary.

Returns true if a new buffer was allocated, false otherwise.

Guarantees

Any task submitted from the same thread that called update after the update will see the new data. Any task that does not fence submitted from the same thread that called update before the update will see the old data. No other guarantees are given.

Example

use web_glitz_buffer_vec::BufferVec;
use web_glitz::buffer::UsageHint;

let mut vec = BufferVec::new(context, UsageHint::StaticDraw);

vec.update([1, 2, 3]);

Here context is a WebGlitz RenderingContext.

pub fn capacity(&self) -> usize[src]

The number of elements this vector can hold without allocating a new buffer.

pub fn as_buffer_view(&self) -> BufferView<'_, [T]> where
    T: Copy + 'static, 
[src]

Returns a view on the data in the buffer.

Example

use web_glitz_buffer_vec::BufferVec;
use web_glitz::buffer::UsageHint;

let mut vec = BufferVec::new(context, UsageHint::StaticDraw);

vec.update([1, 2, 3]);

let view = vec.as_buffer_view();

assert_eq!(view.len(), 3);

Here context is a WebGlitz RenderingContext.

Auto Trait Implementations

impl<Rc, T> !RefUnwindSafe for BufferVec<Rc, T>

impl<Rc, T> !Send for BufferVec<Rc, T>

impl<Rc, T> !Sync for BufferVec<Rc, T>

impl<Rc, T> Unpin for BufferVec<Rc, T> where
    Rc: Unpin

impl<Rc, T> !UnwindSafe for BufferVec<Rc, T>

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

pub fn type_id(&self) -> TypeId[src]

Gets the TypeId of self. Read more

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

pub fn borrow(&self) -> &T[src]

Immutably borrows from an owned value. Read more

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

pub fn borrow_mut(&mut self) -> &mut T[src]

Mutably borrows from an owned value. Read more

impl<T> From<T> for T[src]

pub fn from(t: T) -> T[src]

Performs the conversion.

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

pub fn into(self) -> U[src]

Performs the conversion.

impl<D, T> IntoBuffer<T> for D where
    T: Copy + 'static,
    D: Borrow<T> + 'static, 
[src]

pub fn into_buffer<Rc>(
    self,
    context: &Rc,
    buffer_id: BufferId,
    usage_hint: UsageHint
) -> Buffer<T> where
    Rc: RenderingContext + Clone + 'static, 
[src]

Stores the data in a buffer belonging to the given context, using the given usage_hint. Read more

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

pub fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>[src]

Performs the conversion.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.

pub fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>[src]

Performs the conversion.

impl<T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15> BlitColorCompatible<(C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15)> for T where
    T: BlitColorCompatible<C0> + BlitColorCompatible<C1> + BlitColorCompatible<C2> + BlitColorCompatible<C3> + BlitColorCompatible<C4> + BlitColorCompatible<C5> + BlitColorCompatible<C6> + BlitColorCompatible<C7> + BlitColorCompatible<C8> + BlitColorCompatible<C9> + BlitColorCompatible<C10> + BlitColorCompatible<C11> + BlitColorCompatible<C12> + BlitColorCompatible<C13> + BlitColorCompatible<C14> + BlitColorCompatible<C15>, 
[src]

impl<T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14> BlitColorCompatible<(C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14)> for T where
    T: BlitColorCompatible<C0> + BlitColorCompatible<C1> + BlitColorCompatible<C2> + BlitColorCompatible<C3> + BlitColorCompatible<C4> + BlitColorCompatible<C5> + BlitColorCompatible<C6> + BlitColorCompatible<C7> + BlitColorCompatible<C8> + BlitColorCompatible<C9> + BlitColorCompatible<C10> + BlitColorCompatible<C11> + BlitColorCompatible<C12> + BlitColorCompatible<C13> + BlitColorCompatible<C14>, 
[src]

impl<T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13> BlitColorCompatible<(C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13)> for T where
    T: BlitColorCompatible<C0> + BlitColorCompatible<C1> + BlitColorCompatible<C2> + BlitColorCompatible<C3> + BlitColorCompatible<C4> + BlitColorCompatible<C5> + BlitColorCompatible<C6> + BlitColorCompatible<C7> + BlitColorCompatible<C8> + BlitColorCompatible<C9> + BlitColorCompatible<C10> + BlitColorCompatible<C11> + BlitColorCompatible<C12> + BlitColorCompatible<C13>, 
[src]

impl<T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12> BlitColorCompatible<(C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12)> for T where
    T: BlitColorCompatible<C0> + BlitColorCompatible<C1> + BlitColorCompatible<C2> + BlitColorCompatible<C3> + BlitColorCompatible<C4> + BlitColorCompatible<C5> + BlitColorCompatible<C6> + BlitColorCompatible<C7> + BlitColorCompatible<C8> + BlitColorCompatible<C9> + BlitColorCompatible<C10> + BlitColorCompatible<C11> + BlitColorCompatible<C12>, 
[src]

impl<T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11> BlitColorCompatible<(C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11)> for T where
    T: BlitColorCompatible<C0> + BlitColorCompatible<C1> + BlitColorCompatible<C2> + BlitColorCompatible<C3> + BlitColorCompatible<C4> + BlitColorCompatible<C5> + BlitColorCompatible<C6> + BlitColorCompatible<C7> + BlitColorCompatible<C8> + BlitColorCompatible<C9> + BlitColorCompatible<C10> + BlitColorCompatible<C11>, 
[src]

impl<T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10> BlitColorCompatible<(C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10)> for T where
    T: BlitColorCompatible<C0> + BlitColorCompatible<C1> + BlitColorCompatible<C2> + BlitColorCompatible<C3> + BlitColorCompatible<C4> + BlitColorCompatible<C5> + BlitColorCompatible<C6> + BlitColorCompatible<C7> + BlitColorCompatible<C8> + BlitColorCompatible<C9> + BlitColorCompatible<C10>, 
[src]

impl<T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9> BlitColorCompatible<(C0, C1, C2, C3, C4, C5, C6, C7, C8, C9)> for T where
    T: BlitColorCompatible<C0> + BlitColorCompatible<C1> + BlitColorCompatible<C2> + BlitColorCompatible<C3> + BlitColorCompatible<C4> + BlitColorCompatible<C5> + BlitColorCompatible<C6> + BlitColorCompatible<C7> + BlitColorCompatible<C8> + BlitColorCompatible<C9>, 
[src]

impl<T, C0, C1, C2, C3, C4, C5, C6, C7, C8> BlitColorCompatible<(C0, C1, C2, C3, C4, C5, C6, C7, C8)> for T where
    T: BlitColorCompatible<C0> + BlitColorCompatible<C1> + BlitColorCompatible<C2> + BlitColorCompatible<C3> + BlitColorCompatible<C4> + BlitColorCompatible<C5> + BlitColorCompatible<C6> + BlitColorCompatible<C7> + BlitColorCompatible<C8>, 
[src]

impl<T, C0, C1, C2, C3, C4, C5, C6, C7> BlitColorCompatible<(C0, C1, C2, C3, C4, C5, C6, C7)> for T where
    T: BlitColorCompatible<C0> + BlitColorCompatible<C1> + BlitColorCompatible<C2> + BlitColorCompatible<C3> + BlitColorCompatible<C4> + BlitColorCompatible<C5> + BlitColorCompatible<C6> + BlitColorCompatible<C7>, 
[src]

impl<T, C0, C1, C2, C3, C4, C5, C6> BlitColorCompatible<(C0, C1, C2, C3, C4, C5, C6)> for T where
    T: BlitColorCompatible<C0> + BlitColorCompatible<C1> + BlitColorCompatible<C2> + BlitColorCompatible<C3> + BlitColorCompatible<C4> + BlitColorCompatible<C5> + BlitColorCompatible<C6>, 
[src]

impl<T, C0, C1, C2, C3, C4, C5> BlitColorCompatible<(C0, C1, C2, C3, C4, C5)> for T where
    T: BlitColorCompatible<C0> + BlitColorCompatible<C1> + BlitColorCompatible<C2> + BlitColorCompatible<C3> + BlitColorCompatible<C4> + BlitColorCompatible<C5>, 
[src]

impl<T, C0, C1, C2, C3, C4> BlitColorCompatible<(C0, C1, C2, C3, C4)> for T where
    T: BlitColorCompatible<C0> + BlitColorCompatible<C1> + BlitColorCompatible<C2> + BlitColorCompatible<C3> + BlitColorCompatible<C4>, 
[src]

impl<T, C0, C1, C2, C3> BlitColorCompatible<(C0, C1, C2, C3)> for T where
    T: BlitColorCompatible<C0> + BlitColorCompatible<C1> + BlitColorCompatible<C2> + BlitColorCompatible<C3>, 
[src]

impl<T, C0, C1, C2> BlitColorCompatible<(C0, C1, C2)> for T where
    T: BlitColorCompatible<C0> + BlitColorCompatible<C1> + BlitColorCompatible<C2>, 
[src]

impl<T, C0, C1> BlitColorCompatible<(C0, C1)> for T where
    T: BlitColorCompatible<C0> + BlitColorCompatible<C1>, 
[src]

impl<T, C0> BlitColorCompatible<(C0,)> for T where
    T: BlitColorCompatible<C0>, 
[src]

impl<T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15> ResolveColorCompatible<(C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15)> for T where
    T: ResolveColorCompatible<C0> + ResolveColorCompatible<C1> + ResolveColorCompatible<C2> + ResolveColorCompatible<C3> + ResolveColorCompatible<C4> + ResolveColorCompatible<C5> + ResolveColorCompatible<C6> + ResolveColorCompatible<C7> + ResolveColorCompatible<C8> + ResolveColorCompatible<C9> + ResolveColorCompatible<C10> + ResolveColorCompatible<C11> + ResolveColorCompatible<C12> + ResolveColorCompatible<C13> + ResolveColorCompatible<C14> + ResolveColorCompatible<C15>, 
[src]

impl<T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14> ResolveColorCompatible<(C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14)> for T where
    T: ResolveColorCompatible<C0> + ResolveColorCompatible<C1> + ResolveColorCompatible<C2> + ResolveColorCompatible<C3> + ResolveColorCompatible<C4> + ResolveColorCompatible<C5> + ResolveColorCompatible<C6> + ResolveColorCompatible<C7> + ResolveColorCompatible<C8> + ResolveColorCompatible<C9> + ResolveColorCompatible<C10> + ResolveColorCompatible<C11> + ResolveColorCompatible<C12> + ResolveColorCompatible<C13> + ResolveColorCompatible<C14>, 
[src]

impl<T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13> ResolveColorCompatible<(C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13)> for T where
    T: ResolveColorCompatible<C0> + ResolveColorCompatible<C1> + ResolveColorCompatible<C2> + ResolveColorCompatible<C3> + ResolveColorCompatible<C4> + ResolveColorCompatible<C5> + ResolveColorCompatible<C6> + ResolveColorCompatible<C7> + ResolveColorCompatible<C8> + ResolveColorCompatible<C9> + ResolveColorCompatible<C10> + ResolveColorCompatible<C11> + ResolveColorCompatible<C12> + ResolveColorCompatible<C13>, 
[src]

impl<T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12> ResolveColorCompatible<(C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12)> for T where
    T: ResolveColorCompatible<C0> + ResolveColorCompatible<C1> + ResolveColorCompatible<C2> + ResolveColorCompatible<C3> + ResolveColorCompatible<C4> + ResolveColorCompatible<C5> + ResolveColorCompatible<C6> + ResolveColorCompatible<C7> + ResolveColorCompatible<C8> + ResolveColorCompatible<C9> + ResolveColorCompatible<C10> + ResolveColorCompatible<C11> + ResolveColorCompatible<C12>, 
[src]

impl<T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11> ResolveColorCompatible<(C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11)> for T where
    T: ResolveColorCompatible<C0> + ResolveColorCompatible<C1> + ResolveColorCompatible<C2> + ResolveColorCompatible<C3> + ResolveColorCompatible<C4> + ResolveColorCompatible<C5> + ResolveColorCompatible<C6> + ResolveColorCompatible<C7> + ResolveColorCompatible<C8> + ResolveColorCompatible<C9> + ResolveColorCompatible<C10> + ResolveColorCompatible<C11>, 
[src]

impl<T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10> ResolveColorCompatible<(C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10)> for T where
    T: ResolveColorCompatible<C0> + ResolveColorCompatible<C1> + ResolveColorCompatible<C2> + ResolveColorCompatible<C3> + ResolveColorCompatible<C4> + ResolveColorCompatible<C5> + ResolveColorCompatible<C6> + ResolveColorCompatible<C7> + ResolveColorCompatible<C8> + ResolveColorCompatible<C9> + ResolveColorCompatible<C10>, 
[src]

impl<T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9> ResolveColorCompatible<(C0, C1, C2, C3, C4, C5, C6, C7, C8, C9)> for T where
    T: ResolveColorCompatible<C0> + ResolveColorCompatible<C1> + ResolveColorCompatible<C2> + ResolveColorCompatible<C3> + ResolveColorCompatible<C4> + ResolveColorCompatible<C5> + ResolveColorCompatible<C6> + ResolveColorCompatible<C7> + ResolveColorCompatible<C8> + ResolveColorCompatible<C9>, 
[src]

impl<T, C0, C1, C2, C3, C4, C5, C6, C7, C8> ResolveColorCompatible<(C0, C1, C2, C3, C4, C5, C6, C7, C8)> for T where
    T: ResolveColorCompatible<C0> + ResolveColorCompatible<C1> + ResolveColorCompatible<C2> + ResolveColorCompatible<C3> + ResolveColorCompatible<C4> + ResolveColorCompatible<C5> + ResolveColorCompatible<C6> + ResolveColorCompatible<C7> + ResolveColorCompatible<C8>, 
[src]

impl<T, C0, C1, C2, C3, C4, C5, C6, C7> ResolveColorCompatible<(C0, C1, C2, C3, C4, C5, C6, C7)> for T where
    T: ResolveColorCompatible<C0> + ResolveColorCompatible<C1> + ResolveColorCompatible<C2> + ResolveColorCompatible<C3> + ResolveColorCompatible<C4> + ResolveColorCompatible<C5> + ResolveColorCompatible<C6> + ResolveColorCompatible<C7>, 
[src]

impl<T, C0, C1, C2, C3, C4, C5, C6> ResolveColorCompatible<(C0, C1, C2, C3, C4, C5, C6)> for T where
    T: ResolveColorCompatible<C0> + ResolveColorCompatible<C1> + ResolveColorCompatible<C2> + ResolveColorCompatible<C3> + ResolveColorCompatible<C4> + ResolveColorCompatible<C5> + ResolveColorCompatible<C6>, 
[src]

impl<T, C0, C1, C2, C3, C4, C5> ResolveColorCompatible<(C0, C1, C2, C3, C4, C5)> for T where
    T: ResolveColorCompatible<C0> + ResolveColorCompatible<C1> + ResolveColorCompatible<C2> + ResolveColorCompatible<C3> + ResolveColorCompatible<C4> + ResolveColorCompatible<C5>, 
[src]

impl<T, C0, C1, C2, C3, C4> ResolveColorCompatible<(C0, C1, C2, C3, C4)> for T where
    T: ResolveColorCompatible<C0> + ResolveColorCompatible<C1> + ResolveColorCompatible<C2> + ResolveColorCompatible<C3> + ResolveColorCompatible<C4>, 
[src]

impl<T, C0, C1, C2, C3> ResolveColorCompatible<(C0, C1, C2, C3)> for T where
    T: ResolveColorCompatible<C0> + ResolveColorCompatible<C1> + ResolveColorCompatible<C2> + ResolveColorCompatible<C3>, 
[src]

impl<T, C0, C1, C2> ResolveColorCompatible<(C0, C1, C2)> for T where
    T: ResolveColorCompatible<C0> + ResolveColorCompatible<C1> + ResolveColorCompatible<C2>, 
[src]

impl<T, C0, C1> ResolveColorCompatible<(C0, C1)> for T where
    T: ResolveColorCompatible<C0> + ResolveColorCompatible<C1>, 
[src]

impl<T, C0> ResolveColorCompatible<(C0,)> for T where
    T: ResolveColorCompatible<C0>, 
[src]