使用不带 X11 的 Vulkan 创建功能性 Linux GUI
Create Functional Linux GUI Using Vulkan Without X11
我想创建我自己的用户界面,该界面 运行 在基本 Linux 发行版上。 GUI 将使用 Vulkan 呈现,我希望在没有 X11 的情况下获得用户输入。 GUI 将在 OS 加载后立即呈现并成为主要上下文。
问题:
- 这样做有什么意义?
- 我如何获得用户输入?
- 如何配置我的 GUI 应用程序以正确加载?
- Vulkan 不适合这种场景吗?
你不能,因为那不是 Vulkan 的工作方式。
在 Linux 上,Vulkan 是 OpenGL 的替代品,而不是 X11 的替代品。 (同样,在 Windows 上它替代了 DirectX 或 OpenGL,而不是 Desktop Window Manager。)
What are the implications in doing this?
Vulkan 在设计上是无头的。至少你可以在其中渲染一些东西,然后将它复制到原始字节(即使用 vkMapMemory
)。在 VK_KHR_external_*
扩展的帮助下,你甚至可以更有效地做类似的事情(以 0 拷贝的方式)。
不过 Vulkan 只是一个渲染图 API。它不是 windowing 系统。它不是 X11(或 Wayland、Mir 或其他)的竞争对手。做那样的事情意味着使用像 Wayland 这样的替代方案(如果你的牛肉专门用于 X11)或实现你自己的。
How would I obtain user input?
也不在 Vulkan 的范围内。同样,可能意味着重新实现类似 X11 的东西。
How could I configure my GUI application to correctly load?
如果您指的是现有应用程序,则必须修改现有基础架构,以便在无处不在的 X11 旁边也接受和使用新的 window 管理器。
如果您指的是新应用程序,那么它特定于您打算创建的 window 管理器 API,不是吗?
Is Vulkan not ideal for this type of scenario?
对于这种情况,它可能很好(可能比 OpenGL 曾经更好)。但这也可能是这个想法最简单的方面。困难的部分是 Vulkan 不 做的所有事情以及重新实现该轮子所需的年数。
我想创建我自己的用户界面,该界面 运行 在基本 Linux 发行版上。 GUI 将使用 Vulkan 呈现,我希望在没有 X11 的情况下获得用户输入。 GUI 将在 OS 加载后立即呈现并成为主要上下文。
问题:
- 这样做有什么意义?
- 我如何获得用户输入?
- 如何配置我的 GUI 应用程序以正确加载?
- Vulkan 不适合这种场景吗?
你不能,因为那不是 Vulkan 的工作方式。
在 Linux 上,Vulkan 是 OpenGL 的替代品,而不是 X11 的替代品。 (同样,在 Windows 上它替代了 DirectX 或 OpenGL,而不是 Desktop Window Manager。)
What are the implications in doing this?
Vulkan 在设计上是无头的。至少你可以在其中渲染一些东西,然后将它复制到原始字节(即使用 vkMapMemory
)。在 VK_KHR_external_*
扩展的帮助下,你甚至可以更有效地做类似的事情(以 0 拷贝的方式)。
不过 Vulkan 只是一个渲染图 API。它不是 windowing 系统。它不是 X11(或 Wayland、Mir 或其他)的竞争对手。做那样的事情意味着使用像 Wayland 这样的替代方案(如果你的牛肉专门用于 X11)或实现你自己的。
How would I obtain user input?
也不在 Vulkan 的范围内。同样,可能意味着重新实现类似 X11 的东西。
How could I configure my GUI application to correctly load?
如果您指的是现有应用程序,则必须修改现有基础架构,以便在无处不在的 X11 旁边也接受和使用新的 window 管理器。
如果您指的是新应用程序,那么它特定于您打算创建的 window 管理器 API,不是吗?
Is Vulkan not ideal for this type of scenario?
对于这种情况,它可能很好(可能比 OpenGL 曾经更好)。但这也可能是这个想法最简单的方面。困难的部分是 Vulkan 不 做的所有事情以及重新实现该轮子所需的年数。