summaryrefslogtreecommitdiff
path: root/gui/src
diff options
context:
space:
mode:
authorTim Redfern <tim@getdrop.com>2017-10-25 22:25:58 +0100
committerTim Redfern <tim@getdrop.com>2017-10-25 22:25:58 +0100
commit3426aeebba3ec51e6b6bf7e1f0de947c97f97a36 (patch)
treed1c716370177e9d1ba4ca48c6df38a33cee3215d /gui/src
parent299c565b6295eaee1248c0409a412e008ddbd836 (diff)
an improvement
Diffstat (limited to 'gui/src')
-rw-r--r--gui/src/chainImage.cpp28
-rw-r--r--gui/src/chainImage.h7
-rw-r--r--gui/src/chainImageSet.cpp15
-rw-r--r--gui/src/chainImageSet.h2
-rw-r--r--gui/src/main.cpp7
-rw-r--r--gui/src/ofApp.cpp4
6 files changed, 59 insertions, 4 deletions
diff --git a/gui/src/chainImage.cpp b/gui/src/chainImage.cpp
index 4eb0417..7053961 100644
--- a/gui/src/chainImage.cpp
+++ b/gui/src/chainImage.cpp
@@ -8,6 +8,8 @@ float distance(ofPoint p1,ofPoint p2){
}
void chainImage::init(ofPoint _linkPos,float _linkScale,float _linkRot){
+ shader.load("shader");
+
linkPos=_linkPos;
linkScale=_linkScale;
linkRot=_linkRot;
@@ -244,6 +246,32 @@ void chainImage::drawChain(float fadeIn,bool additive,float intensity,float zoom
glPopMatrix();
}
+void chainImage::gpu_drawChain(float fadeIn,bool additive,float intensity,float zoomMultiplier){
+
+ ofSetColor(255);
+
+ float basescale=ofGetScreenWidth()/ofGetWidth();
+
+ shader.begin();
+ shader.setUniform3f("transform",getTransform());
+ shader.setUniform1f("scale",1.0f);
+ //shader.setUniform1f("rotation",getRotation());
+ //shader.setUniform1f("transition",transition);
+ //shader.setUniform1f("fadeIn",fadeIn);
+ //shader.setUniform1f("intensity",intensity);
+ //shader.setUniform3f("linkPos",linkPos);
+ shader.setUniformTexture("thisImage", getTexture(), 1 );
+ shader.setUniformTexture("nextImage", link->getTexture(), 2 );
+
+ //draw(0, 0,ofGetWidth(),ofGetHeight());
+ ofDrawRectangle(0, 0, ofGetScreenWidth(), ofGetScreenHeight());
+
+ shader.end();
+
+ //1. can we FILL THE SCREEN?
+
+}
+
Json::Value chainImage::toJson(){
Json::Value json=Json::Value(Json::objectValue);
json["linkPos"]=Json::Value(Json::arrayValue);
diff --git a/gui/src/chainImage.h b/gui/src/chainImage.h
index 23e9338..984b0d6 100644
--- a/gui/src/chainImage.h
+++ b/gui/src/chainImage.h
@@ -6,8 +6,8 @@
#define THUMB_BORDER_RATIO 0.8
#define THUMB_SIZE 160
#define DEFAULT_FADEIN 1.0
-#define BEZIER_OUT 0.2
-#define BEZIER_IN 0.5
+#define BEZIER_OUT 0.25
+#define BEZIER_IN 0.25
#define ROTATION_BEZIER_FRACTION 0.1
#define SWITCH_NONE 0
@@ -51,6 +51,7 @@ class chainImage : public ofImage{
void updateRotationTimeline();
void drawChain(float fadeIn=DEFAULT_FADEIN,bool additive =false, float intensity=1.0f, float zoomMultiplier=1.0f);
+ void gpu_drawChain(float fadeIn=DEFAULT_FADEIN,bool additive =false, float intensity=1.0f, float zoomMultiplier=1.0f);
ofImage thumbnail;
void makeThumbnail();
@@ -78,6 +79,8 @@ class chainImage : public ofImage{
bool isLoaded;
+ ofShader shader;
+
//int totalframes,framecount;
};
diff --git a/gui/src/chainImageSet.cpp b/gui/src/chainImageSet.cpp
index 1fa20ad..7e6e351 100644
--- a/gui/src/chainImageSet.cpp
+++ b/gui/src/chainImageSet.cpp
@@ -2,8 +2,6 @@
void chainImageSet::drawOutput(){
- //movment and rotation are working on their own but not together.
-
float camera_throw= (float)outputSize.y/(float)outputSize.x; //the ratio of z distance to x width
camera_throw*=fitFactor; //fudge factor to allow tweening,
@@ -45,7 +43,20 @@ void chainImageSet::drawOutput(){
(*currentImage)->drawChain(DEFAULT_FADEIN,additive,intensity,zoomMultiplier);
+
+
+ }
+
+
+}
+
+void chainImageSet::drawGpu(){
+
+ ofSetColor(255);
+
+ if (images.size()){
+ (*currentImage)->gpu_drawChain(DEFAULT_FADEIN,additive,intensity,zoomMultiplier);
}
}
diff --git a/gui/src/chainImageSet.h b/gui/src/chainImageSet.h
index 05a7cdf..ae70561 100644
--- a/gui/src/chainImageSet.h
+++ b/gui/src/chainImageSet.h
@@ -26,6 +26,7 @@ class chainImageSet{
}
void drawGui(int x,int y,bool is_selected);
void drawOutput();
+ void drawGpu();
void updateOutput();
bool add(std::string filename,glm::vec2 pos);
void keyPressed(ofKeyEventArgs &keyargs);
@@ -68,6 +69,7 @@ class chainImageSet{
float intensity;
std::vector <std::unique_ptr<chainImage> > loadingImages;
+ std::vector <int> loadingIndexes;
threadedChainImageLoader loader;
}; \ No newline at end of file
diff --git a/gui/src/main.cpp b/gui/src/main.cpp
index 521be02..d58e5e2 100644
--- a/gui/src/main.cpp
+++ b/gui/src/main.cpp
@@ -1,6 +1,8 @@
#include "ofMain.h"
#include "ofApp.h"
+//#define GPU_ALGORITHM
+
//========================================================================
int main(int argc, char *argv[]){
/*
@@ -19,6 +21,11 @@ int main(int argc, char *argv[]){
//app->arguments = vector<string>(argv, argv + argc);
ofGLFWWindowSettings settings;
+
+#ifdef GPU_ALGORITHM
+ settings.setGLVersion(3,2); //doesn't support gluLookat
+#endif //GPU_ALGORITHM
+
settings.width = 1024;
settings.height = 576;
settings.setPosition(ofVec2f(300,0));
diff --git a/gui/src/ofApp.cpp b/gui/src/ofApp.cpp
index afdaf4f..f2fb8fb 100644
--- a/gui/src/ofApp.cpp
+++ b/gui/src/ofApp.cpp
@@ -77,7 +77,11 @@ void ofApp::drawOutput(ofEventArgs & args){
for (int i=0;i<sets.size();i++){
+#ifdef GPU_ALGORITHM
+ sets[i].drawGpu();
+#else
sets[i].drawOutput();
+#endif //GPU_ALGORITHM
}
if (dmx.isConnected()&&ofGetElapsedTimef()>next_update){