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