Представлен выпуск новой стабильной ветки графической библиотеки Clutter - 1.6.0, API и ABI которой обратно совместимы с прошлыми версиями библиотеки.

Библиотека работает поверх OpenGL, GLib, GObject, GLX, SDL, WGL, Quartz, EGL и Pango, имеются биндинги для языков Perl, Python, C#, C++, Vala и Ruby. Исходные тексты распространяются в рамках лицензии LGPLv 2.1. Библиотека Clutter ориентирована на активное использование анимации и визуальных эффектов, что позволяет применять при создании обычных GUI приложений методы, используемые при разработке игр. При этом сама библиотека напоминает игровой движок, в котором максимальное число операций выносится на плечи GPU. Одним из основных преимуществ Clutter является то, что для создания сложного интерфейса пользователя требуется написание минимума кода.

Clutter активно используется для обеспечения работы пользовательского интерфейса в проекте Moblin/MeeGo, в недалёком будущем рабочая оболочка GNOME 3.0 также будет основана на использовании Clutter интерфейса к GTK+. Кроме Clutter-GTK в настоящий момент доступны такие интеграционные модули, как:

  • Clutter-GStreamer для отображения видеопотоков в виде элементов холста Clutter;
  • Clutter-Box2D для симулирования физических процессов, таких как гравитация, инерция или реалистичные столкновения;
  • Clutter-MozEmbed и Clutter-WebKit для рендеринга web-страниц через движок Mozilla Gecko или WebKit;
  • Clutter-Qt для интеграции возможностей Clutter в Qt приложения.

Ключевые новшества Clutter 1.6.0:

  • Добавлен экспериментальный бэкенд для обеспечения работы с дисплейным сервером Wayland;
  • Базовый класс ClutterActor теперь позволяет определять 3D-объём, занимаемый в процессе отрисовки, что позволяет более корректно вычислять размер FBO и выполнять обновление сцены частями, которые затем будут собраны в единое целое на стороне клиента. В конечном итоге данная возможность позволяет увеличить производительность в процессе отрисовки сцены;
  • Добавлены ограничители ClutterPathConstraint и ClutterSnapConstraint, которые можно использовать для упрощения построения интерфейсов пользователя;
  • Базовый класс ClutterBehaviour и все связанные с ним подклассы объявлены устаревшими. Вместо ClutterBehaviour отныне следует использовать API анимационного фреймворка;
  • Добавлено свойство ClutterTimeline:auto-reverse, позволяющее автоматически менять направление заполнения шкалы времени, после завершения заполнения;
  • Поддержка в классе ClutterColor возможности парсинга CSS3-определений цветов и вывода глобально определенного списка цветов;
  • Реализована генерация GLSL-шейдеров для описания состояния конвейера (pipeline). Данный бэкенд используется по умолчанию для OpenGL ES 2.0, но может быть использован и вместо ARBfp для OpenGL;
  • Поддержка полного описания типов столбцов и значений строк класса ClutterListModel, используя определения ClutterScript;
  • Возможность использования XI2 для обработки X11-событий и заполнения для каждого события параметров координат в которых находится курсор;
  • Для GLES 2.0 включена поддержка расширения VBO (Vertex Buffer Object), а для EGL добавлена поддержка каландрированной перерисовки;
  • В качестве обязательных зависимостей заявлены: GLib 2.26.0, JSON-GLib 0.12, Cairo 1.10, Pango 1.20, Atk 1.7, OpenGL 1.3 или OpenGL 1.2 + multi-texturing или OpenGL|ES 1.1/2.0, реализации GLX, WGL, Quartz или EGL. Из опциональных зависимостей отмечены GDK-Pixbuf 2.0 и UProf 0.3.


Источник: http://www.opennet.ru/opennews/art.shtml?num=29440