【问题标题】:What's the difference between X-Windows, wxWidgets, GTK/Qt and OpenGL? [closed]X-Windows、wxWidgets、GTK/Qt 和 OpenGL 有什么区别? [关闭]
【发布时间】:2014-06-08 19:29:39
【问题描述】:

我从事控制台编程已有几年了,现在是时候了解一下迷人的 GUI 世界了。我在 wxWidgets 中涉猎过一些;编译了一个 Hello World 程序,玩了一下,等等。

现在我是那些有“低级诅咒”的人之一:我不喜欢知道如何使用某些东西来产生良好的效果 - 我想知道引擎盖下发生了什么,即使它是几乎没有实用价值。

所以我一直在阅读这个主题(例如here),但我发现很难理解所有不同的系统、工具包以及它们的作用。到目前为止,我已经弄清楚了(如果我错了,请纠正我):

  • Linux 本身“只是”一个内核;它不提供 GUI 支持 (?)。
  • X Window 系统是大多数类 UNIX 系统上 GUI 的基础。
  • GTK 是一个 GUI 工具包,Qt 包含一个 GUI 工具包。 GTK 和 Qt 处于同一“级别”(?)。
  • Gnome 是基于 GTK 构建的桌面环境,KDE 是基于 Qt 构建的。
  • wxWidgets 是一个包含 (?) 较低级别工具包(如 GTK)的库,从而提供跨平台优势。
  • OpenGL 是一种用于渲染 2 维和 3 维矢量图形的 API。

现在提出一些问题:坚持使用类 UNIX 系统:

  1. 谁在这一切的底部?,即哪个组件呈现最终显示在屏幕上的位图?
  2. 这是通过 OpenGL 完成的吗?如果是这样,谁调用 OpenGL?在没有显卡的旧电脑上是如何做到的?
  3. 如果你想真的固执,你能做到多低?您可以在其中编写 GUI 的最原始 API 是什么? X11? OpenGL? (请不要说逻辑门 :))。

另外,Windows 操作系统怎么样?它是完全遵循类似的结构,还是完全按照自己的方式发展?

【问题讨论】:

  • 这类问题比较适合programmers.stackexchange.com
  • 亲爱的@mga:我谦虚地建议您将问题的标题重命名为“X-Windows、wxWidgets、GTK/Qt 和 OpenGL 之间有什么区别?”这样就可以找到问题并对其他人有用。
  • 我同意 RobbieE 的观点。此外,它太宽泛了。

标签: qt user-interface gtk wxwidgets


【解决方案1】:
  1. X 服务器,解释说它自己会占用超过 10k 字。不适合 SO 答案。阅读代码,让你的眼睛爆炸。 Bare X 适用于软件渲染。 OpenGL 可以在该上下文中以两种不同的方式使用(见下图)。

  2. 没有。这取决于 X。X 只是另一个库,它可以根据开发人员的需要实现其绘图原语。但是 X 本身是一个非常复杂的野兽,它的扩展数量荒谬,这使得今天的 X 功能如此(没有 OpenGL 支持,就像一个例子,没有 xrandr)。

  3. 这取决于你愿意承受多少痛苦。您当然可以在屏幕上绘制 X 基元或 OpenGL 基元,但现在已经不是 80 年代了。

Gtk+/Qt 是操作系统特定 API (X/Wayland/W*) 的抽象,以减轻创建 GUI 的痛苦并减少要编写的代码量。这些抽象本身具有很高的复杂性并跨越数千行代码(只需看看 Gtk+ 提供的 GtkTreeView Klass)。因此,您现在可以只定义按钮和布局以及小部件的打包,而不是绘制像素。


因此,您可以从这篇 wiki 文章中获得关于 X 原型的 GLX extension 的基本概述:

还可以查看使用X完成绘图的概述

请注意,如果 Wayland 和/或 Mir 启动,这有望在几年后过时。这些是完全不同的故事。

【讨论】:

    猜你喜欢
    • 2010-12-20
    • 1970-01-01
    • 2015-01-10
    • 1970-01-01
    • 2011-06-16
    • 1970-01-01
    • 2021-04-10
    • 2014-11-05
    相关资源
    最近更新 更多