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