图形库之间的关系:Clutter、Cogl、Clutter、GTK+等。

23

我对上述库的关系有些困惑,以下是我的理解:

  1. Cairo 是一个2D图形库,GTK+使用它来渲染部件。Cairo是底层的。
  2. Cogl是一个基于OpenGL(或者是一个分支?我不知道)的3D图形库,Clutter是基于Cogl的3D GUI工具包。

如果我的理解正确,那么Clutter会取代GTK+吗?

还有...

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

1个回答

47

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,与窗口系统表面进行通信并获取输入事件。

未来,完全有可能将Clutter作为其小部件基础的底层库嵌入到GTK+中——尽管这仍然是一个正在进行中的工作。

简而言之,如下示意图:


  GPU <- [ [ Cogl + Cairo ] <- [ GDK + Clutter ] <- GTK+ ] <- application

5
为了更加通俗易懂地解释,如果你是一个应用程序开发者,你可能会使用gtk创建窗口、菜单、工具栏等,并使用clutter绘制任何类似于“绘图区域”的应用程序内容,这些内容不适合基于小部件的应用程序隐喻。在clutter中,你可能会深入研究Cairo以完成特定的绘图任务。 - Bill Gribble
现在,Clutter 将要被淘汰了,那么它的替代品是什么呢? - Paolo Benvenuto
GTK4和libadwaita是几乎整个Clutter API的替代品。 - ebassi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接