网站建设教程 mysql线上营销推广方案模板
在vulkan中,指令池vkCommandPool
分配指令缓冲vkCommandBuffer
,而指令缓冲用于记录计算、渲染指令
,记录完后,把该指令缓冲提交给指令队列vkQueue
,然后等待执行。
实际上就可以简单理解为:
- 每个指令 <=> 一行有效代码、一个原子操作
- 指令缓冲
vkCommandBuffer
<=> 一个函数 - 指令队列
vkQueue
<=> 一个队列,每个元素是一个函数指针
class CommandQueue
{
public:// 提交指令到队列void Submit(std::function<void()> command) {commandQueue.push(command);}// 处理队列中的指令void ExecuteCommands() {while (!commandQueue.empty()) {auto command = commandQueue.front();command();commandQueue.pop();}}private:std::queue<std::function<void()>> commandQueue;
};int main()
{CommandQueue commandQueue;// 提交3个指令缓冲到队列,每个指令缓冲相当于一个函数,这里用lambda表达式commandQueue.Submit([]() { std::cout << "Command 1 executed." << std::endl; });commandQueue.Submit([]() { std::cout << "Command 2 executed." << std::endl; });commandQueue.Submit([]() { std::cout << "Command 3 executed." << std::endl; });// 处理队列中的指令commandQueue.ExecuteCommands();return 0;
}