vkSurface 概述

Vulkan 是一个平台无关的图形 API,这意味着它不能直接与特定的窗口系统 (Windows,linux 和 macOS 的窗口系统) 进行交互,但是在屏幕上渲染的需求客观存在
为了解决这个问题,Vulkan 引入了窗口系统集成 (Window System Intergration WSI) 机制,使得 Vulkan 应用程序可以与不同操作系统的窗口系统 (比如 Windows 的 Win32、Linux 的 X11 或者 Wayland、Android 的 ANativeWindow) 进行交互
这些机制运行 Vulkan 应用程序在窗口系统中创建和管理表面(Surface),并和图形硬件交换图像(Swapchain)
VK_KHR_surface 是WSI的核心扩展(instance 扩展),是 Vulkan 中用于渲染表面的对象,是一个平台无关的抽象类型,用于封装与窗口系统相关的表面信息,通过这个对象,Vulkan可以将渲染结果输出到窗口上
创建窗口表面
VkSurfaceKHR对象是平台无关的,但是创建VkSurfaceKHR对象时,不同的窗口系统需要使用不同的 API:
vkCreateAndroidSurfaceKHR()
vkCreateWaylandSurfaceKHR()
vkCreateWin32SurfaceKHR()
vkCreateXcbSurfaceKHR()
需要注意的是,创建Vulkan实例的时候需要提前设置好相应的扩展:
std::vector<const char*> instance_extensions;
instance_extensions.push_back("VK_KHR_surface");
instance_extensions.push_back("VK_KHR_win32_surface")

最低0.47元/天 解锁文章
1985

被折叠的 条评论
为什么被折叠?



