Struct azul_glium::buffer::Buffer

source ·
pub struct Buffer<T>where
    T: Content + ?Sized,
{ /* private fields */ }
Expand description

Represents a view of a buffer.

Implementations§

Builds a new buffer containing the given data. The size of the buffer is equal to the size of the data.

Builds a new buffer of the given size.

Returns the context corresponding to this buffer.

Returns the size in bytes of this buffer.

Returns true if this buffer uses persistent mapping.

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 buffer. The data becomes undefined.

You should call this if you only use parts of a buffer. For example if you want to use the first half of the buffer, you invalidate the whole buffer then write the first half.

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

Implementation

Calls glInvalidateBufferData if supported. Otherwise, calls glBufferData with a null pointer for data. If glBufferStorage has been used to create the buffer and glInvalidateBufferData is not supported, does nothing.

Reads the content of the buffer.

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.

Copies the content of the buffer to another buffer.

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.

Same as slice_custom but returns a mutable slice.

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

Builds a slice containing the whole subbuffer.

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

Builds a slice containing the whole subbuffer.

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

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.

Builds a new buffer of the given size.

Builds a new buffer of the given size.

Returns the number of elements in this buffer.

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

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

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

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

Reads the content of the buffer.

Trait Implementations§

Builds a UniformValue.
Formats the value using the given formatter. Read more
Executes the destructor for this type. Read more
Converts to this type from the input type.
Converts to this type from the input type.
Converts to this type from the input type.
Converts to this type from the input type.
Converts to this type from the input type.
Converts to this type from the input type.
The type of identifier for this object.
Returns the id of the object.

Auto Trait Implementations§

Blanket Implementations§

Gets the TypeId of self. Read more
Immutably borrows from an owned value. Read more
Mutably borrows from an owned value. Read more

Returns the argument unchanged.

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

The type returned in the event of a conversion error.
Performs the conversion.
The type returned in the event of a conversion error.
Performs the conversion.