Expand description
A Vulkan renderer for yakui, a declarative UI library for games. Uses ash
to wrap Vulkan related functionality.
The main entrypoint is the YakuiVulkan
struct which creates a ash::vk::RenderPass
and ash::vk::Pipeline
to draw yakui GUIs. This is initialised by populating a VulkanContext
helper struct to pass down the relevant hooks into your Vulkan renderer.
Like most Vulkan applications, this crate uses unsafe Rust! No checks are made to ensure that Vulkan handles are valid, so take note of the safety warnings on the various methods of YakuiVulkan
.
Currently this crate only supports drawing to images in the VK_IMAGE_LAYOUT_PRESENT_SRC_KHR
layout, but future releases will support drawing to any arbitrary vk::ImageView
.
This crate requires at least Vulkan 1.2 and a GPU with support for VkPhysicalDeviceDescriptorIndexingFeatures.descriptorBindingPartiallyBound
. You should also, you know, enable that feature, or Vulkan Validation Layers will get mad at you. You definitely don’t want that.
For an example of how to use this crate, check out examples/demo.rs
Modules§
- Raw Vulkan bindings and types, generated from
vk.xml
Structs§
- A thin wrapper around descriptor related functionality
- Vulkan configuration
- A wrapper around handles into your Vulkan renderer to call various methods on
crate::YakuiVulkan
- A container around a Vulkan created texture
- A container for information about a texture. Populate this struct and pass it to
crate::YakuiVulkan::add_user_texture()
to create user managed textures that you can then use inyakui
code. - A struct wrapping everything needed to render yakui on Vulkan. This will be your main entry point.