Отношения между библиотеками: Clutter, Cogl, Clutter, GTK+ и т. Д.

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

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

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

А также...

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

1 ответ

Решение

Да, 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

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

Другие вопросы по тегам