Using Vulkan -- Window System Integration (WSI)
由于 Vulkan API 可不显示结果即可使用WSI通过可选 Vulkan 扩展提供。多数实现会包含 WSI 支持。WSI 设计用于将各平台窗口机制与 Vulkan 核心 API 隔离开。设置可呈现图像的步骤表面SurfaceVkSurfaceKHR对象与平台无关设计为 Vulkan API 其余部分可将其用于所有 WSI 操作。通过VK_KHR_surface扩展启用。每个支持 Vulkan 表面的平台都有其从对应平台专用 API 创建VkSurfaceKHR对象的专属方式Android - vkCreateAndroidSurfaceKHRDirectFB - vkCreateDirectFBSurfaceEXTFuchsia - vkCreateImagePipeSurfaceFUCHSIAiOS - vkCreateIOSSurfaceMVKmacOS - vkCreateMacOSSurfaceMVKMetal - vkCreateMetalSurfaceEXTVI - vkCreateViSurfaceNNWayland - vkWaylandSurfaceCreateInfoKHRQNX - vkCreateScreenSurfaceQNXWindows - vkCreateWin32SurfaceKHRXCB - vkCreateXcbSurfaceKHRXlib - vkCreateXlibSurfaceKHRDirect-to-Display - vkCreateDisplayPlaneSurfaceKHR创建VkSurfaceKHR后可查询多种能力、格式与呈现模式。交换链SwapchainVkSwapchainKHR对象提供通过VkImage对象数组将渲染结果呈现到表面的能力。交换链的多种呈现模式决定呈现引擎的实现方式。Khronos 的示例与教程说明了创建交换链与选择呈现模式时需考虑的不同事项。预旋转Pre-Rotation移动设备可旋转因此应用窗口的逻辑方向与显示器物理方向可能不一致。应用需在两种模式下运行portrait竖屏与landscape横屏。两种模式的差异可简化为分辨率变化。但部分显示子系统始终以显示面板的 “原生”或 “物理”方向工作。设备旋转后为达到预期效果应用输出也必须旋转。为让应用在 Android 等移动平台上充分发挥 Vulkan 性能实现预旋转必不可少。Google 有一篇详细博客文章讲解如何在交换链创建时指定方向来处理表面旋转并附带独立示例。Vulkan-Samples 也详细说明了预旋转问题的成因并有可运行示例展示在着色器中解决该问题的方法。若使用 Adreno GPU 设备Qualcomm 建议使用VK_QCOM_render_pass_transform扩展实现预旋转。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2421892.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!