Struct rin::gl::buffer::SharedBuffer[][src]

pub struct SharedBuffer<T> { /* fields omitted */ }

Wrapper around a Buffer with internal reference counting

Useful for example when the same buffer or ranges of the same buffer are to be used in different VAOs

Implementations

impl<T> SharedBuffer<T> where
    T: 'static, 
[src]

pub fn load(&mut self, data: &[T], usage: u32)[src]

pub fn load_target(&mut self, data: &[T], usage: u32, target: u32)[src]

Loads the passed data into the buffer (re)allocating it to an specific target

see: gl(Named)BufferData

pub fn reserve(&mut self, len: usize, usage: u32)[src]

Reserves len amount of memory into the buffer (re)allocating it

see: gl(Named)BufferData

pub fn reserve_target(&mut self, len: usize, usage: u32, target: u32)[src]

Reserves len amount of memory into the buffer (re)allocating it to an specific target

see: gl(Named)BufferData

pub fn update(&mut self, data: &[T])[src]

pub fn with_map_read<F>(&self, flags: MapReadFlags, f: F) -> Result<(), Error> where
    F: FnMut(&[T]), 
[src]

pub unsafe fn map_write<F>(
    &mut self,
    flags: MapWriteFlags,
    f: F
) -> Result<(), Error> where
    F: FnMut(&mut [T]), 
[src]

Unsafe cause reading from the mutable slice is undefined behaviour

pub fn map_read_write<F>(
    &mut self,
    flags: MapReadWriteFlags,
    f: F
) -> Result<(), Error> where
    F: FnMut(&mut [T]), 
[src]

pub fn copy_to<U, B>(&self, dst: &mut B) where
    B: BufferRange<U> + WithBackendMut
[src]

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

pub fn is_empty(&self) -> bool[src]

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

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

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

pub fn id(&self) -> u32[src]

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

pub fn range<R>(&self, range: R) -> Range<T, SharedBuffer<T>, SharedBuffer<T>> where
    R: InputRange
[src]

pub fn range_mut<R>(
    &mut self,
    range: R
) -> Range<T, SharedBuffer<T>, SharedBuffer<T>> where
    R: InputRange
[src]

Get a mutable range from the buffer

Useful to do operations on portions of the buffer

Panics if the range is out of bounds

impl SharedBuffer<u8>[src]

pub fn cast<T>(self) -> SharedBuffer<T>[src]

Trait Implementations

impl<'a, '_, T> BufferRange<T> for &'_ SharedBuffer<T> where
    T: 'static, 
[src]

impl<T> BufferRange<T> for SharedBuffer<T> where
    T: 'static, 
[src]

impl<T> BufferRangeMut<T> for SharedBuffer<T> where
    T: 'static, 
[src]

impl<T> Cast<T> for SharedBuffer<u8> where
    T: 'static, 
[src]

type CastTo = SharedBuffer<T>

impl<T> Clone for SharedBuffer<T>[src]

impl<T> Debug for SharedBuffer<T> where
    T: Debug
[src]

impl<T> From<Buffer<T>> for SharedBuffer<T> where
    T: 'static, 
[src]

impl InternalCreation<SharedBuffer<u8>> for Allocator<SharedBuffer<u8>>[src]

impl<'a, T> MapRange<T> for SharedBuffer<T>[src]

impl<'a, T> MapRangeMut<T> for SharedBuffer<T>[src]

impl<T> PartialEq<SharedBuffer<T>> for SharedBuffer<T> where
    T: PartialEq<T>, 
[src]

impl<'a, '_, T> TypedBuffer<T> for &'_ SharedBuffer<T> where
    T: 'static, 
[src]

impl<T> TypedBuffer<T> for SharedBuffer<T> where
    T: 'static, 
[src]

impl<'a, T> TypedBufferMut<T> for SharedBuffer<T> where
    T: 'static, 
[src]

impl<T> WithBackend for SharedBuffer<T>[src]

impl<T> WithBackendMut for SharedBuffer<T>[src]

impl<T> WithMapRange<T> for SharedBuffer<T>[src]

impl<T> WithMapRangeMut<T> for SharedBuffer<T>[src]

impl<T> BufferExt<T> for SharedBuffer<T> where
    T: 'static, 
[src]

impl<T> Eq for SharedBuffer<T> where
    T: Eq
[src]

impl<T> StructuralEq for SharedBuffer<T>[src]

impl<T> StructuralPartialEq for SharedBuffer<T>[src]

Auto Trait Implementations

impl<T> !RefUnwindSafe for SharedBuffer<T>

impl<T> !Send for SharedBuffer<T>

impl<T> !Sync for SharedBuffer<T>

impl<T> Unpin for SharedBuffer<T> where
    T: Unpin

impl<T> !UnwindSafe for SharedBuffer<T>

Blanket Implementations

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

impl<T> Any for T where
    T: Any
[src]

impl<'a, B> AttributeBufferBinding for B where
    B: BufferRange<u32> + ?Sized
[src]

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

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

impl<T> Downcast for T where
    T: Any
[src]

impl<Q, K> Equivalent<K> for Q where
    K: Borrow<Q> + ?Sized,
    Q: Eq + ?Sized
[src]

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

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

impl<V> IntoPnt<V> for V[src]

impl<V> IntoVec<V> for V[src]

impl<T> Pointable for T[src]

type Init = T

The type for initializers.

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

type Output = T

Should always be Self

impl<SS, SP> SupersetOf<SS> for SP where
    SS: SubsetOf<SP>, 
[src]

impl<SS, SP> SupersetOf<SS> for SP where
    SS: SubsetOf<SP>, 
[src]

impl<T> ToOwned for T where
    T: Clone
[src]

type Owned = T

The resulting type after obtaining ownership.

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.

impl<V, T> VZip<V> for T where
    V: MultiLane<T>, 
[src]

impl<T, M> MapRange<T> for M where
    M: WithMapRange<T>, 
[src]