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

mol*_*kto 17 gtk cairo clutter cogl

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

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

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

和...

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

eba*_*ssi 42

是的,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
Run Code Online (Sandbox Code Playgroud)

  • 为了让它回家一点,如果你是一个应用程序开发人员,你可以使用gtk来创建窗口,菜单,工具栏等,并使用杂乱来绘制任何"绘图区域"的应用程序内容,并且不适合小部件基于应用程序的隐喻.在杂乱无章的情况下,您可以挖掘开罗的具体绘图任务. (4认同)