使用不带X11的Vulkan创建功能性Linux GUI

使用不带X11的Vulkan创建功能性Linux GUI,linux,user-interface,x11,vulkan,Linux,User Interface,X11,Vulkan,我想创建自己的用户界面,运行在一个基本的Linux发行版上。GUI将使用Vulkan呈现,我希望在没有X11的情况下获得用户输入。GUI将在操作系统加载后立即呈现,并成为主上下文 问题: 这样做意味着什么 我如何获得用户输入 如何配置GUI应用程序以正确加载 Vulkan不适合这种情况吗 你不能,因为Vulkan不是这样工作的 在Linux上,Vulkan是OpenGL的替代品,而不是X11。(类似地,在Windows上,它代替DirectX或OpenGL,而不是Windows。) 这样做意味

我想创建自己的用户界面,运行在一个基本的Linux发行版上。GUI将使用Vulkan呈现,我希望在没有X11的情况下获得用户输入。GUI将在操作系统加载后立即呈现,并成为主上下文

问题

  • 这样做意味着什么
  • 我如何获得用户输入
  • 如何配置GUI应用程序以正确加载
  • Vulkan不适合这种情况吗

    • 你不能,因为Vulkan不是这样工作的

      在Linux上,Vulkan是OpenGL的替代品,而不是X11。(类似地,在Windows上,它代替DirectX或OpenGL,而不是Windows。)

      这样做意味着什么

      Vulkan的设计是无头的。您至少可以在其中渲染某些内容,然后将其复制到原始字节(即使用
      vkMapMemory
      )。在扩展的帮助下,您甚至可以更高效地执行类似的操作(以0-copy方式)

      不过,Vulkan只是一个渲染API。它不是一个窗口系统。它不是X11(或Wayland,或Mir,或其他)的竞争对手。这样做意味着使用Wayland之类的替代方案(如果您的beef是专门针对X11的),或者实现您自己的

      我如何获得用户输入

      也不在Vulkan的范围之内。同样,可能意味着重新实现类似X11的东西

      如何配置GUI应用程序以正确加载

      如果您指的是现有的应用程序,那么您必须修改现有的基础设施,以便在无处不在的X11旁边接受并使用新的窗口管理器

      如果你指的是新的应用程序,那么这是特定于你打算创建的窗口管理器API的,不是吗

      Vulkan不适合这种情况吗


      这对于这个场景来说可能是好的(可能比OpenGL更合适)。但这可能也是这个想法最简单的方面。最困难的部分是Vulkan所做的一切而不是所做的一切,以及重新实施该控制盘所需的年份。

      我并不打算实际替换Vulkan和X11。如果你愿意的话,不如做“我自己的X11”。与扩展X11(像许多发行版一样)不同,我希望创建自己的渲染环境。一些不依赖于X的东西。我想使用Vulkan API来进行上述渲染。也许我需要消除X之间的相关性,因为这会让我的问题变得混乱。不幸的是,这并没有改变答案。Linux上可用的Vulkan驱动程序适用于X11。没有它它们就不能使用。我发现了这个项目:它确实使用了无头渲染(OpenGL)。我也在浏览Reddit,人们说你可以用Vulkan做同样的事情?这很有趣——看起来他们直接使用DRM(直接渲染管理器,而不是数字版权管理)模块。不过,我不会指望同样的伎俩能为Vulkan工作……它确实如此:。注意:除了DRM,该项目还包含对X和Wayland的支持。StackOverflow旨在帮助人们修复编程代码。对教程、研究、工具、建议、库和代码的请求是离题的。在这里发布更多Qs之前,请阅读、、和。祝你好运。Stack Overflow是一个关于编程和开发问题的网站。这个问题似乎离题了,因为它与编程或开发无关。请参见帮助中心中的。也许或者会是一个更好的提问的地方。可惜我不能回答。这里有一个例子:@MikeMestnik它的依赖关系是什么?我找不到ECM是什么,它要求我提供一个构建脚本示例:我应该在哪里查找有关使用DRM渲染Vulkan的信息?我在谷歌上找不到像样的学习材料。我已经设法找到了一些使用它的项目,只是没有任何解释它是如何工作的。@Scetra The,我想。AIS Vulkan部分是相对简单的一部分,阅读该部分就足够了。