[][src]Struct web_glitz_buffer_vec::IndexBufferVec

pub struct IndexBufferVec<Rc, T> { /* fields omitted */ }

A growable GPU buffer for data that may be used to specify vertex indices in a WebGlitz draw task.

Elements must implement IndexFormat.

Example

use web_glitz_buffer_vec::IndexBufferVec;
use web_glitz::buffer::UsageHint;

let mut indices = IndexBufferVec::new(context, UsageHint::StaticDraw);

indices.update([1u16, 2u16, 3u16]);

let indices_view = indices.as_buffer_view();

assert_eq!(indices_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(vertex_buffers)
            .bind_index_buffer(indices_view)
            .bind_resources(resources)
            .draw_indexed(3, 1)
            .finish()
    })
});

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

Implementations

impl<Rc, T> IndexBufferVec<Rc, T> where
    Rc: RenderingContext,
    T: IndexFormat + '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::IndexBufferVec;
use web_glitz::buffer::UsageHint;

let mut indices = IndexBufferVec::new(context, UsageHint::StaticDraw);

assert_eq!(indices.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::IndexBufferVec;
use web_glitz::buffer::UsageHint;

let mut indices = IndexBufferVec::with_capacity(context, UsageHint::StaticDraw, 10);

assert_eq!(indices.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::IndexBufferVec;
use web_glitz::buffer::UsageHint;

let mut indices = IndexBufferVec::new(context, UsageHint::StaticDraw);

indices.update([1u16, 2u16, 3u16]);

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) -> IndexBufferView<'_, T> where
    T: Copy + 'static, 
[src]

Returns a view on the data in the buffer.

Example

use web_glitz_buffer_vec::IndexBufferVec;
use web_glitz::buffer::UsageHint;

let mut indices = IndexBufferVec::new(context, UsageHint::StaticDraw);

indices.update([1u16, 2u16, 3u16]);

let view = indices.as_buffer_view();

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

Here context is a WebGlitz RenderingContext.

Auto Trait Implementations

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

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

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

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

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

Blanket Implementations

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

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> Borrow<T> for T where
    T: ?Sized
[src]

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

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

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

impl<D, T> IntoBuffer<T> for D where
    D: Borrow<T> + 'static,
    T: Copy + 'static, 
[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]

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.

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.