pub trait BufferForDraw<T>:
Clone
+ Send
+ Sync
+ Debug
+ Anywhere
T: BufferVecItem,{
// Required methods
fn create(
device: Arc<VulkanDevice>,
data: &[T],
cmdbuf: VkCommandBuffer,
usage: VkBufferUsageFlags,
) -> Result<Self, VulkanError>;
fn get_vk_buffer(&self) -> VkBuffer;
fn get_device(&self) -> Arc<VulkanDevice>;
fn set_data(&mut self, data: &[T]) -> Result<(), VulkanError>;
fn len(&self) -> usize;
fn convert_to_buffer_vec(self) -> BufferVec<T>;
fn convert_to_buffer_with_type(self) -> BufferWithType<T>;
// Provided methods
fn flush(&mut self, _cmdbuf: VkCommandBuffer) -> Result<(), VulkanError> { ... }
fn discard_staging_buffer(&self) { ... }
fn is_empty(&self) -> bool { ... }
}Expand description
The trait for the mesh to hold buffers
Required Methods§
Sourcefn create(
device: Arc<VulkanDevice>,
data: &[T],
cmdbuf: VkCommandBuffer,
usage: VkBufferUsageFlags,
) -> Result<Self, VulkanError>
fn create( device: Arc<VulkanDevice>, data: &[T], cmdbuf: VkCommandBuffer, usage: VkBufferUsageFlags, ) -> Result<Self, VulkanError>
Used to create the buffer
Sourcefn get_vk_buffer(&self) -> VkBuffer
fn get_vk_buffer(&self) -> VkBuffer
Must be able to get the VkBuffer handle
Sourcefn get_device(&self) -> Arc<VulkanDevice>
fn get_device(&self) -> Arc<VulkanDevice>
Get the device
Sourcefn convert_to_buffer_vec(self) -> BufferVec<T>
fn convert_to_buffer_vec(self) -> BufferVec<T>
Convert to BufferVec<T>
Sourcefn convert_to_buffer_with_type(self) -> BufferWithType<T>
fn convert_to_buffer_with_type(self) -> BufferWithType<T>
Convert to BufferWithType<T>
Provided Methods§
Sourcefn flush(&mut self, _cmdbuf: VkCommandBuffer) -> Result<(), VulkanError>
fn flush(&mut self, _cmdbuf: VkCommandBuffer) -> Result<(), VulkanError>
Flush staging buffer data to GPU
Sourcefn discard_staging_buffer(&self)
fn discard_staging_buffer(&self)
Discard staging buffer if the buffer’s staging buffer is discardable
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.