pub struct GPUVec<T> { /* private fields */ }
Expand description
A vector of elements that can be loaded to the GPU, on the RAM, or both.
Implementations
sourceimpl<T: GLPrimitive> GPUVec<T>
impl<T: GLPrimitive> GPUVec<T>
sourcepub fn new(
data: Vec<T>,
buf_type: BufferType,
alloc_type: AllocationType
) -> GPUVec<T>
pub fn new(
data: Vec<T>,
buf_type: BufferType,
alloc_type: AllocationType
) -> GPUVec<T>
Creates a new GPUVec
that is not yet uploaded to the GPU.
sourcepub fn data_mut(&mut self) -> &mut Option<Vec<T>>
pub fn data_mut(&mut self) -> &mut Option<Vec<T>>
Mutably accesses the vector if it is available on RAM.
This method will mark this vector as trash
.
sourcepub fn is_on_ram(&self) -> bool
pub fn is_on_ram(&self) -> bool
Returns true
if this vector is available on RAM.
Note that a GPUVec
may be both on RAM and on the GPU.
sourcepub fn load_to_gpu(&mut self)
pub fn load_to_gpu(&mut self)
Loads the vector from the RAM to the GPU.
If the vector is not available on RAM or already loaded to the GPU, nothing will happen.
sourcepub fn bind(&mut self)
pub fn bind(&mut self)
Binds this vector to the appropriate gpu array.
This does not associate this buffer with any shader attribute.
sourcepub fn unload_from_gpu(&mut self)
pub fn unload_from_gpu(&mut self)
Unloads this resource from the GPU.
sourcepub fn unload_from_ram(&mut self)
pub fn unload_from_ram(&mut self)
Removes this resource from the RAM.
This is useful to save memory for vectors required on the GPU only.
Auto Trait Implementations
impl<T> RefUnwindSafe for GPUVec<T> where
T: RefUnwindSafe,
impl<T> Send for GPUVec<T> where
T: Send,
impl<T> Sync for GPUVec<T> where
T: Sync,
impl<T> Unpin for GPUVec<T> where
T: Unpin,
impl<T> UnwindSafe for GPUVec<T> where
T: UnwindSafe,
Blanket Implementations
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
impl<T> Downcast for T where
T: Any,
impl<T> Downcast for T where
T: Any,
fn into_any(self: Box<T, Global>) -> Box<dyn Any + 'static, Global>
fn into_any(self: Box<T, Global>) -> Box<dyn Any + 'static, Global>
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
. Read more
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any + 'static>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any + 'static>
Convert Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
. Read more
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. Read more
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. Read more
impl<T> Pointable for T
impl<T> Pointable for T
impl<SS, SP> SupersetOf<SS> for SP where
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SP where
SS: SubsetOf<SP>,
fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
The inverse inclusion map: attempts to construct self
from the equivalent element of its
superset. Read more
fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
Checks if self
is actually part of its subset T
(and can be converted to it).
fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
Use with care! Same as self.to_subset
but without any property checks. Always succeeds.
fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
The inclusion map: converts self
to the equivalent element of its superset.