krpano 场景切换 通知_一个基于Vulkan的异步场景加载设计

异步场景加载基本流程验证完成。

此方法理论上只需要使用3个Vulkan的指令队列。

对于移动平台上的Vulkan,指令队列数量极少,比如Adreno640只有3个指令队列可用。所以理论上这一设计也适合目前的移动平台使用。

(1) graphic_queue:用于完成当前场景的渲染。

(2) load_queue:用于在当前场景异步加载结点,或更新结点资源,比如ui贴图,文本。

(3) back_load_queue:用于在独立的线程中异步加载完整场景。

加载场景分别使用load_queue和back_load_queue两个队列的原因是,在back_load_queue加载场景时,当前场景可能需要load_queue来异步更新ui之类的资源。

graphic_queue只进行渲染相关或耗时较短的工作,对于耗时可能跨越多帧的操作,比如ui贴图更新,文本更新,通过异步任务队列,交由load_queue处理,load_queue处理完成后,通过同步任务通知graphic_queue,完成资源切换。

graphic_queue使用线程池中的多个用于执行单帧任务(Frame Graph)的线程并行记录渲染指令。

视频解释:

(1)
对于异步加载一个完整的场景
通过按钮广播点击消息给脚本管线对象
脚本管线对象调用脚本,通过viewer对象创建新线程加载场景。
新线程加载场景完成后,通过无锁队列添加同步任务到同步任务队列。
在同步任务中反转场景(反转场景实际上只是管线对象内部很少几个变量的交换,耗时极小),进入刚刚加载的场景。(同步任务,确保线程安全,并且如果没有需要执行的同步任务&#x

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值