pub struct VulkanoWindowRenderer { /* private fields */ }
Expand description
A window renderer struct holding the winit window surface and functionality for organizing your render between frames.
Begin rendering with VulkanoWindowRenderer::acquire
and finish with
VulkanoWindowRenderer::present
. Between those, you should execute your command buffers.
The intended usage of this struct is through crate::window::VulkanoWindows
.
Implementations§
Source§impl VulkanoWindowRenderer
impl VulkanoWindowRenderer
Sourcepub fn new(
vulkano_context: &VulkanoContext,
window: Window,
descriptor: &WindowDescriptor,
swapchain_create_info_modify: fn(&mut SwapchainCreateInfo),
) -> VulkanoWindowRenderer
pub fn new( vulkano_context: &VulkanoContext, window: Window, descriptor: &WindowDescriptor, swapchain_create_info_modify: fn(&mut SwapchainCreateInfo), ) -> VulkanoWindowRenderer
Creates a new VulkanoWindowRenderer
which is used to orchestrate your rendering with
Vulkano. Pass WindowDescriptor
and optionally a function modifying the
SwapchainCreateInfo
parameters.
Sourcepub fn set_present_mode(&mut self, present_mode: PresentMode)
pub fn set_present_mode(&mut self, present_mode: PresentMode)
Set window renderer present mode. This triggers a swapchain recreation.
Sourcepub fn swapchain_format(&self) -> Format
pub fn swapchain_format(&self) -> Format
Return swapchain image format.
Sourcepub fn image_index(&self) -> u32
pub fn image_index(&self) -> u32
Returns the index of last swapchain image that is the next render target.
Sourcepub fn graphics_queue(&self) -> Arc<Queue>
pub fn graphics_queue(&self) -> Arc<Queue>
Graphics queue of this window. You also can access this through VulkanoContext
.
Sourcepub fn compute_queue(&self) -> Arc<Queue>
pub fn compute_queue(&self) -> Arc<Queue>
Compute queue of this window. You can also access this through VulkanoContext
.
Sourcepub fn window_size(&self) -> [f32; 2]
pub fn window_size(&self) -> [f32; 2]
Size of the physical window.
Sourcepub fn swapchain_image_size(&self) -> [u32; 2]
pub fn swapchain_image_size(&self) -> [u32; 2]
Size of the final swapchain image (surface).
Sourcepub fn swapchain_image_view(&self) -> Arc<ImageView>
pub fn swapchain_image_view(&self) -> Arc<ImageView>
Return the current swapchain image view.
Sourcepub fn resolution(&self) -> [f32; 2]
pub fn resolution(&self) -> [f32; 2]
Return scale factor accounted window size.
pub fn aspect_ratio(&self) -> f32
Sourcepub fn swapchain_image_views(&self) -> &[Arc<ImageView>]
pub fn swapchain_image_views(&self) -> &[Arc<ImageView>]
Returns a reference to the swapchain image views.
Sourcepub fn resize(&mut self)
pub fn resize(&mut self)
Resize swapchain and camera view images at the beginning of next frame based on window size.
Sourcepub fn add_additional_image_view(
&mut self,
key: usize,
format: Format,
usage: ImageUsage,
)
pub fn add_additional_image_view( &mut self, key: usize, format: Format, usage: ImageUsage, )
Add interim image view that resizes with window.
Sourcepub fn get_additional_image_view(&mut self, key: usize) -> Arc<ImageView>
pub fn get_additional_image_view(&mut self, key: usize) -> Arc<ImageView>
Get additional image view by key.
Sourcepub fn remove_additional_image_view(&mut self, key: usize)
pub fn remove_additional_image_view(&mut self, key: usize)
Remove additional image by key.
Sourcepub fn acquire(
&mut self,
timeout: Option<Duration>,
on_recreate_swapchain: impl FnOnce(&[Arc<ImageView>]),
) -> Result<Box<dyn GpuFuture>, VulkanError>
pub fn acquire( &mut self, timeout: Option<Duration>, on_recreate_swapchain: impl FnOnce(&[Arc<ImageView>]), ) -> Result<Box<dyn GpuFuture>, VulkanError>
Begin your rendering by calling acquire
.
‘on_recreate_swapchain’ is called when the swapchain gets recreated, due to being resized,
suboptimal, or changing the present mode. Returns a GpuFuture
representing the time
after which the swapchain image has been acquired and previous frame ended.
Execute your command buffers after calling this function and
finish rendering by calling VulkanoWindowRenderer::present
.
Sourcepub fn present(&mut self, after_future: Box<dyn GpuFuture>, wait_future: bool)
pub fn present(&mut self, after_future: Box<dyn GpuFuture>, wait_future: bool)
Finishes rendering by presenting the swapchain. Pass your last future as an input to this function.
Depending on your implementation, you may want to wait on your future. For example, a compute shader dispatch using an image that’s being later drawn should probably be waited on.
Auto Trait Implementations§
impl Freeze for VulkanoWindowRenderer
impl !RefUnwindSafe for VulkanoWindowRenderer
impl !Send for VulkanoWindowRenderer
impl !Sync for VulkanoWindowRenderer
impl Unpin for VulkanoWindowRenderer
impl !UnwindSafe for VulkanoWindowRenderer
Blanket Implementations§
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
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>
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>
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)
&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)
&mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &mut Any
’s vtable from &mut Trait
’s.