我听说 vulkan 会统一不同操作系统上的初始化。这是否意味着 vulkan 创建窗口、处理鼠标/键盘事件以便我可以避免使用特定于操作系统的编程?
4 回答
它不会。窗口创建将是特定于平台的,并且 WSI 扩展将允许您将窗口链接到可以推送到屏幕的可渲染图像。
从已经给出的演示文稿中收集到的信息,我希望您将使用特定于平台的 WSI 扩展来为您的窗口创建一个交换链。
然后,每次您希望将帧推送到屏幕时,您都需要从交换链中获取可呈现的图像;渲染它,然后呈现它。
从幻灯片 109 开始,请参阅此幻灯片包。
不,Vulkan 是用于访问 GPU 的低级 API。它不处理窗口和输入。事实上,它可以以“无头”方式轻松使用,根本没有视觉输出。
可能不是,Vulkan API 是一个图形库,很像 OpenGL。
在 Linux Ubuntu 中,OpenGL 用于 Unity 中桌面的动画效果,可以用 Vulkan 替换以获得更好的性能。
但我不认为 Windows 会改变它,因为他们有自己的 DirectX 图形库,如果他们使用其他东西而不是他们自己的软件会很奇怪。
将从 Vulkan 中受益的大多数应用程序是游戏和其他使用 2D 或 3D 渲染的软件。大多数游戏很可能会改用 Vulkan,因为它是跨平台的,因此他们将获得更多的用户,这等于更多的利润。
Khronos(Vulkan API 开发人员)还推出了一些工具,这些工具主要将您的应用程序从 OpenGL 或 DX12 移植到 Vulkan,因此需要较少的软件开发人员方面的开发/移植。
所以...可能会创建窗口。(虽然窗口后面的代码是 CPU 端的,但在屏幕上绘制窗口的库可能正在使用 Vulkan)——这与您正在使用的操作系统、发行版和版本有很大不同。
鼠标/键盘事件,不,因为这不需要任何图形计算,而是 CPU 计算。
窗口(框架)是通用的桌面管理器控件;您可以在客户区显示 vulkan 应用程序的内容,否则 vulkan 必须为桌面管理器提供接口以创建窗口(GUI 库)。有人可以简单地创建一个设备上下文(Windows 中的 DC,类似于 X 服务器),然后像没有 chrome(无框架)的窗口游戏一样手动管理“vulkan 应用程序”,但现在这将是大量工作。
旧手 Windows 开发人员圣经解决设备上下文和渲染等问题:Programming Windows®, Fifth Edition (Developer Reference) 5th Edition。非常好的阅读和不可知论的观点提供了大量松散适用于大多数系统的继承知识。