Vulkan学习例子015: vulkan_015_multiview 多视口渲染

来源:网友推荐     更新:2025-05-16

多视口渲染的意义在于:


一次渲染,对Vulkan来说也就是一次指令的录制,可以同时渲染到多个视口(Viewport),好处是DrawCall的减少,渲染性能的提升。因此尤其适合VR这种需要左右眼渲染两次(左右眼作为摄像机导致其视区变换矩阵,投影矩阵又不一致)的应用。


实现多视口渲染需要添加如下的instance以及device的扩展:



  • 实例扩展VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME

  • 设备扩展VK_KHR_MULTIVIEW_EXTENSION_NAME


设置创建Vulkan设备时VK_KHR_multiview的扩展,从而支持多视口渲染。


该例子实现流程如下:




  1. 启动时的MultiView扩展设置




  2. 常规渲染的物体都使用第一个RenderPass渲染到对应创建的Framebuffer,Image(Color/Depth)中,这部分的组织,渲染与vulkan_014_multirenderpass例子大致的流程基本一致,可以参考。




  3. 不同点在于,此时对应于有几个View,我们需要使用几个Image(Color/Depth)来存储渲染结果,因此区别于vulkan_014_multirenderpass例子,此处需要使用ImageArray来对应不同的View的渲染结果。




  4. VkRenderPass创建的不同




  5. 传入UniformBuffer的不同




  6. 由于多视口渲染因此View/Proj变换矩阵不一样,当然还可能其他参数也有所不同,我们的例子只设置View/Proj变换矩阵的不一样。




使用第二个RenderPass把第一个RenderPass的Color渲染到最终的Framebuffer中并渲染到屏幕上,与例子vulkan_014_multirenderpass不同的是,本例不再使用四边形来进行Copy,采用了无顶点输入的渲染。


多视口渲染常用于VR,AR,视频多路实时显示等应用场合,掌握其关键核心知识,API后,实现各种不同的扩展应用,实际需求将是非常简单的。




注意:上述HTML代码仅为对原文内容的简化处理,可能在某些细节上与原文有所差异。

相关链接

  • vulkan
  • vulkanruntimelibraries可以卸载吗
  • vulkan是什么意思
  • vulkan和dx11
  • vulkanapi
  • vulkanruntimelibraries有什么用
  • vulkan版本1.0.3以上光遇怎么解决
  • vulkan版本1.0.3安装包
  • vulkan怎么开
  • vulkit什么牌子
  • 来自于网友分享,若有事请联系
    © 好有爱分享网