vulkan学习笔记十

创建VkCommandPool。

在vulkan中,绘制图元并不是通过调用函数的接口来实现的,而是通过提交绘制命令来实现绘制。

将绘制命令记录在指令缓冲区,然后提交给队列,在绘制时直接提交执行就可以了。

先在SceneWidget.h中添加创建VkCommandPool的函数:bool CreateCommandPool();再添加一个成员变量,保存生成的commandPool:VkCommandPool m_commandPool = VK_NULL_HANDLE;

在SceneWidget.cpp中添加bool CreateCommandPool();函数的实现。还是先写实现函数,然后补齐参数:

VkResult result = vkCreateCommandPool();

第一个参数:VkDevice device的值为m_device。

第二个参数:const VkCommandPoolCreateInfo* pCreateInfo,这里需要补一个结构的定义:VkCommandPoolCreateInfo  createInfo = {};传入createInfo的引用。

第三个参数:const VkAllocationCallbacks* pAllocator还是不指定,赋值为nullptr。

第四个参数:VkCommandPool* pCommandPool 传入刚添的成员变量m_commandPool的引用。

补齐createInfo的属性值:

createInfo.sType = VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO;这个数据结构的枚举值。

createInfo.pNext = nullptr;不用扩展,所以还是nullptr。

createInfo.flags;保持默认就行。

createInfo.queueFamilyIndex = m_index;使用之前已经找到的值:m_index。

具体函数实现如下:

分别在SceneWidget::Init中调用,和在SceneWidget::UnInit中清理资源:

清理函数:

vkDestroyCommandPool(m_device, m_commandPool, nullptr)

运行代码:

没有报错误信息:)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值