Przykładem tego jest Processing (dla JAVY, chociaż jest to nie tylko biblioteka ale również IDE), Microsoft pracuje na Vedea(dla .Net). A dla C++ jest właśnie openFrameworks.
Samo openFrameworks jest zbiorem różnych bibliotek opakowanych w klasy/funkcje tak aby ich użycie było jak najprostsze. Zawiera biblioteki do obsługi grafiki, dźwięku i video oraz posiada system dodatków do rozszerzenia możliwości a żeby nie robić z tego suchego wywodu trochę kodu.
Struktura podstawowego programu w of składa się z 3 plików:
- main.cpp - jak sama nazwa wskazuje główny plik (służy podstawowej inicjalizacji) który tworzy się raz i pozostawia bez zmian
- Plik *.h głównej klasy
- Plik *.cpp głównej klasy
Oczywiście jest to tzw. niezbędne minimum jednak w razie potrzeby tworzy się dodatkowe pliki z klasami :)
Najpierw najkrótszy czyli main.cpp:
#include "ofMain.h" #include "testApp.h" #include "ofAppGlutWindow.h" //======================================================================== int main( ){ ofAppGlutWindow window; ofSetupOpenGL(&window, 1024,768, OF_WINDOW); ofRunApp( new testApp()); //testApp - to jest nasza główna klasa }
Jak widać po kodzie openFrameworks opiera się na OpenGL i GLUT (co jest moim zdaniem złe ale cóż :P). Pominę nagłówek klasy (aby nie zajmować miejsca):
#include "testApp.h" //-------------------------------------------------------------- void testApp::setup(){ ofBackground(255, 255, 255); ofSetWindowTitle("openFrameworks test"); ofSetFrameRate(60); counter = 0; } //-------------------------------------------------------------- void testApp::update(){ counter += ofGetLastFrameTime(); } //-------------------------------------------------------------- void testApp::draw(){ double angle = counter * 180.0; ofSetColor(30, 85, 210); ofFill(); ofPushMatrix(); ofTranslate(ofGetWidth()/2.0, ofGetHeight()/2.0); ofRotate(angle); ofCircle(0, ofGetHeight()/2.0,50); ofPopMatrix(); ofSetColor(0,0,0); ofNoFill(); ofRect(500, 500, 100, 100); ofEnableAlphaBlending(); ofFill(); ofSetColor(220, 30, 0, (int)(counter * 100.0) % 255); ofTriangle(120, 120, 60, 250, 180, 250); }
Sam program nie jest istotny (jest banalny, pokazuje tylko jak wygląda API graficzne w of) istotniejsze jest kod w którym można dojrzeć cechy charakterystyczne dla tego typu bibliotek. Program podzielony jest na 3 główne funkcje: setup(inicjalizacja), update(logika), draw(rysowanie), podstawowe funkcje do obsługi rysowania nie posiadają klas i nie wymagają przekazywani uchwytów ani wskaźników. Całość jest intuicyjna i prosta. Można zacząć w ciągu chwili i szybko zobaczyć efekty.
Aktualne wersja openFrameworks nie posiada żadnych funkcji do rysowania 3D jednak można bezproblemowo używać funkcji OpenGL (trzeba pamiętać o ustawieniu macierzy widoku) + są dodatki które udostępniają trochę funkcjonalności w tym zakresie. Warto dodać, że cała biblioteka aktualnie znajduje się w wersji pre release i jeszcze może się w niej dużo zmienić (oby na lepsze).
Na zakończenie dodam, że np. Processing (i myślę, że pozostałe biblioteki do kreatywnego programowania biorą to pod uwagę) nie powstał z myślą o programistach a o ludziach którzy chcą się programowania nauczyć albo po prostu potrzebują przetwarzać dane (głównie jednak wizualne) w sposób który gotowe programy nie umożliwiają.
Brak komentarzy:
Prześlij komentarz