Я много читал об openFrameworks и Processing, но до сих пор не могу провести различие, кроме того, что один на C++, а другой на Java. Может кто-нибудь сказать мне, что для чего именно?
openFrameworks против обработки
Ответы (1)
Вы правы, один - C++, а другой - Java, и эти различия применимы к этим платформам, поэтому вам решать, какой из них лучше для вас.
При обработке:
- Вы получаете минимальную IDE, но можете легко использовать Eclipse или другие IDE Java.
- Вы получаете управление памятью (сборка мусора)
- Вы можете публиковать апплеты онлайн (через Java-апплет или «упрощенные» порты javascript, используя Canvas 2D с processingjs или p5js) или настольные приложения для Linux/OSX/Windows (через Java Runtime). Обратите внимание, что версии более новые, чем Processing 1.5.1, больше не экспортируют апплеты. Это все еще можно сделать через командную строку или с помощью eclipse.
- Вы можете публиковать на Android и (с помощью сторонних инструментов) на iPhone, используя iProcessing или более быстрый P5Nitro и совсем недавно на Raspberry PI
- Вы получаете почти 200 библиотек для расширения его функциональности.
- У вас есть поддержка на форумах, немало книги и онлайн-игровые площадки, такие как OpenProcessing, SketchPatch, hascanvas или SketchPad.
С OpenFrameworks:
- Вы выбираете свою IDE (XCode на OSX, Code::Blocks, VC++)
- Вы можете управлять собственной памятью (malloc, указатели и все такое прочее), но с современным C++ в этом нет необходимости.
- Вы можете опубликовать свой проект как собственное приложение (не требуется среда выполнения)
В настоящее время вы не можете легко публиковать в Интернете, но это может измениться в будущем (см. Прогресс Артуро Кастро of-emscripten)Вы можете публиковать в Интернете, используя запись.- Вы можете публиковать на iPhone с OF 007 на Android и OF 0.8.0 для устройств armv6 и armv7, таких как Raspberry PI или Pandaboard
- Вы получаете более 2000 дополнений (не все поддерживаются) для расширения его функциональности.
- У вас есть поддержка на очень активных и полезных форумах, и вы можете прочитать об этом в этом онлайн-книга или на бумаге книга или две.
Вот некоторые из вещей, которые пришли на ум прямо сейчас, их может быть больше.
Лично мне было проще писать действительно простые одноразовые прототипы в Processing. В ситуациях, когда скорость не является основным фактором принятия решения, Processing работает просто отлично, но в других случаях я бы перенес прототипы Processing в openFrameworks (что в большинстве случаев легко сделать).
Примером может служить приложение, связанное со звуком, будь то анализ или синтез. В зависимости от сложности сборщик мусора Java будет выполнять очистку, когда вы меньше всего этого ожидаете, и вызывать раздражение, когда вам нужна отзывчивость.
Короче говоря, оба действительно круты, но openFrameworks быстрее. Однако вы платите за эту скорость, управляя памятью самостоятельно.
Что касается онлайн-развертывания, это действительно зависит от проекта: если это простой проект, вероятно, p5.js будет проще всего с точки зрения интеграции с другими js-библиотеками. Экспорт oF удобен для большого громоздкого сложного кода, перенос которого вручную на JavaScript занял бы слишком много времени, но не забывайте, что проект Emscripten будет большим (например, 17,5 МБ для opencvExample
) (и, следовательно, несовместим с сотовой связью), и вам все равно понадобится чтобы добавить свой собственный JS -> C++ привязки, если вам нужно вызвать функцию приложения oF с веб-страницы.
Кроме того, если вас интересует C++, вы можете также взглянуть на libcinder или Polycode.
ХТН