Windows (Win32 API)和OS X (Cocoa)都有自己的API来处理窗口、事件和其他操作系统的东西。我从来没有真正得到一个明确的答案,Linux的等效是什么?

我听到有人说GTK+,但GTK+是跨平台的。怎么可能是本土的呢?


当前回答

为了补充前面提到的内容,在这个博客上有一个关于Linux图形堆栈的很好的概述:http://blog.mecheye.net/2012/06/the-linux-graphics-stack/

这解释了X11/Wayland等以及它们是如何组合在一起的。除了已经提到的内容,我认为有必要添加一些关于你可以在Linux中用于图形的API:

Mesa——“Mesa有很多功能,但它最著名的功能之一是它的OpenGL实现。它是OpenGL API的开源实现。”

Cairo——Cairo是一个绘图库,可以被Firefox等应用程序直接使用,也可以通过GTK+等库来绘制矢量形状。

DRM(直接渲染管理器)——我对这个理解最少,但它基本上是内核驱动程序,可以让你直接将图形写入framebuffer,而不需要经过X

其他回答

linux中最接近Win32的是libc,正如你所提到的,不仅是UI,还有事件和“其他操作系统的东西”

韦兰

您可能听说过,wayland是目前许多发行版的特色选择,因为它的协议比X更简单。

wayland的工具包

wayland建议的工具箱或gui库是:

QT 5 GTK+ 迷幻剂 杂乱 FFo

Wayland也值得一提,因为它通常被称为“未来的X11杀手”。

还要注意,Android和其他一些移动操作系统不包括X11,尽管它们有Linux内核,所以从这个意义上说,X11并不是所有Linux系统的本机。

跨平台与本土化没有任何关系。Cocoa也通过GNUStep移植到其他平台,但它仍然是OS X / macOS的原生版本。

GUI是功能的高级抽象,所以从XOrg服务器到OpenGL的几乎所有东西都是跨平台移植的,包括Windows平台。但如果你所说的GUI API是指*nix图形API,那么你可能会在“直接渲染基础设施”附近徘徊。

为了补充前面提到的内容,在这个博客上有一个关于Linux图形堆栈的很好的概述:http://blog.mecheye.net/2012/06/the-linux-graphics-stack/

这解释了X11/Wayland等以及它们是如何组合在一起的。除了已经提到的内容,我认为有必要添加一些关于你可以在Linux中用于图形的API:

Mesa——“Mesa有很多功能,但它最著名的功能之一是它的OpenGL实现。它是OpenGL API的开源实现。”

Cairo——Cairo是一个绘图库,可以被Firefox等应用程序直接使用,也可以通过GTK+等库来绘制矢量形状。

DRM(直接渲染管理器)——我对这个理解最少,但它基本上是内核驱动程序,可以让你直接将图形写入framebuffer,而不需要经过X