diff --git a/.gitignore b/.gitignore
index e43b0f9..e8d9ce7 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1 +1,2 @@
.DS_Store
+example-*
diff --git a/README.md b/README.md
index 9e8f1cd..ffe8880 100644
--- a/README.md
+++ b/README.md
@@ -1,13 +1,22 @@
ofxPiMapper
===========
-This project is an attempt to create optimized version of an openFrameworks projection mapping addon for the Raspberry Pi.
+This project is an attempt to create optimized version of an openFrameworks projection mapping addon for the Raspberry Pi. It is also my master thesis project at Aalto University, School of Arts, Design and Architecture (Helsinki Media Lab).
-ofxPiMapper is mainly intended for people who want to use the Raspberry Pi as a cheaper way to create standalone mapping installations. Let's say someone has 10 generative mapping pieces and at last get's an offer to exhibit them in an art or any other kind of gallery. 10 Mac computers? No! PiMapper is here to save you!
+ofxPiMapper is mainly for people who want to use the Raspberry Pi as a cheaper way to create standalone mapping installations. Let's say someone has 10 generative mapping pieces and gets an offer to exhibit them in an art gallery, museum or any other kind of place. 10 Mac computers? No! PiMapper is here to save you!
-The addon itself is intended to be flexible as the separate components of it can be reusable. Use the full version of it to set up your mapping and then switch to no-gui version once everything is set up to save processor power and memory.
+The addon itself is intended to be flexible as the separate components of it can be reusable. The main example of the addon can be used as a standalone application for experimenting, testing as well as production state of a project. If you need to save memory and processing power, reusing ofxPiMapper classes without adding the GUI layer can help you.
-As ofxPiMapper is optimized for the Pi, there is no doubt that it will run smoothly on other machines. It has been tested on OS X.
+As ofxPiMapper is optimized for the Pi, there is no doubt that it will run smoothly on other machines. It has been tested on OS X so far.
+
+Development
+-----------
+
+As the projects gets a bit more popular, I see that people want to add missing features. I have a whole bunch of features that I want to add in future releases, but right now I'm trying to understand how to keep it more or less organized.
+
+Currently I have decided to use [A successful Git branching model](http://nvie.com/posts/a-successful-git) by [Vincent Driessen](https://twitter.com/nvie), so read this article and I do not doubt that it will help you with other Git related projects.
+
+I'm still working on boosting my understanding about the issue tracking system on GitHub, I believe that it would be the best way how to keep new feature requests and bugfixes organized.
Licence
-------
@@ -15,6 +24,10 @@ ofxPiMapper is distributed under the [MIT License](https://en.wikipedia.org/wiki
Installation
------------
+If you don't have a clue on how to set up your Pi - go to the [Raspberry Pi website](http://www.raspberrypi.org/downloads/) and follow the instructions there. I have been using Raspbian so far as well as [Satellite CCRMA](https://ccrma.stanford.edu/~eberdahl/satellite/) without problems.
+
+Another thing you need is a working [openFrameworks](http://openframeworks.cc) installation. Follow [this guide](http://openframeworks.cc/setup/raspberrypi/Raspberry-Pi-Getting-Started.html) to set it up.
+
Clone this into your `openFrameworks/addons` folder. If your openFrameworks installation on the Pi resides in the home directory, you have to type the following in the terminal:
```bash
@@ -37,6 +50,52 @@ After it compiles, run it by executing it directly instead of using `make run`:
It will take a while first, but once it runs, press 1, 2, 3 and 4 keys to switch between modes of the software. Switch to mode 3 at first to select a surface. Afterwards you will be able to edit the texture mapping of it in mode 2 and choose a source in mode 4. Mode 1 is the presentation mode. It is activated on start by default.
+Usage
+-----
+
+I'm thinking on a more clever design that would not require keyboard so much, maybe. Now the example application acts as a wrapper for the ofxPiMapper addon and anyone can re-map keyboard keys by modifying the app code.
+
+###Modes
+
+PiMapper has 4 modes:
+
+1. Presentation mode
+2. Texture mapping mode
+3. Surface editing mode
+4. Source assignment mode
+
+You can access these modes by pressing 1, 2, 3 or 4 respectively.
+
+####Presentation mode
+
+This mode is activated once the application starts up. It does not show anything else except the final projection mapping as it was saved previously.
+
+####Texture mapping mode
+
+In this mode you can adjust the texture coordinates of the surface you have selected in the surface editing mode.
+
+####Surface editing mode
+
+Here you can select, move and distort the surfaces you have created.
+
+####Souce assignment mode
+
+After you select a surface in surface editing mode, activate this mode to be able to choose a source for the surface. Afterwards you might want to go to the texture mapping mode to adjust texture coordinates.
+
+###Other shortcuts
+
+These other shortcuts that you can use while using the example app. Remember that you can assign your own by editing the app.cpp file.
+
+Key | Function
+:--- | :---
+i | Show info
+n | Add triangle surface
+q | Add quad surface
+r | Add random triangle surface
+f | Toggle fullscreen
+s | Save composition
+BACKSPACE | Delete surface
+
Dependencies
------------
[ofxUI](https://github.com/rezaali/ofxUI) - will be replaced with custom solution as it consumes a lot of processing power.
@@ -51,7 +110,16 @@ Known issues
When launching the example with `make run` keyboard and mouse input is being lost sometimes. Executing the example directly by using `./bin/example` might solve the problem. Not sure how and why.
Version history
-------------
+---------------
+
+### Version 0.1.4 (2014-07-10):
+ - Added fbo texture example
+ - Replaced the main example with the fbo texture one
+ - Added simple quad surface
+ - Fixed a couple of bugs
+ - Introduced new branching model
+ - Added joint snapping
+ - Improved README
### Version 0.1.3 (2014-05-16):
- Added sources view (for selected surface)
diff --git a/example-fboTexture/.gitignore b/example-fboTexture/.gitignore
deleted file mode 100644
index 1af20d0..0000000
--- a/example-fboTexture/.gitignore
+++ /dev/null
@@ -1,6 +0,0 @@
-obj
-*.xcodeproj
-*.plist
-*.xcconfig
-*~
-config.make
diff --git a/example-fboTexture/Makefile b/example-fboTexture/Makefile
deleted file mode 100644
index 7a7fe8b..0000000
--- a/example-fboTexture/Makefile
+++ /dev/null
@@ -1,13 +0,0 @@
-# Attempt to load a config.make file.
-# If none is found, project defaults in config.project.make will be used.
-ifneq ($(wildcard config.make),)
- include config.make
-endif
-
-# make sure the the OF_ROOT location is defined
-ifndef OF_ROOT
- OF_ROOT=../../..
-endif
-
-# call the project makefile!
-include $(OF_ROOT)/libs/openFrameworksCompiled/project/makefileCommon/compile.project.mk
diff --git a/example-fboTexture/addons.make b/example-fboTexture/addons.make
deleted file mode 100644
index 802cd29..0000000
--- a/example-fboTexture/addons.make
+++ /dev/null
@@ -1,3 +0,0 @@
-ofxPiMapper
-ofxUI
-ofxXmlSettings
diff --git a/example-fboTexture/bin/.gitignore b/example-fboTexture/bin/.gitignore
deleted file mode 100644
index 44fbbc9..0000000
--- a/example-fboTexture/bin/.gitignore
+++ /dev/null
@@ -1,4 +0,0 @@
-*.app
-data/*.jpg
-data/settings.xml
-data/surfaces.xml
diff --git a/example-fboTexture/bin/data/defaultSurfaces.xml b/example-fboTexture/bin/data/defaultSurfaces.xml
deleted file mode 100755
index 4bcc56a..0000000
--- a/example-fboTexture/bin/data/defaultSurfaces.xml
+++ /dev/null
@@ -1,138 +0,0 @@
-
-
-
-
- 250.000000000
- 34.000000000
-
-
- 374.000000000
- 201.000000000
-
-
- 535.000000000
- 35.000000000
-
-
-
-
- 0.101999998
- 0.335999995
-
-
- 0.328000009
- 0.689999998
-
-
- 0.705999970
- 0.393999994
-
-
-
- image
- image1.jpg
-
-
-
-
-
- 24.396121979
- 259.170288086
-
-
- 250.000000000
- 34.000000000
-
-
- 214.630920410
- 282.926849365
-
-
-
-
- 0.251666665
- 0.090000004
-
-
- 0.449999988
- 0.696666658
-
-
- 0.870000005
- 0.173333332
-
-
-
- image
- image5.jpg
-
-
-
-
-
- 75.709846497
- 450.636596680
-
-
- 214.630920410
- 282.926849365
-
-
- 24.396121979
- 259.170288086
-
-
-
-
- 0.981523871
- 0.471785098
-
-
- 0.245601788
- 0.110941604
-
-
- 0.662217021
- 0.714698017
-
-
-
- image
- image4.jpg
-
-
-
-
-
- 527.148498535
- 277.815002441
-
-
- 320.170959473
- 461.102355957
-
-
- 285.250427246
- 209.424682617
-
-
-
-
- 0.031067841
- 0.511202157
-
-
- 0.450178742
- 0.116164304
-
-
- 0.543386877
- 0.609848201
-
-
-
- image
- none
-
-
-
diff --git a/example-fboTexture/bin/data/sources/images/image1.jpg b/example-fboTexture/bin/data/sources/images/image1.jpg
deleted file mode 100644
index 88cf12e..0000000
Binary files a/example-fboTexture/bin/data/sources/images/image1.jpg and /dev/null differ
diff --git a/example-fboTexture/bin/data/sources/images/image2.jpg b/example-fboTexture/bin/data/sources/images/image2.jpg
deleted file mode 100644
index 4111693..0000000
Binary files a/example-fboTexture/bin/data/sources/images/image2.jpg and /dev/null differ
diff --git a/example-fboTexture/bin/data/sources/images/image3.jpg b/example-fboTexture/bin/data/sources/images/image3.jpg
deleted file mode 100644
index fffdd35..0000000
Binary files a/example-fboTexture/bin/data/sources/images/image3.jpg and /dev/null differ
diff --git a/example-fboTexture/bin/data/sources/images/image4.jpg b/example-fboTexture/bin/data/sources/images/image4.jpg
deleted file mode 100644
index 3291a57..0000000
Binary files a/example-fboTexture/bin/data/sources/images/image4.jpg and /dev/null differ
diff --git a/example-fboTexture/bin/data/sources/images/image5.jpg b/example-fboTexture/bin/data/sources/images/image5.jpg
deleted file mode 100644
index d9f2908..0000000
Binary files a/example-fboTexture/bin/data/sources/images/image5.jpg and /dev/null differ
diff --git a/example-fboTexture/src/main.cpp b/example-fboTexture/src/main.cpp
deleted file mode 100644
index 0e0278d..0000000
--- a/example-fboTexture/src/main.cpp
+++ /dev/null
@@ -1,12 +0,0 @@
-#include "ofMain.h"
-#include "ofApp.h"
-
-int main()
-{
-#ifdef TARGET_RASPBERRY_PI
- ofSetupOpenGL(600, 500, OF_FULLSCREEN);
-#else
- ofSetupOpenGL(600, 500, OF_WINDOW);
-#endif
- ofRunApp(new ofApp());
-}
\ No newline at end of file
diff --git a/example-fboTexture/src/ofApp.cpp b/example-fboTexture/src/ofApp.cpp
deleted file mode 100755
index 7012632..0000000
--- a/example-fboTexture/src/ofApp.cpp
+++ /dev/null
@@ -1,164 +0,0 @@
-#include "ofApp.h"
-
-void ofApp::setup()
-{
- bShowInfo = false;
-
- // check if the surfaces.xml file is there
- // if not - load defaultSurfaces.xml
- if ( ofFile::doesFileExist("surfaces.xml") ) {
- surfaceManager.loadXmlSettings("surfaces.xml");
- } else {
- surfaceManager.loadXmlSettings("defaultSurfaces.xml");
- }
-
- // Pass the surface manager to the mapper graphical user interface
- gui.setSurfaceManager( &surfaceManager );
-
- // Create FBO
- fbo = new ofFbo();
- fbo->allocate( 500, 500 );
- setFboAsTexture();
-
- // Genereate rects
- int numRects = 20; // change this to add more or less rects
- for ( int i=0; igetHeight()), fbo->getWidth(), ofRandom(20)) );
- rectSpeeds.push_back( (1.0f + ofRandom(5)) );
- }
-}
-
-void ofApp::update()
-{
- // Move rects
- for ( int i=0; i fbo->getHeight() ) {
- rects[i].y = -rects[i].getHeight();
- }
- }
-
- // Fill FBO
- fbo->begin();
- ofClear(0);
- ofBackground(0);
- ofSetColor(255);
- for ( int i=0; iend();
-}
-
-void ofApp::draw()
-{
- // Draw the piMapper GUI
- gui.draw();
-
- if ( bShowInfo ) {
- // Draw instructions
- stringstream ss;
- ss << "There are 4 modes:\n\n";
- ss << " 1. Presentation mode\n";
- ss << " 2. Texture mapping mode\n";
- ss << " 3. Projection mapping mode\n";
- ss << " 4. Source selection mode\n\n";
- ss << "You can switch between the modes by using <1>, <2>, <3> and <4> keys on the keyboard.\n\n";
- ss << "Press or to add random or normal surface.\n";
- ss << "Press to add a new quad surface.\n";
- ss << "Press to save the composition.\n";
- ss << "Press to toggle fullscreen.\n";
- ss << "Press to reassign the fbo texture to the first surface\n";
- ss << "Hit to hide this message.";
-
- ofDrawBitmapStringHighlight(ss.str(), 10, 20, ofColor(0,0,0,100), ofColor(255,255,255,200));
- }
-}
-
-void ofApp::exit()
-{
- // Clear FBO from mem
- delete fbo;
-}
-
-void ofApp::keyPressed(int key)
-{
- cout << "Key pressed: " << static_cast(key) << endl;
-
- switch (key) {
- case '1': gui.setMode(ofxGuiMode::NONE); break;
- case '2': gui.setMode(ofxGuiMode::TEXTURE_MAPPING); break;
- case '3': gui.setMode(ofxGuiMode::PROJECTION_MAPPING); break;
- case '4': gui.setMode(ofxGuiMode::SOURCE_SELECTION); break;
- case 'i': bShowInfo = !bShowInfo; break;
- case 'r': addRandomSurface(); break;
- case 'q': addQuadSurface(); break;
- case 'n': addSurface(); break;
- case 'f': ofToggleFullscreen(); break;
- case 's': surfaceManager.saveXmlSettings("surfaces.xml"); break;
- case 'a': setFboAsTexture(); break;
- case OF_KEY_BACKSPACE: surfaceManager.removeSelectedSurface(); break;
- default: break;
- }
-}
-
-void ofApp::addRandomSurface()
-{
- int surfaceType = ofxSurfaceType::TRIANGLE_SURFACE;
- vector vertices;
- vertices.push_back( ofVec2f( ofRandomWidth(), ofRandomHeight() ) );
- vertices.push_back( ofVec2f( ofRandomWidth(), ofRandomHeight() ) );
- vertices.push_back( ofVec2f( ofRandomWidth(), ofRandomHeight() ) );
- vector texCoords;
- texCoords.push_back( ofVec2f( ofRandomuf(), ofRandomuf() ) );
- texCoords.push_back( ofVec2f( ofRandomuf(), ofRandomuf() ) );
- texCoords.push_back( ofVec2f( ofRandomuf(), ofRandomuf() ) );
- surfaceManager.addSurface(surfaceType, vertices, texCoords);
-
- // select this surface right away
- surfaceManager.selectSurface(surfaceManager.size()-1);
-}
-
-void ofApp::addQuadSurface()
-{
- int surfaceType = ofxSurfaceType::QUAD_SURFACE;
- vector vertices;
-
- int border = 50;
- vertices.push_back( ofVec2f(border, border) );
- vertices.push_back( ofVec2f(border, ofGetHeight() - border) );
- vertices.push_back( ofVec2f(ofGetWidth() - border, ofGetHeight() - border) );
- vertices.push_back( ofVec2f(ofGetWidth() - border, border) );
-
- vector texCoords;
- texCoords.push_back( ofVec2f(ofVec2f(0.0f, 0.0f)) );
- texCoords.push_back( ofVec2f(ofVec2f(1.0f, 0.0f)) );
- texCoords.push_back( ofVec2f(ofVec2f(1.0f, 1.0f)) );
- texCoords.push_back( ofVec2f(ofVec2f(0.0f, 1.0f)) );
-
- surfaceManager.addSurface(surfaceType, vertices, texCoords);
-
- // select this surface right away
- surfaceManager.selectSurface(surfaceManager.size()-1);
-}
-
-void ofApp::addSurface()
-{
- int surfaceType = ofxSurfaceType::TRIANGLE_SURFACE;
- vector vertices;
- vertices.push_back( ofVec2f( (float)ofGetWidth()/2.0f, 0.0f ) );
- vertices.push_back( ofVec2f( (float)ofGetWidth(), (float)ofGetHeight() ) );
- vertices.push_back( ofVec2f( 0.0f, (float)ofGetHeight() ) );
- vector texCoords;
- texCoords.push_back( ofVec2f( 0.5f, 0.0f ) );
- texCoords.push_back( ofVec2f( 1.0f, 1.0f ) );
- texCoords.push_back( ofVec2f( 0.0f, 1.0f ) );
- surfaceManager.addSurface(surfaceType, vertices, texCoords);
-
- // select this surface right away
- surfaceManager.selectSurface(surfaceManager.size()-1);
-}
-
-void ofApp::setFboAsTexture()
-{
- surfaceManager.getSurface(0)->setTexture( &fbo->getTextureReference() );
-}
\ No newline at end of file
diff --git a/example-fboTexture/src/ofApp.h b/example-fboTexture/src/ofApp.h
deleted file mode 100755
index 05d7a8f..0000000
--- a/example-fboTexture/src/ofApp.h
+++ /dev/null
@@ -1,31 +0,0 @@
-#ifndef H_OF_APP
-#define H_OF_APP
-
-#include "ofMain.h"
-#include "ofxPiMapper.h"
-
-class ofApp : public ofBaseApp
-{
-public:
- void setup();
- void update();
- void draw();
- void exit();
-
- void keyPressed(int key);
-
- void addRandomSurface();
- void addQuadSurface();
- void addSurface();
- void setFboAsTexture();
-
- ofImage image;
- ofxSurfaceManager surfaceManager;
- ofxSurfaceManagerGui gui;
- bool bShowInfo;
- ofFbo* fbo;
- vector rects;
- vector rectSpeeds;
-};
-
-#endif
\ No newline at end of file
diff --git a/example/bin/data/defaultSurfaces.xml b/example/bin/data/defaultSurfaces.xml
old mode 100644
new mode 100755
diff --git a/example/src/ofApp.cpp b/example/src/ofApp.cpp
old mode 100644
new mode 100755
index 6b90cf1..7012632
--- a/example/src/ofApp.cpp
+++ b/example/src/ofApp.cpp
@@ -2,39 +2,56 @@
void ofApp::setup()
{
- //image.loadImage("TestPatternInvert.jpg");
bShowInfo = false;
- /*
- surfaceManager.addSurface( ofxSurfaceType::TRIANGLE_SURFACE );
-
- surfaceManager.addSurface( ofxSurfaceType::TRIANGLE_SURFACE );
- surfaceManager.getSurface(1)->setVertex(0, ofVec2f(10, 10));
- surfaceManager.getSurface(1)->setVertex(1, ofVec2f(400, 20));
- surfaceManager.getSurface(1)->setVertex(2, ofVec2f(300, 400));
- */
-
// check if the surfaces.xml file is there
// if not - load defaultSurfaces.xml
-
if ( ofFile::doesFileExist("surfaces.xml") ) {
surfaceManager.loadXmlSettings("surfaces.xml");
} else {
surfaceManager.loadXmlSettings("defaultSurfaces.xml");
}
+ // Pass the surface manager to the mapper graphical user interface
gui.setSurfaceManager( &surfaceManager );
+
+ // Create FBO
+ fbo = new ofFbo();
+ fbo->allocate( 500, 500 );
+ setFboAsTexture();
+
+ // Genereate rects
+ int numRects = 20; // change this to add more or less rects
+ for ( int i=0; igetHeight()), fbo->getWidth(), ofRandom(20)) );
+ rectSpeeds.push_back( (1.0f + ofRandom(5)) );
+ }
}
void ofApp::update()
{
- ofBackground(0);
+ // Move rects
+ for ( int i=0; i fbo->getHeight() ) {
+ rects[i].y = -rects[i].getHeight();
+ }
+ }
+
+ // Fill FBO
+ fbo->begin();
+ ofClear(0);
+ ofBackground(0);
+ ofSetColor(255);
+ for ( int i=0; iend();
}
void ofApp::draw()
{
- //surfaceManager.draw();
- // if using gui - use ofxSurfaceManagerGui::draw() instead of surfaceManager::draw()
+ // Draw the piMapper GUI
gui.draw();
if ( bShowInfo ) {
@@ -47,14 +64,22 @@ void ofApp::draw()
ss << " 4. Source selection mode\n\n";
ss << "You can switch between the modes by using <1>, <2>, <3> and <4> keys on the keyboard.\n\n";
ss << "Press or to add random or normal surface.\n";
+ ss << "Press to add a new quad surface.\n";
ss << "Press to save the composition.\n";
ss << "Press to toggle fullscreen.\n";
+ ss << "Press to reassign the fbo texture to the first surface\n";
ss << "Hit to hide this message.";
ofDrawBitmapStringHighlight(ss.str(), 10, 20, ofColor(0,0,0,100), ofColor(255,255,255,200));
}
}
+void ofApp::exit()
+{
+ // Clear FBO from mem
+ delete fbo;
+}
+
void ofApp::keyPressed(int key)
{
cout << "Key pressed: " << static_cast(key) << endl;
@@ -66,32 +91,16 @@ void ofApp::keyPressed(int key)
case '4': gui.setMode(ofxGuiMode::SOURCE_SELECTION); break;
case 'i': bShowInfo = !bShowInfo; break;
case 'r': addRandomSurface(); break;
+ case 'q': addQuadSurface(); break;
case 'n': addSurface(); break;
case 'f': ofToggleFullscreen(); break;
case 's': surfaceManager.saveXmlSettings("surfaces.xml"); break;
+ case 'a': setFboAsTexture(); break;
case OF_KEY_BACKSPACE: surfaceManager.removeSelectedSurface(); break;
default: break;
}
}
-void ofApp::mousePressed(int x, int y, int button)
-{
- //cout << "Mouse pressed." << endl;
- //surfaceManager.mousePressed(x, y, button);
-}
-
-void ofApp::mouseReleased(int x, int y, int button)
-{
- //cout << "Mouse released." << endl;
- //surfaceManager.mouseReleased(x, y, button);
-}
-
-void ofApp::mouseDragged(int x, int y, int button)
-{
- //
- //surfaceManager.mouseDragged(x, y, button);
-}
-
void ofApp::addRandomSurface()
{
int surfaceType = ofxSurfaceType::TRIANGLE_SURFACE;
@@ -109,6 +118,29 @@ void ofApp::addRandomSurface()
surfaceManager.selectSurface(surfaceManager.size()-1);
}
+void ofApp::addQuadSurface()
+{
+ int surfaceType = ofxSurfaceType::QUAD_SURFACE;
+ vector vertices;
+
+ int border = 50;
+ vertices.push_back( ofVec2f(border, border) );
+ vertices.push_back( ofVec2f(border, ofGetHeight() - border) );
+ vertices.push_back( ofVec2f(ofGetWidth() - border, ofGetHeight() - border) );
+ vertices.push_back( ofVec2f(ofGetWidth() - border, border) );
+
+ vector texCoords;
+ texCoords.push_back( ofVec2f(ofVec2f(0.0f, 0.0f)) );
+ texCoords.push_back( ofVec2f(ofVec2f(1.0f, 0.0f)) );
+ texCoords.push_back( ofVec2f(ofVec2f(1.0f, 1.0f)) );
+ texCoords.push_back( ofVec2f(ofVec2f(0.0f, 1.0f)) );
+
+ surfaceManager.addSurface(surfaceType, vertices, texCoords);
+
+ // select this surface right away
+ surfaceManager.selectSurface(surfaceManager.size()-1);
+}
+
void ofApp::addSurface()
{
int surfaceType = ofxSurfaceType::TRIANGLE_SURFACE;
@@ -124,4 +156,9 @@ void ofApp::addSurface()
// select this surface right away
surfaceManager.selectSurface(surfaceManager.size()-1);
+}
+
+void ofApp::setFboAsTexture()
+{
+ surfaceManager.getSurface(0)->setTexture( &fbo->getTextureReference() );
}
\ No newline at end of file
diff --git a/example/src/ofApp.h b/example/src/ofApp.h
old mode 100644
new mode 100755
index 6c6a67f..05d7a8f
--- a/example/src/ofApp.h
+++ b/example/src/ofApp.h
@@ -10,19 +10,22 @@ public:
void setup();
void update();
void draw();
+ void exit();
void keyPressed(int key);
- void mousePressed(int x, int y, int button);
- void mouseReleased(int x, int y, int button);
- void mouseDragged(int x, int y, int button);
void addRandomSurface();
+ void addQuadSurface();
void addSurface();
+ void setFboAsTexture();
ofImage image;
ofxSurfaceManager surfaceManager;
ofxSurfaceManagerGui gui;
bool bShowInfo;
+ ofFbo* fbo;
+ vector rects;
+ vector rectSpeeds;
};
#endif
\ No newline at end of file