我对上述库的关系有些困惑,以下是我的理解:
- Cairo 是一个2D图形库,GTK+使用它来渲染部件。Cairo是底层的。
- Cogl是一个基于OpenGL(或者是一个分支?我不知道)的3D图形库,Clutter是基于Cogl的3D GUI工具包。
如果我的理解正确,那么Clutter会取代GTK+吗?
还有...
如果您认为有更好的地方可以问这个问题,或者有一些我应该先读的书,请告诉我!我是为了兴趣自学编程的。
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