Если коротко, openFrameworks — это проект с открытым исходным кодом на C++, представляющий собой набор укомплектованных инструментов (фреймворков) для разработки кросс-платформенных приложений, не только настольных, но и мобильных. Распространяется по лицензии MIT.

Разработка кросс-платформенных приложений еще никогда не была настолько простой. Да, мы уже знакомы с подобными либами (навскидку: Qt, Cinder), однако openFrameworks идет еще дальше, предоставляя программисту более широкие возможности.

 

openFrameworks is detected

С самого начала openFrameworks создавался как инструмент для разработки технических приложений, требующих звукового и графического сопровождения. В настоящее время в состав входят модули для интеграции с Kinect и Andruino, с системой машинного зрения, с сенсором Leap Motion (пока не включен в релизную ветку) и другие.

Созданный в соответствии с философией DIWO (сделай это с помощью других), openFrameworks представляет собой не просто набор разрозненных фреймворков, а стройную библиотеку для языка C++, позволяющую одинаковым образом работать с разными фреймворками. То есть openFrameworks — это своего рода прослойка между пользовательским кодом и компонентами, связывающая их и предоставляющая программисту лаконичный интерфейс для работы с ними.

OpenFrameworks включает следующие библиотеки:

  • для работы с графикой: OpenGL, GLEW, GLUT, libtess2, cairo;
  • для работы с аудио, в том числе для анализа звука: rtAudio, PortAudio, OpenAL, Kiss FFT, FMOD;
  • для шрифтов: FreeType;
  • загрузка и сохранение изображений в различных форматах обеспечивается либой FreeImage;
  • проигрывание и захват видео происходит посредством библиотек: QuickTime, GStreamer и videoInput;
  • либа Poco включает средства для сетевого взаимодействия, другими словами — служит для разработки десктопных, мобильных приложений и приложений для встраиваемых систем, работающих по сети, как клиентских, так и серверных;
  • OpenCV — библиотека для компьютерного зрения;
  • для загрузки 3D-моделей используется библиотека Assimp.

Вдобавок openFrameworks легко расширяется с помощью аддонов. Они позволяют добавлять новую функциональность, реализованную в сторонних фреймворках; ядерная функциональность (межкомпонентный интерфейс) также может быть модифицирована. Сторонние аддоны имеют префикс ofx, ядерные функции — of.

 

Втыкаем openFrameworks

Содержимое папки с openFrameworks включает следующие поддиректории:

  • addons — содержит все расширения;
  • apps — директория для твоих проектов;
  • examples — содержит примеры работы с openFrameworks;
  • каталог libs — содержит ядерную функциональность либы в целом.

Посмотрим на расширения — в папку addons:

  • ofxAssimpModelLoader — позволяет загрузить в приложение 3D-модели широкого ряда форматов, модуль основан на библиотеке Assimp;
  • ofxEmscripten — служит для экспорта десктопных приложений для выполнения в вебе;
  • ofxGui — как и следует из названия, предназначена для создания пользовательского интерфейса;
  • ofxAndroid — реализует интерфейс программирования под Android на языке C++;
  • ofxiOS — реализует поддержку программирования мобильных устройств на базе iOS (на языке C++);
  • ofxAccelerometer — позволяет работать с акселерометром на любом поддерживаемом мобильном девайсе;
  • ofxThreadedImageLoader — загружает в приложение изображения в независимом потоке;
  • ofxSVG — предоставляет загрузчик для векторного формата SVG;
  • ofxXmlSettings — сохраняет и/или загружает данные в XML-формате;
  • ofxKinect — реализует поддержку программирования сенсора Kinect первой версии;
  • ofxNetwork — создает сетевые TCP- и UDP-соединения и управляет ими;
  • ofxOpenCv — предоставляет поддержку компьютерного зрения из библиотеки OpenCV.

INFO


Сторонних модулей очень много. Среди них имеются: поддержка сенсорного контроллера Leap Motion, инструменты слежения и распознавания лиц с помощью Kinect, поддержка физики, внешних инструментов (к примеру, таких, как Spine для создания двумерной анимации или свободный инструмент трехмерного моделирования Blender), различных систем GUI (например, GTK), скриптовых языков (JavaScript, Lua) и многое, многое другое.

Среди ядерных функций присутствует поддержка создания оконных приложений (для разных операционных систем), двумерной и трехмерной графики, коммуникации по последовательному кабелю (Andruino, Raspberry Pi), мощный математический аппарат (векторная, матричная алгебра), программирование звука, работа с видео, в том числе чтение «сырых» данных с камеры, различные типы данных и утилиты для работы с ними.

Кроме перечисленных модулей, у openFrameworks есть еще внушительный ряд компонентов, созданных сторонними разработчиками и не включенных в основной репозиторий.

 

Установка и создание проекта

OpenFrameworks позволяет разрабатывать приложения под Windows, OS X, iOS, Linux, Android не только для архитектуры x86, но также для ARM. openFrameworks уже обзавелся поддержкой Windows 10 вместе с Visual Studio 2015 — с этим тандемом мы первым делом и проведем тестирование. Кроме VS 2015, openFrameworks под Windows можно заточить под среду Qt Creator.

Для начала из раздела Download сайта скачай последнюю версию либы (на момент написания статьи была 0.9.0), также можно стянуть с GitHub’а. Разработчики обращают внимание: новая версия не на 100% совместима с предыдущей, следовательно, старые проекты без переделывания не будут работать в новой версии либы. Распакуй скачанный ZIP-архив. Для создания проекта у тебя есть два варианта.

Первый: запусти из папки с либой ProjectGenerator.exe:

Project Generator
Project Generator

С его помощью можно создать новый проект с поддержкой любого доступного фреймворка. Обрати внимание, создаваемый проект должен находиться в одной папке с openFrameworks, в подкаталоге не глубже двух уровней вложенности. После создания проекта его можно открыть в Visual Studio 2015.

Этот вариант хорош, но есть способ лучше. Создавать проекты удобнее прямо из Студии, для этого надо установить расширение: Tools -> Extension and Updates, в открывшемся окне для поиска набираем название либы, спокойно ставим расширение. После этого в заготовках для проектов появится пункт openFrameworks. После выбора и создания проекта данного типа (обрати внимание, чтобы вложенность папки с твоим проектом не была глубже двух уровней, начиная от каталога с либой) появится окно выбора подключаемых фреймворков. Любой из них можно добавить позже — в процессе работы над проектом.

INFO


Обращаю твое внимание, что не каждый проект успешно создается из темплейтов Студии. Точнее, создается-то без проблем, но при связывании проекта возникают ошибки линковщика. Поэтому пока лучше воспользоваться генератором проектов.
Addons
Addons
 

Графический вывод

Для начала не будем подключать дополнительные фреймворки, а ограничимся ядерными, поэтому щелкнем на ОK. В результате будет создано решение, содержащее два проекта: собственно твой проект и второй — с необходимыми для компиляции первого файлами ядерных фреймворков. Любое приложение, построенное на основе openFrameworks, рендерит графику средствами OpenGL. Твой проект состоит из трех файлов: main.cpp — здесь происходит запуск основного устройства библиотеки (инициализация OpenGL для вывода) + запуск нашего кода.

Продолжение статьи доступно только подписчикам

Вариант 1. Оформи подписку на «Хакер», чтобы читать все статьи на сайте

Подписка позволит тебе в течение указанного срока читать ВСЕ платные материалы сайта, включая эту статью. Мы принимаем оплату банковскими картами, электронными деньгами и переводами со счетов мобильных операторов. Подробнее о подписке

Вариант 2. Купи одну статью

Заинтересовала статья, но нет возможности оплатить подписку? Тогда этот вариант для тебя! Обрати внимание: этот способ покупки доступен только для статей, опубликованных более двух месяцев назад.


Комментарии

Подпишитесь на ][, чтобы участвовать в обсуждении

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

Check Also

Хакер ищет авторов. Читатель? Хакер? Программист? Безопасник? Мы тебе рады!

Восемнадцать лет мы делаем лучшее во всем русскоязычном пространстве издание по IT и инфор…