gpt4 book ai didi

qt - X-Windows、wxWidgets、GTK/Qt 和 OpenGL 有什么区别?

转载 作者:行者123 更新时间:2023-12-04 01:02:28 29 4
gpt4 key购买 nike

关闭。这个问题需要更多 focused .它目前不接受答案。












想改进这个问题?更新问题,使其仅关注一个问题 editing this post .

8年前关闭。




Improve this question




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

现在我是那些有“低级诅咒”的人之一:我不喜欢知道如何使用某些东西来达到良好的效果——我想知道引擎盖下发生了什么,即使它很少或没有实用值(value)。

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

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

  • 现在提出一些问题:坚持使用类 UNIX 系统:
  • 谁在这一切的底部?,即哪个组件呈现最终显示在屏幕上的位图?
  • 这是通过OpenGL完成的吗?如果是这样,谁调用 OpenGL?它是如何在没有显卡的旧 PC 上完成的?
  • 如果你想真的很固执,你能走多低?您可以在其中编写 GUI 的最原始 API 是什么? X11? OpenGL? (请不要说逻辑门:))。

  • 作为奖励,也许 Windows 操作系统呢?它是完全遵循类似的结构,还是完全按照自己的方式发展?

    最佳答案

  • X 服务器,解释说它本身会占用超过 10k 个单词。不适合 SO 答案。阅读代码,让你的眼睛爆炸。 Bare X 适用于软件渲染。在这种情况下,OpenGL 可以以两种不同的方式使用(见下图)。
  • 不,这取决于 X。X 只是另一个库,它可以根据开发人员的需要实现其绘图原语。但是 X 本身是一个非常复杂的野兽,它具有可笑的扩展数量,这使得今天的 X 可以正常工作(没有 OpenGL 支持,例如,没有 xrandr)。
  • 这取决于你愿意承受多少痛苦。您当然可以在屏幕上绘制 X 基元或 OpenGL 基元,但现在已经不是 80 年代了。

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

    因此,从这篇 wiki 文章中,您可以获得 GLX extension 的基本概述。到 X 原型(prototype):

    GLX

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

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

    关于qt - X-Windows、wxWidgets、GTK/Qt 和 OpenGL 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23253210/

    29 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com