创建命令池和命令缓冲
在Vulkan
图形的定义上命令池是一个不透明的对象,分摊了很多命令缓冲区的创建资源成本,但是却是不同步的,所以千万不能跨线程使用.
命令缓冲区是一个用来记录命令的对象,这些命令就像email一样显卡肯定一下子看不完所以用缓冲区暂时的储存一下随后给显卡看.
Vulkan
有两个缓冲区一个是主要的缓冲区直接提交到队列,一个是辅助缓冲区,提交到主缓冲区.
// 创建命令池
let mut command_pool = unsafe {
device
.create_command_pool_typed(&queue_group, CommandPoolCreateFlags::RESET_INDIVIDUAL)
.map_err(|_| "创建命令池失败,错误可能来自底层接口")?
};
// 创建命令缓冲
let command_buffers: Vec<_> = framebuffers
.iter()
.map(|_| command_pool.acquire_command_buffer())
.collect();
写到这里,一个HardwareState
差不多就完工了
但是先别着急,看完下面这一章再开始抄代码.