Связь между библиотеками: Clutter, Cogl, Clutter, GTK + и т.д.

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

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

Если это правильно, заменит ли Clutter GTK +?

А...

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

Ответы

Ответ 1

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

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

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

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

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

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

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

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

вкратце, диаграмма может быть:


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

Ответ 2

Я думаю, что взаимосвязь между библиотеками взаимозависима; то есть библиотека не может стоять сама по себе. Он должен зависеть от других, чтобы бежать.