Cinder jest biblioteką wspomagającą programistę w tworzeniu kreatywnego oprogramowania. Skupia się na ułatwieniu wszelkich operacji związanych z wizualnym aspektem programu. Poprzez liczne dodatki – bloki, niesamowicie przyspiesza realizację projektu.

Krótki wykład pokazujący możliwości tej biblioteki, prowadzony przez twórcę, Andrew Bell’a.

Obecnie duży wkład w rozwój ma firma Barbarian Group.

Drobne wtrącenie nie związane z projektem

Od długiego czasu używam ciekawego rozszerzenia konsoli pod Windows. Nazywa się Cmder. Jest niezwykle przydatnym i wygodnym rozwiązaniem. To namiastka terminala linuxowego dodatkowo, dzieki cechom ConEmu dostarczająca rozwiązań a’la Terminator(split windows). Do tego dochodzi jeszcze FarManager, co czyni to środowisko niemal doskonałym. Piszę o tym tylko dlatego, że przyjemnie jest mieć wygodne środowisko w trakcie tworzenia oprogramowania.

Instalacja Cinder

Zdecydowałem się na wersję z github’a. Klonuję repozytorium

git clone --recursive https://github.com/cinder/Cinder.git

Do tego w podkatalogu instaluję moduł OpenCV. Wersję z rodziny 3.x.

 

 

cd blocks
git clone  --depth 1 https://github.com/cinder/Cinder-OpenCV3.git # tak zwana płytka kopia, wystarczy mi ostatnia rewizja

Pod Visual Studio 2013 ładuję solutionvc2013\cinder.sln i kompiluję. Jeśli wszystko przebiegło pomyślnie, to mamy gotową bibliotekę. Teraz pozostaje przygotowanie projektu. Tutaj z pomocą przychodzi narzędzie TinderBox (Cinder\tools\TinderBox-Win). Jest to generator projektu, który utworzy właściwą strukturę katalogów, ścieżki do bibliotek (release i debug) i ewentualnie lokalne repo gita. Znacząco przyspiesza rozpoczęcie pracy.

Projekt bazuje na szablonie Basic OpenGL, wcześniej nawet nie zauważyłem, że są jakieś szablony z OpenCV. Środowisko 32bitowe, na razie nie potrzebuję x64. Jeśli chodzi o dodatkowe biblioteki, to od razu dodałem do projektu OpenCV3, Box2D, CinderFluid i QuickTime. Tak na wszelki wypadek, bo nie wiem w którym kierunku to wszystko pójdzie. CinderFluid to biblioteka wspomagająca symulację płynów w 2D. Można ja dodać do katalogu blocks z repozytorium https://github.com/chaoticbob/CinderFx.git. Znalazłem ją wczoraj i może się przydać.

 

tinderbox-1tinderbox-2tinderbox-3

Po zakończeniu działania kreatora, wygenerowana została taka struktura katalogów:

tinderbox-4

W katalogu src znajduje się główne źródło aplikacji – CinderClimbApp.cpp

#include "cinder/app/App.h"
#include "cinder/app/RendererGl.h"
#include "cinder/gl/gl.h"

using namespace ci;
using namespace ci::app;
using namespace std;

class CinderClimbApp : public App 
{
  public:
  void setup() override;
  void mouseDown( MouseEvent event ) override;
  void update() override;
  void draw() override;
};

void CinderClimbApp::setup()
{
}

void CinderClimbApp::mouseDown( MouseEvent event )
{
}

void CinderClimbApp::update()
{
}

void CinderClimbApp::draw()
{
  gl::clear( Color( 0, 0, 0 ) ); 
}

CINDER_APP( CinderClimbApp, RendererGl )

Na pewno więcej kodu w stosunku do Processing, ale jakoś tak przyjemniej. Od razu jest podział na update() i draw(). Choć generalnie logika pozostaje taka sama. Na początek będę to rozwijał w jednym  pliku i później podzielę, jak wyklarują się wszystkie bloki aplikacji.

Teraz pozostaje przepisanie tego co już miałem w Processing.