当前位置: 首页 > news >正文

vulkan中的指令队列的大致原理

在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;
}
http://www.dtcms.com/a/7380.html

相关文章:

  • Elasticsearch:Search tutorial - 使用 Python 进行搜索 (三)
  • MySQL:ERROR 1067 - Invalid default value for ‘end_time‘【解决办法】
  • Veeam Backup12安装备份恢复ESXI7.0 U3虚拟机
  • Centos创建一个Python虚拟环境
  • 【书生·浦语大模型实战营04】《(4)XTuner 大模型单卡低成本微调实战》学习笔记
  • ES自动补全
  • Rust 宏的使用
  • 把项目转换为md知识库,提供给gpts使用
  • ffmpeg 视频分辨率修改 质量压缩
  • mysql进阶-索引基础
  • 视频转为序列图的软件,让视频批量转为序列图
  • Linux Capabilities 进阶实战
  • 单因素方差分析--R
  • docker容器互通方式
  • k8s的node亲和性和pod亲和性和反亲和性 污点 cordon drain
  • prometheus常用exporter
  • [含完整代码]Linux使用.sh脚本自动部署(启动|停止|状态|日志)项目[超详细]
  • Unity URP下阴影锯齿
  • 数据结构:堆和堆排序
  • 基于elementUI的el-table组件实现按住某一行数据上下滑动选中/选择或取消选中/选择鼠标经过的行
  • cfa一级考生复习经验分享系列(十八)
  • 影响邮件打开率的因素有哪些?
  • C //练习 5-4 编写函数strend(s, t)。如果字符串t出现在字符串s的尾部,该函数返回1;否则返回0。
  • Java多线程并发篇----第十三篇
  • JsonPath
  • test-04-test case generate 测试用例生成 tcases 快速开始
  • 【进程调度】基于优先级的轮转调度C++实现算法
  • 人工智能_机器学习092_使用三维瑞士卷数据_利用分层聚类算法进行瑞士卷数据三维聚类---人工智能工作笔记0132
  • Bean作用域及生命周期
  • 任务类型划分