pub struct BuffersBuilder<'l, OutputVertex: 'l, OutputIndex: 'l, Ctor> { /* private fields */ }
Expand description

A temporary view on a VertexBuffers object which facilitate the population of vertex and index data.

BuffersBuilders record the vertex offset from when they are created so that algorithms using them don’t need to worry about offsetting indices if some geometry was added beforehand. This means that from the point of view of a BuffersBuilder user, the first added vertex is at always offset at the offset 0 and VertexBuilder takes care of translating indices adequately.

Often, algorithms are built to generate vertex positions without knowledge of eventual other vertex vertex. The VertexConstructor does the translation from generic Input to OutputVertex. If your logic generates the actual vertex type directly, you can use the SimpleBuffersBuilder convenience typedef.

Implementations§

source§

impl<'l, OutputVertex: 'l, OutputIndex: 'l, Ctor> BuffersBuilder<'l, OutputVertex, OutputIndex, Ctor>

source

pub fn new( buffers: &'l mut VertexBuffers<OutputVertex, OutputIndex>, ctor: Ctor ) -> Self

source

pub fn with_vertex_offset(self, offset: u32) -> Self

source

pub fn with_inverted_winding(self) -> InvertWinding<Self>

Consumes self and returns a builder with opposite triangle face winding.

source

pub fn buffers<'a, 'b: 'a>( &'b self ) -> &'a VertexBuffers<OutputVertex, OutputIndex>

Trait Implementations§

source§

impl<'l, OutputVertex, OutputIndex, Ctor> FillGeometryBuilder for BuffersBuilder<'l, OutputVertex, OutputIndex, Ctor>
where OutputVertex: 'l, OutputIndex: Add + From<VertexId> + MaxIndex, Ctor: FillVertexConstructor<OutputVertex>,

source§

fn add_fill_vertex( &mut self, vertex: FillVertex<'_> ) -> Result<VertexId, GeometryBuilderError>

Inserts a vertex, providing its position, and optionally a normal. Returns a vertex id that is only valid between begin_geometry and end_geometry. Read more
source§

impl<'l, OutputVertex, OutputIndex, Ctor> GeometryBuilder for BuffersBuilder<'l, OutputVertex, OutputIndex, Ctor>
where OutputVertex: 'l, OutputIndex: Add + From<VertexId> + MaxIndex,

source§

fn begin_geometry(&mut self)

Called at the beginning of a generation. Read more
source§

fn add_triangle(&mut self, a: VertexId, b: VertexId, c: VertexId)

Insert a triangle made of vertices that were added after the last call to begin_geometry. Read more
source§

fn abort_geometry(&mut self)

abort_geometry is called instead of end_geometry if an error occurred while producing the geometry and we won’t be able to finish. Read more
source§

fn end_geometry(&mut self)

Called at the end of a generation. Returns the number of vertices and indices added since the last time begin_geometry was called.
source§

impl<'l, OutputVertex, OutputIndex, Ctor> StrokeGeometryBuilder for BuffersBuilder<'l, OutputVertex, OutputIndex, Ctor>
where OutputVertex: 'l, OutputIndex: Add + From<VertexId> + MaxIndex, Ctor: StrokeVertexConstructor<OutputVertex>,

source§

fn add_stroke_vertex( &mut self, v: StrokeVertex<'_, '_> ) -> Result<VertexId, GeometryBuilderError>

Inserts a vertex, providing its position, and optionally a normal. Returns a vertex id that is only valid between begin_geometry and end_geometry. Read more

Auto Trait Implementations§

§

impl<'l, OutputVertex, OutputIndex, Ctor> Freeze for BuffersBuilder<'l, OutputVertex, OutputIndex, Ctor>
where Ctor: Freeze,

§

impl<'l, OutputVertex, OutputIndex, Ctor> RefUnwindSafe for BuffersBuilder<'l, OutputVertex, OutputIndex, Ctor>
where Ctor: RefUnwindSafe, OutputVertex: RefUnwindSafe, OutputIndex: RefUnwindSafe,

§

impl<'l, OutputVertex, OutputIndex, Ctor> Send for BuffersBuilder<'l, OutputVertex, OutputIndex, Ctor>
where Ctor: Send, OutputVertex: Send, OutputIndex: Send,

§

impl<'l, OutputVertex, OutputIndex, Ctor> Sync for BuffersBuilder<'l, OutputVertex, OutputIndex, Ctor>
where Ctor: Sync, OutputVertex: Sync, OutputIndex: Sync,

§

impl<'l, OutputVertex, OutputIndex, Ctor> Unpin for BuffersBuilder<'l, OutputVertex, OutputIndex, Ctor>
where Ctor: Unpin,

§

impl<'l, OutputVertex, OutputIndex, Ctor> !UnwindSafe for BuffersBuilder<'l, OutputVertex, OutputIndex, Ctor>

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

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

source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.