Struct nannou::ui::backend::glium::glium::buffer::BufferMutSlice[][src]

pub struct BufferMutSlice<'a, T> where
    T: Content + ?Sized
{ /* fields omitted */ }

Represents a sub-part of a buffer.

Methods

impl<'a, T> BufferMutSlice<'a, T> where
    T: Content + 'a + ?Sized
[src]

Returns the size in bytes of this slice.

Maps the buffer in memory for both reading and writing.

Implementation

  • For persistent-mapped buffers, waits until the data is no longer accessed by the GPU then returns a pointer to the existing mapping.
  • For immutable buffers, creates a temporary buffer containing the data of the buffer and maps it. When the mapping object is destroyed, copies the content of the temporary buffer to the real buffer.
  • For other types, calls glMapBuffer or glMapSubBuffer.

Maps the buffer in memory for reading.

Implementation

  • For persistent-mapped buffers, waits until the data is no longer accessed by the GPU then returns a pointer to the existing mapping.
  • For immutable buffers, creates a temporary buffer containing the data of the buffer and maps it.
  • For other types, calls glMapBuffer or glMapSubBuffer.

Maps the buffer in memory for writing only.

Implementation

  • For persistent-mapped buffers, waits until the data is no longer accessed by the GPU then returns a pointer to the existing mapping.
  • For immutable buffers, creates a temporary buffer and maps it. When the mapping object is destroyed, copies the content of the temporary buffer to the real buffer.
  • For other types, calls glMapBuffer or glMapSubBuffer.

Uploads some data in this buffer.

Implementation

  • For persistent-mapped buffers, waits untils the data is no longer used by the GPU then memcpies the data to the mapping.
  • For immutable buffers, creates a temporary buffer that contains the data then calls glCopyBufferSubData to copy from the temporary buffer to the real one.
  • For other types, calls glBufferSubData.

Panic

Panics if the length of data is different from the length of this buffer.

Invalidates the content of the slice. The data becomes undefined.

This operation is a no-op if the backend doesn't support it and for persistent-mapped buffers.

Implementation

Calls glInvalidateBufferSubData if supported.

Reads the content of the buffer.

Copies the content of this slice to another slice.

Panic

Panics if T is unsized and the other buffer is too small.

Builds a slice that contains an element from inside the buffer.

This method builds an object that represents a slice of the buffer. No actual operation OpenGL is performed.

Example

#[derive(Copy, Clone)]
struct BufferContent {
    value1: u16,
    value2: u16,
}
let slice = unsafe { buffer.slice_custom(|content| &content.value2) };

Safety

The object whose reference is passed to the closure is uninitialized. Therefore you must not access the content of the object.

You must return a reference to an element from the parameter. The closure must not panic.

Builds a slice-any containing the whole subbuffer.

This method builds an object that represents a slice of the buffer. No actual operation OpenGL is performed.

impl<'a, T> BufferMutSlice<'a, [T]> where
    T: Copy + 'a,
    [T]: Content
[src]

Returns the number of elements in this slice.

Builds a subslice of this slice. Returns None if out of range.

This method builds an object that represents a slice of the buffer. No actual operation OpenGL is performed.

impl<'a, T> BufferMutSlice<'a, [T]> where
    T: PixelValue + 'a, 
[src]

Reads the content of the buffer.

Trait Implementations

impl<'a, T> Debug for BufferMutSlice<'a, T> where
    T: Content + ?Sized
[src]

Formats the value using the given formatter. Read more

impl<'a, T> From<&'a mut VertexBuffer<T>> for BufferMutSlice<'a, [T]> where
    T: Copy
[src]

Performs the conversion.

impl<'a, T> From<BufferMutSlice<'a, T>> for BufferSlice<'a, T> where
    T: Content + 'a + ?Sized
[src]

Performs the conversion.

impl<'a, T> From<&'a mut Buffer<T>> for BufferMutSlice<'a, T> where
    T: Content + 'a + ?Sized
[src]

Performs the conversion.

impl<'a, T> From<&'a mut UniformBuffer<T>> for BufferMutSlice<'a, T> where
    T: Content + ?Sized
[src]

Performs the conversion.

impl<'a> From<&'a mut DrawCommandsNoIndicesBuffer> for BufferMutSlice<'a, [DrawCommandNoIndices]>
[src]

Performs the conversion.

impl<'a> From<&'a mut DrawCommandsIndicesBuffer> for BufferMutSlice<'a, [DrawCommandIndices]>
[src]

Performs the conversion.

impl<'a, T> From<&'a mut IndexBuffer<T>> for BufferMutSlice<'a, [T]> where
    T: Index
[src]

Performs the conversion.

Auto Trait Implementations

impl<'a, T> !Send for BufferMutSlice<'a, T>

impl<'a, T> !Sync for BufferMutSlice<'a, T>