vulkan api 会处理 window 创建吗?

Will vulkan api handle window creation?

听说vulkan会统一不同操作系统的初始化。这是否意味着 vulkan 创建 window、处理 mouse/keyboard 事件,这样我就可以避免使用 os 特定编程?

可能不是,Vulkan API 是一个很像 OpenGL 的图形库。

在 Linux Ubuntu 中,OpenGL 用于 Unity 中的桌面动画效果,可以用 Vulkan 替换以获得更好的性能。

但我不认为 Windows 会改变它,因为他们有自己的 DirectX 图形库,如果他们使用其他东西而不是他们自己的软件会很奇怪。

大多数将从 Vulkan 中受益的应用程序是游戏和其他使用 2D 或 3D 渲染的软件。 很可能大多数游戏都将改为使用 Vulkan,因为它是 Cross-platform,因此他们将获得更多的用户,这等于更多的利润。

Khronos(Vulkan API 开发人员)也推出了一些工具,这些工具将在很大程度上将您的应用程序从 OpenGL 或 DX12 移植到 Vulkan,因此对软件开发人员的需求更少 development/porting。

所以... Window 创造,可能。 (尽管 window 背后的代码是 CPU 方面的,但在屏幕上绘制 window 的库可能正在使用 Vulkan)——这与 OS、分发和您正在使用的版本。

Mouse/keyboard 个事件,不需要,因为这不需要任何图形计算,但需要 CPU 个计算。

不会。 Window 创建将特定于平台,并且 WSI 扩展可以让您 link 将 window 转换为可以推送到屏幕的可渲染图像。

根据从已提供的演示文稿中收集到的信息,我希望您将使用平台特定的 WSI 扩展为您的 window.

创建交换链

然后每次您希望将帧推到屏幕上时,您需要从交换链获取可展示的图像;渲染它然后呈现它。

请参阅 this slide pack 从幻灯片 109 开始。

不,Vulkan 是用于访问 GPU 的低级 API。它不处理 windows 和输入。事实上,它可以以 "headless" 的方式轻松使用,根本没有视觉输出。

Window (frames) 是通用的桌面管理器控件;您可以在客户区显示 vulkan 应用程序的内容,否则 vulkan 必须为桌面管理器提供接口以创建 window(GUI 库)。有人可以简单地创建一个设备上下文(windows 中的 DC,类似于 X 服务器),然后像没有 chrome(无框架)的 windowed 游戏一样手动管理 "vulkan app" ,但现在这将是一项大量的工作。

老手 Windows 开发人员圣经解决设备上下文和渲染等许多问题:编程 Windows®,第五版(开发人员参考)第 5 版 .非常好的阅读,从不可知论者的角度提供了大量可松散适用于大多数系统的结转知识。