[][src]Struct tetra::graphics::Mesh

pub struct Mesh { /* fields omitted */ }

A 2D mesh that can be drawn to the screen.

A Mesh is a wrapper for a VertexBuffer, which allows it to be drawn in combination with three optional modifiers:

  • A Texture that individual vertices can sample from.
  • An IndexBuffer that can be used to modify the order/subset of vertices that are drawn.
  • A draw range, which can be used to draw subsections of the mesh.

Without a texture set, the mesh will be drawn in white - the color attribute on the vertex data or DrawParams can be used to change this.

Note that, unlike quad rendering via Texture, mesh rendering is not batched by default - each time you draw the mesh will result in a seperate draw call.

Performance

Creating or cloning a Mesh is a very cheap operation, as meshes are effectively just collections of resources that live on the GPU. The only expensive part is the creation of the buffers/textures, which can be done ahead of time.

Note that cloned meshes do not share data, so updating one instance of a mesh will not affect other instances.

Implementations

impl Mesh[src]

pub fn new(vertex_buffer: VertexBuffer) -> Mesh[src]

Creates a new mesh, using the provided vertex buffer.

pub fn indexed(vertex_buffer: VertexBuffer, index_buffer: IndexBuffer) -> Mesh[src]

Creates a new mesh, using the provided vertex and index buffers.

pub fn vertex_buffer(&self) -> &VertexBuffer[src]

Gets a reference to the vertex buffer contained within this mesh.

pub fn set_vertex_buffer(&mut self, vertex_buffer: VertexBuffer)[src]

Sets the vertex buffer that will be used when drawing the mesh.

pub fn index_buffer(&self) -> Option<&IndexBuffer>[src]

Gets a reference to the index buffer contained within this mesh.

Returns None if this mesh does not currently have an index buffer attatched.

pub fn set_index_buffer(&mut self, index_buffer: IndexBuffer)[src]

Sets the index buffer that will be used when drawing the mesh.

pub fn reset_index_buffer(&mut self)[src]

Resets the mesh to no longer use indexed drawing.

pub fn texture(&self) -> Option<&Texture>[src]

Gets a reference to the texture contained within this mesh.

Returns None if this mesh does not currently have an texture attatched.

pub fn set_texture(&mut self, texture: Texture)[src]

Sets the texture that will be used when drawing the mesh.

pub fn reset_texture(&mut self)[src]

Resets the mesh to be untextured.

pub fn set_draw_range(&mut self, start: usize, count: usize)[src]

Sets the range of vertices (or indices, if the mesh is indexed) that should be included when drawing this mesh.

This can be useful if you have a large mesh but you only want to want to draw a subsection of it, or if you want to draw a mesh in multiple stages.

pub fn reset_draw_range(&mut self)[src]

Sets the mesh to include all of its data when drawing.

Trait Implementations

impl Clone for Mesh[src]

impl Debug for Mesh[src]

impl Drawable for Mesh[src]

impl From<VertexBuffer> for Mesh[src]

Auto Trait Implementations

impl !RefUnwindSafe for Mesh

impl !Send for Mesh

impl !Sync for Mesh

impl Unpin for Mesh

impl !UnwindSafe for Mesh

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[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<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.