库之间的关系:Clutter,Cogl,Clutter,GTK +等

时间:2012-01-25 15:53:46

标签: gtk cairo clutter cogl

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

  1. Cario是一个2D图形库,GTK +使用它来渲染小部件。卡里奥是低级别的。
  2. Cogl是一个基于OpenGL(或者是fork?我不知道)的3D图形库,而Clutter是一个基于Cogl的3D GUI工具包。
  3. 如果这是正确的,那么Clutter有一天会取代GTK +吗?

    和...

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

1 个答案:

答案 0 :(得分:41)

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

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

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

Clutter不会取代GTK +:GTK +是一个非常复杂的库,它提供系统集成,复杂的小部件以及Clutter无意提供的其他实用程序API。

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

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

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

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

简而言之,图表可能是:


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