pub struct TextData<const N: usize> {
pub count: u32,
pub chars: [u32; N],
}
Expand description
Text data container that encapsulates encoding logic.
We need it to convert &str
into [u32; N]
according to the internal encoding.
N - must be the same as buffer size.
Example:
let data = TextData::<4>::new("37°C"); // 4 because we have only 4 chars
// Let's create a buffer that will be passed into shader
let mut buffer = ShaderStorageBuffer::with_size(4, RenderAssetUsages::default());
// And pass the data
buffer.set_data(data);
If the text length might be different, set the maximum amount of characters for the buffer. Changing the buffer you will change the rendered text.
Fields§
§count: u32
§chars: [u32; N]
Implementations§
Trait Implementations§
Source§impl<const N: usize> CreateFrom for TextData<N>where
Self: ShaderType<ExtraMetadata = StructMetadata<2usize>>,
for<'__> u32: CreateFrom,
for<'__> [u32; N]: CreateFrom,
impl<const N: usize> CreateFrom for TextData<N>where
Self: ShaderType<ExtraMetadata = StructMetadata<2usize>>,
for<'__> u32: CreateFrom,
for<'__> [u32; N]: CreateFrom,
fn create_from<B: BufferRef>(reader: &mut Reader<B>) -> Self
Source§impl<const N: usize> ShaderSize for TextData<N>
impl<const N: usize> ShaderSize for TextData<N>
Source§const SHADER_SIZE: NonZero<u64> = _
const SHADER_SIZE: NonZero<u64> = _
Represents WGSL Size (equivalent to
ShaderType::min_size
)Source§impl<const N: usize> ShaderType for TextData<N>
impl<const N: usize> ShaderType for TextData<N>
Source§fn size(&self) -> NonZeroU64
fn size(&self) -> NonZeroU64
Returns the size of
Self
at runtime Read moreSource§fn assert_uniform_compat()
fn assert_uniform_compat()
Asserts that
Self
meets the requirements of the
uniform address space restrictions on stored values and the
uniform address space layout constraints Read moreAuto Trait Implementations§
impl<const N: usize> Freeze for TextData<N>
impl<const N: usize> RefUnwindSafe for TextData<N>
impl<const N: usize> Send for TextData<N>
impl<const N: usize> Sync for TextData<N>
impl<const N: usize> Unpin for TextData<N>
impl<const N: usize> UnwindSafe for TextData<N>
Blanket Implementations§
Source§impl<T, U> AsBindGroupShaderType<U> for T
impl<T, U> AsBindGroupShaderType<U> for T
Source§fn as_bind_group_shader_type(&self, _images: &RenderAssets<GpuImage>) -> U
fn as_bind_group_shader_type(&self, _images: &RenderAssets<GpuImage>) -> U
Return the
T
ShaderType
for self
. When used in AsBindGroup
derives, it is safe to assume that all images in self
exist.Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Convert
Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
. Box<dyn Any>
can
then be further downcast
into Box<ConcreteType>
where ConcreteType
implements Trait
.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Convert
Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
Convert
&Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &Any
’s vtable from &Trait
’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Convert
&mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &mut Any
’s vtable from &mut Trait
’s.Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
Source§impl<S> FromSample<S> for S
impl<S> FromSample<S> for S
fn from_sample_(s: S) -> S
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read more