[−][src]Struct crevice::std140::Sizer
Type that computes the buffer size needed by a series of std140
types laid
out.
This type works well well when paired with Writer
, precomputing a buffer's
size to alleviate the need to dynamically re-allocate buffers.
Example
struct Frob {
vec3 size;
float frobiness;
}
buffer FROBS {
uint len;
Frob[] frobs;
} frobs;
use crevice::std140::{self, AsStd140}; #[derive(AsStd140)] struct Frob { size: mint::Vector3<f32>, frobiness: f32, } // Many APIs require that buffers contain at least enough space for all // fixed-size bindiongs to a buffer as well as one element of any arrays, if // there are any. let mut sizer = std140::Sizer::new(); sizer.add::<u32>(); sizer.add::<Frob>(); let buffer = create_buffer_with_size(sizer.len());
Implementations
impl Sizer
[src]
pub fn new() -> Self
[src]
Create a new Sizer
.
pub fn add<T>(&mut self) -> usize where
T: AsStd140,
[src]
T: AsStd140,
Add a type's necessary padding and size to the Sizer
. Returns the
offset into the buffer where that type would be written.
pub fn len(&self) -> usize
[src]
Returns the number of bytes required to contain all the types added to
the Sizer
.
Auto Trait Implementations
impl RefUnwindSafe for Sizer
impl Send for Sizer
impl Sync for Sizer
impl Unpin for Sizer
impl UnwindSafe for Sizer
Blanket Implementations
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
fn borrow_mut(&mut self) -> &mut T
[src]
impl<T> From<T> for T
[src]
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,