Struct web_glitz_buffer_vec::IndexBufferVec[][src]

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

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]

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]