我已经做了几年控制台编程,现在是时候学习一下迷人的GUI世界了。我稍微尝试了一下wxWidgets;编译了一个Hello World程序,稍微玩了一下等。
现在我是那些“低层次魔咒”的人之一:我不满足于知道如何有效地使用某个东西 - 我想知道发生了什么,即使它没有或很少实际价值。
因此我一直在阅读这个主题(例如这里),但我发现很难理解所有不同的系统、工具包以及它们的作用。到目前为止,我已经弄清楚了(如果我错了,请纠正我):
- Linux本身只是一个内核;它不提供GUI支持(?)。
- X Window系统是大多数类UNIX系统上GUI的基础。
- GTK是一个GUI工具包,Qt包含一个GUI工具包。GTK和Qt处于相同的“级别”(?)。
- Gnome是基于GTK构建的桌面环境,KDE是基于Qt构建的。
- wxWidgets是一个库,它围绕着(?)低级工具包,如GTK,从而提供跨平台的好处。
- OpenGL是一个用于渲染2D和3D矢量图形的API。
现在有一些问题:坚持类UNIX系统:
- 谁在一切的底部?即最终显示在屏幕上的位图由哪个组件渲染?
- 这是通过OpenGL完成的吗?如果是,谁调用OpenGL?在没有显卡的旧PC上如何完成?
- 如果您想要真正固执,可以走多低?能够编写GUI的最原始的API是什么?X11?OpenGL?(请不要说逻辑门:))。
对于奖金,也许Windows操作系统怎么样呢?它是否遵循类似的结构,还是完全走自己的路?