Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up

Utility crate for kickstarting vulkan development in Rust.

NotificationsYou must be signed in to change notification settings

ArrowMaxGithub/vku

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

55 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Crates.iodocs.rsCrates.io

VKU

Work in progress utility crate for kickstarting vulkan development withshaderc,ash and thegpu-allocator.

Center module is Vkinit, created fromRawHandles and VkInitCreateInfo.

Warning

This is mostly a personal utility crate and no guarentees are made in terms of stability until 1.0.0.

Initialization

use winit::window::WindowBuilder;use winit::event_loop::{EventLoop,EventLoopBuilder};use winit::dpi::LogicalSize;use raw_window_handle::{HasRawDisplayHandle,HasRawWindowHandle};use vku::{VkInitCreateInfo,VkInit};fnmain() ->Result<(), vku::Error>{let event_loop:EventLoop<()> =EventLoopBuilder::default().build();let size =[800_u32,600_u32];let window =WindowBuilder::new().with_inner_size(LogicalSize{width: size[0],height: size[1]}).build(&event_loop).unwrap();let create_info =VkInitCreateInfo::default();let vk_init =VkInit::new(Some(&window),Some(size), create_info)?;Ok(())}

Swapchain recreation:

use raw_window_handle::{RawDisplayHandle,RawWindowHandle};use vku::VkInit;use winit::window::Window;fnmain() ->Result<(), vku::Error>{let window:Window =todo!();letmut vk_init:VkInit =todo!();let new_size =[1200_u32,900_u32];        vk_init.on_resize(&window, new_size)?;Ok(())}

Managed Image allocation and tracked layout transitions:

use vku::{VkInit,CmdType};use ash::vk::{Extent3D,Format,ImageAspectFlags,ImageLayout};fnmain() ->Result<(), vku::Error>{let vk_init:VkInit =todo!();let setup_cmd_buffer_pool =        vk_init.create_cmd_pool(CmdType::Any)?;let setup_cmd_buffer =        vk_init.create_command_buffers(&setup_cmd_buffer_pool,1)?[0];let setup_fence = vk_init.create_fence()?;        vk_init.begin_cmd_buffer(&setup_cmd_buffer)?;let extent =Extent3D{width:100,height:100,depth:1};let format =Format::R8G8B8A8_UNORM;let format_bytes =4;let aspect_flags =ImageAspectFlags::COLOR;letmut image = vk_init.create_empty_image(extent, format, format_bytes, aspect_flags)?;let image_barrier = image.get_image_layout_transition_barrier2(ImageLayout::TRANSFER_DST_OPTIMAL,None,None)?;// No queue family ownership transfer        vk_init.cmd_pipeline_barrier2(&setup_cmd_buffer,&[image_barrier],&[]);// Only this image barrier, no BufferMemoryBarriers        vk_init.end_and_submit_cmd_buffer(&setup_cmd_buffer,CmdType::Any,&setup_fence,&[],&[],&[])?;// Wait on setup fence, wait/signal no semaphoresOk(())}

Shader compilation with #include directives:

fnmain() ->Result<(), vku::Error>{let src_dir_path = std::path::Path::new("./assets/shaders/src/");let target_dir_path = std::path::Path::new("./assets/shaders/compiled_shaders/");let debug_text_result =true;        vku::compile_all_shaders(&src_dir_path,&target_dir_path, debug_text_result)?;Ok(())}

About

Utility crate for kickstarting vulkan development in Rust.

Topics

Resources

Stars

Watchers

Forks


[8]ページ先頭

©2009-2025 Movatter.jp