Подтвердить что ты не робот

openFrameworks vs Processing

Я много читал об openFrameworks и обработке, но все же не могу отличить, кроме одного в C++ и другого в Java. Может кто-нибудь сказать мне, что именно для чего?

4b9b3361

Ответ 1

Вы правы, один - C++, а другой - Java, и эти различия применимы к этим платформам, поэтому выбор ваших предпочтений будет зависеть от ваших предпочтений/объема проекта.

processing header

С обработкой:

  • Вы получаете минимальную IDE, но можете легко использовать Eclipse или другие Java IDE.
  • Вы получаете управление памятью (сборка мусора)
  • Вы можете публиковать апплеты онлайн (через Java Applet или "уменьшенные" порты 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 logo

С OpenFrameworks:

  • Вы выбираете свою IDE (XCode на OSX, Code :: Blocks, V C++)
  • Вы можете управлять своей собственной памятью (malloc, указатели и вся эта радость), но с современным C++ это не нужно.
  • Вы можете опубликовать свой проект как собственное приложение (время выполнения не требуется)
  • В настоящее время вы не можете легко публиковать в Интернете, но это может измениться в будущем (см. Прогресс Arturo Castro of-emscripten) Вы можете публиковать в Интернете с помощью emscripten.
  • Вы можете опубликовать на iPhone начиная с OF 007 для Android и OF 0.8.0 для устройств armv6 и armv7, таких как Raspberry PI или Pandaboard
  • Вы получаете более 2000 аддонов (не все поддерживаются) для расширения его функциональности.
  • Вы пользуетесь поддержкой очень активных и полезных форумов и можете прочитать об этом в этой онлайн-книге или в одной или двух бумажных книгах.

Это то, что пришло на ум прямо сейчас, может быть и больше.

Лично мне было проще писать действительно простые одноразовые прототипы в Processing. Для ситуаций, когда скорость не является основным фактором принятия решения, обработка работает просто хорошо, но в других случаях я бы перенес прототипы обработки в openFrameworks (что легко сделать в большинстве случаев).

Примером может служить приложение, включающее аудио, будь то анализ или синтез. В зависимости от сложности Java Garbage Collector будет выполнять зачистку, когда вы меньше всего этого ожидаете, и вызывать раздражение, когда вам нужна отзывчивость.

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

С точки зрения развертывания в сети, это действительно зависит от проекта: если это простой проект, вероятно, p5.js может быть проще с точки зрения интеграции с другими библиотеками js. Экспорт oF удобен для большого громоздкого сложного кода, для opencvExample на JavaScript потребуется слишком много времени, но не забывайте, что проект Emscripten будет большим (например, 17,5 МБ для opencvExample) (и, следовательно, не подходит для сотовой связи), и вам все равно понадобится добавить свои собственные привязки JS → C++, если вам нужно вызвать функцию приложения oF с веб-страницы.

Кроме того, если вы заинтересованы в C++, вы можете также взглянуть на libcinder или Polycode.

НТН