Отношения между библиотеками: Clutter, Cogl, Clutter, GTK + и др - PullRequest
17 голосов
/ 25 января 2012

Я немного озадачен отношением библиотек, перечисленных выше, вот что я думаю:

  1. Cario - это 2D графическая библиотека, и GTK + использует ее для визуализации виджетов.Cario является низкоуровневым.
  2. Cogl - это библиотека трехмерной графики, основанная на OpenGL (или разветвление? Я не знаю), а Clutter - это набор инструментов для трехмерного графического интерфейса на основе Cogl.

Если это правильно, заменит ли когда-нибудь Clutter GTK +?

И ...

Если вы считаете, что есть лучшее место, чтобы задать этот вопрос или несколько книг, которые я должен прочитать в первую очередь,скажи пожалуйста!Я изучаю программирование для интереса.

1 Ответ

42 голосов
/ 25 января 2012

да, Cairo - это высококачественный API для 2D-рисования, а GTK + использует Cairo для рисования.

Cogl - это библиотека программирования на GPU, которая может использовать GL или GLES для доступа к графическому конвейеру (хотя в теориион может так же легко использовать DirectX на поддерживаемых платформах.)

Clutter использует Cogl для рендеринга, но он также может использовать Cairo для 2D-элементов.

Clutter не заменит GTK +: GTK + очень сложныйбиблиотека, которая обеспечивает системную интеграцию, сложные виджеты и другие служебные API, которые Clutter не заинтересован в предоставлении.

будущее будет немного более серым, чем черно-белая замена.

Каир может использовать Cogl для рисования;Cogl запрограммирует конвейер графического процессора, но Cairo сгенерирует геометрию, которая будет представлена, чтобы вы могли получить высококачественные результаты 2D.Cairo уже может использовать GL напрямую, но Cogl уже лучше отслеживает состояние.

Clutter может использовать GDK, API оконной системы GTK +, чтобы общаться с поверхностями оконной системы и получать входные события.

в будущем, вполне возможно, что GTK + будет использовать Clutter внутренне в качестве основы для своих виджетов - хотя это еще в стадии разработки.

Короче говоря, диаграмма может быть:


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