启用的WSI扩展创建Vulkan实例

通过已启用的WSI扩展创建Vulkan实例
要通过合适的方式在屏幕上显示图像,需要启用一系列WSI扩展。根据这些扩展实现的功能,可将这些扩展划分为实例级和设备级。第一个步骤是通过一系列已启用的扩展创建Vulkan实例,这些扩展用于创建显示曲面(Vulkan显示应用程序窗口的方式)。

具体处理过程
在Windows操作系统中执行下列步骤。
(1)创建一个VkInstance类型的变量,将其命名为instance。
(2)创建一个std::vector<char const*>类型的变量,将其命名为desired_extensions。将想要启用的所有扩展的名称,存储在desired_extensions变量中。
(3)使用VK_KHR_SURFACE_EXTENSION_NAME常量,为vector容器中desired_extensions变量添加一个元素。
(4)使用VK_KHR_WIN32_SURFACE_EXTENSION_NAME常量,为vector容器中desired_extensions变量添加一个元素。
(5)创建Vulkan实例,并为该实例启用desired_extensions变量中存储的所有扩展。
在通过XLIB接口使用X11窗口系统的Linux操作系统中,执行下列步骤。
(1)创建一个VkInstance类型的变量,将其命名为instance。
(2)创建一个std::vector<char const*>类型的变量,将其命名为desired_extensions。将想要启用的所有扩展的名称,存储在desired_extensions变量中。
(3)使用VK_KHR_SURFACE_EXTENSION_NAME常量,为vector容器中desired_extensions变量添加一个元素。
(4)使用VK_KHR_XLIB_SURFACE_EXTENSION_NAME常量,为vector容器中desired_extensions变量添加一个元素。
(5)创建Vulkan实例,并为该实例启用desired_extensions变量中存储的所有扩展。
在通过XCB接口使用X11窗口系统的Linux操作系统中,执行下列步骤。
(1)创建一个VkInstance类型的变量,将其命名为instance。
(2)创建一个std::vector<char const*>类型的变量,将其命名为desired_extensions。将想要启用的所有扩展的名称,存储在desired_extensions变量中。
(3)使用VK_KHR_SURFACE_EXTENSION_NAME常量,为vector容器中desired_extensions变量添加一个元素。
(4)使用VK_KHR_XCB_SURFACE_EXTENSION_NAME常量,为vector容器中desired_extensions变量添加一个元素。
(5)创建Vulkan实例,并为该实例启用desired_extensions变量中存储的所有扩展。

具体运行情况
实例级扩展用于创建、管理和销毁显示曲面(presentation surface)。实例级扩展是一种(跨平台)显示应用程序窗口的方式,通过实例级扩展可以查明我们是否能够绘制窗口[显示图像(一种显示方式)是队列家族的附加功能]、有哪些实例级扩展的参数,以及该实例级扩展支持哪些显示模式(在想要启用或禁用垂直同步的情况下)。
显示曲面直接与我们编写的应用程序窗口关联,因此只能通过与指定操作系统对应的方式创建显示曲面。这就是通过扩展引入该功能,以及每种操作系统都拥有其本身用于创建显示曲面扩展的原因。Windows操作系统中使用的扩展为VK_KHR_win32_surface,通过XLIB接口使用X11窗口系统的Linux操作系统,使用的扩展为VK_KHR_xlib_surface;通过XCB接口使用X11窗口系统的Linux操作系统,使用的扩展为VK_KHR_xcb_surface。
销毁已启用的显示曲面时,需要使用VK_KHR_surface扩展。所有种类的操作系统都使用该扩展。因此,为了通过适当的方式管理显示曲面、查明显示曲面的参数,以及验证显示曲面的功能,需要在创建Vulkan实例的过程中启用两个扩展。
VK_KHR_win32_surface和VK_KHR_surface扩展提供了在Windows操作系统中,创建和销毁显示曲面的功能。
TIP VK_KHR_xlib_surface和VK_KHR_surface扩展提供了在通过XLIB接口使用X11窗口系统的Linux操作系统中,创建和销毁了显示曲面的功能。
VK_KHR_xcb_surface和VK_KHR_surface扩展提供了在通过XCB接口使用X11窗口系统的Linux操作系统中,创建和销毁了显示曲面的功能。
要创建用于支持创建和销毁显示曲面处理过程的Vulkan实例,需要编写下列代码。

启用的WSI扩展创建Vulkan实例

上面代码在开头使用了一个vector容器变量,使用该变量存储想要启用的扩展的名称,这段代码将必要的WSI扩展添加到了这个vector容器中,这些扩展的名称是通过便捷的预处理指令提供的。它们的定义存储在vulkan.h文件中。有了这些定义,我们就不需要记住这些扩展的确切名称,如果记错了,编译器也会帮助我们更正。
创建好必要扩展的名单后,就可以创建Vulkan实例。

酷客网相关文章:

赞(0)

评论 抢沙发

评论前必须登录!

 

Vulkan实战