22

我对上面列出的库的关系有点困惑,以下是我的想法:

  1. Cairo 是一个 2D 图形库,GTK+ 使用它来渲染小部件。卡里奥是低级的。
  2. Cogl 是一个基于 OpenGL 的 3D 图形库(还是一个 fork?我不知道),而 Clutter 是一个基于 Cogl 的 3D GUI 工具包。

如果这是正确的,Clutter 有一天会取代 GTK+ 吗?

和...

如果您认为有更好的地方可以提出这个问题或者我应该先阅读一些书籍,请告诉我!我是出于兴趣而自学编程。

4

1 回答 1

46

是的,Cairo 是一个高质量的 2D 绘图 API,GTK+ 使用 Cairo 来绘制自己。

Cogl 是一个 GPU 编程库,内部可以使用 GL 或 GLES 访问图形管道(尽管理论上它可以在支持的平台上轻松使用 DirectX)。

Clutter 使用 Cogl 进行渲染,但它也可以使用 Cairo 来处理 2D 元素。

Clutter 不会取代 GTK+:GTK+ 是一个非常复杂的库,它提供系统集成、复杂的小部件和其他 Clutter 没有兴趣提供的实用程序 API。

与黑白替代品相比,未来将更加灰暗。

Cairo 可以使用 Cogl 进行绘图;Cogl 将对 GPU 管道进行编程,但 Cairo 将生成要提交的几何图形,因此您可以获得高质量的 2D 结果。Cairo 已经可以直接使用 GL,但是 Cogl 已经有了更好的状态跟踪。

Clutter 可以使用 GDK(GTK+ 窗口系统 API)与窗口系统表面对话并获取输入事件。

将来,GTK+ 完全有可能在内部使用 Clutter 作为其小部件的基础——尽管这仍在进行中。

简而言之,图表可以是:


  GPU <- [ [ Cogl + Cairo ] <- [ GDK + Clutter ] <- GTK+ ] <- application
于 2012-01-25T17:19:47.590 回答