Skip to main content

PackedAttribute

Struct PackedAttribute 

Source
pub struct PackedAttribute { /* private fields */ }
Expand description

One materialized, tightly packed vertex attribute.

use draco_gltf::{ComponentType, PackedAttribute};

let position = PackedAttribute::new(
    "POSITION",
    1,
    3,
    ComponentType::F32,
    false,
    vec![0; 12],
)?;
assert_eq!(position.count(), 1);

Implementations§

Source§

impl PackedAttribute

Source

pub fn new( semantic: impl Into<String>, count: usize, components: u8, component_type: ComponentType, normalized: bool, bytes: Vec<u8>, ) -> Result<Self, GeometryError>

Creates and validates a tightly packed vertex attribute.

Source

pub fn with_source_accessor(self, accessor: usize) -> Self

Records which document accessor these bytes were materialized from.

Primitives routinely share one accessor — a mesh split by material is the usual case — and a consumer that rebuilds its own buffers has no other way to notice, since the bytes arrive already materialized. Left unset for compressed geometry, whose bytes come from the codec stream rather than from the accessor the attribute names.

Source

pub const fn source_accessor(&self) -> Option<usize>

Returns the document accessor these bytes came from, when known.

Source

pub fn semantic(&self) -> &str

Returns the glTF attribute semantic.

Source

pub const fn count(&self) -> usize

Returns the number of attribute elements.

Source

pub const fn components(&self) -> u8

Returns the number of scalar components in each element.

Source

pub const fn component_type(&self) -> ComponentType

Returns the scalar storage type.

Source

pub const fn normalized(&self) -> bool

Returns whether integer values use normalized interpretation.

Source

pub fn bytes(&self) -> &[u8]

Borrows the tightly packed row-major bytes.

Trait Implementations§

Source§

impl Clone for PackedAttribute

Source§

fn clone(&self) -> PackedAttribute

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for PackedAttribute

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Eq for PackedAttribute

Source§

impl PartialEq for PackedAttribute

Equality is over the vertex data, not over where it was read from.

source_accessor records provenance: the same bytes materialized from a different document, or re-materialized after a write, are the same attribute, and a round-trip that renumbers accessors has lost nothing.

Source§

fn eq(&self, other: &Self) -> bool

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Inequality operator !=. Read more

Auto Trait Implementations§

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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. 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> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

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

Source§

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>,

Source§

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.