From b552beeaa899d0ac5c7d3388bc911f16cc1dbc4c Mon Sep 17 00:00:00 2001 From: Tim Redfern Date: Tue, 30 Oct 2018 23:38:41 +0000 Subject: drawing 3 layer additive for I_cried --- gui/src/chainImage.cpp | 19 +++++++++++++++++-- gui/src/ofApp.cpp | 21 +++++++++++++++++++-- 2 files changed, 36 insertions(+), 4 deletions(-) (limited to 'gui') diff --git a/gui/src/chainImage.cpp b/gui/src/chainImage.cpp index a6cde14..40e483a 100644 --- a/gui/src/chainImage.cpp +++ b/gui/src/chainImage.cpp @@ -479,9 +479,15 @@ void chainImage::drawChain(float fadeIn,bool additive,float intensity,float zoom glScalef(getLinkScale(),getLinkScale(),getLinkScale()); //ofEnableAlphaBlending(); - glEnable(GL_BLEND); + if (additive){ + glBlendFunc(GL_SRC_ALPHA, GL_ONE); + ofSetColor(255,255,255,255); + } + else { + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + ofSetColor(255,255,255,255*min(1.0,transition/fadeIn)*intensity); + } - ofSetColor(255,255,255,255*min(1.0,transition/fadeIn)*intensity); //setting alpha here doesn't work with shader? //possibly if you could set the alpha when drawing? @@ -497,6 +503,15 @@ void chainImage::drawChain(float fadeIn,bool additive,float intensity,float zoom //link->setAlpha(transition); link->draw(0,0,link->getWidth(),link->getHeight()); + if (additive){ + ofSetColor(255,255,255,255*min(1.0,transition/fadeIn)*intensity); + glTranslatef(link->getLinkPos().x,link->getLinkPos().y,0); + glRotatef(link->getLinkRot(),0,0,1); + glScalef(link->getLinkScale(),link->getLinkScale(),link->getLinkScale()); + link->link->setAnchorPoint(link->link->getWidth()/2,link->link->getHeight()/2); + link->link->draw(0,0,link->link->getWidth(),link->link->getHeight()); + } + glDisable(GL_BLEND); glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); diff --git a/gui/src/ofApp.cpp b/gui/src/ofApp.cpp index 5869074..5c148be 100644 --- a/gui/src/ofApp.cpp +++ b/gui/src/ofApp.cpp @@ -314,6 +314,7 @@ void ofApp::newMidiMessage(ofxMidiMessage& msg) { } + //-------------------------------------------------------------- void ofApp::guiKeyPressed(ofKeyEventArgs &args){ @@ -337,7 +338,12 @@ void ofApp::guiKeyPressed(ofKeyEventArgs &args){ sets[1].decayFactor=sets[0].decayFactor; printf("Decayfactor: %f \n",sets[0].decayFactor); } - + if(args.key == 'a'){ + bool add=!sets[0].additive;; + sets[0].additive=add; + sets[1].additive=add; + printf("Additive: %s \n",add?"true":"false"); + } if(args.key >='1' && args.key <= '9'){ //sets[0].decayFactor = 1.0f + ( // pow(4.0f,-((args.key-'1')+1.7f)) @@ -359,11 +365,22 @@ void ofApp::keyPressed(ofKeyEventArgs &args){ outputFS=!outputFS; ofSetFullscreen(outputFS); } + if(args.key == 'a'){ + bool add=!sets[0].additive;; + sets[0].additive=add; + sets[1].additive=add; + printf("Additive: %s \n",add?"true":"false"); + } if(args.key >='1' && args.key <= '9'){ + //sets[0].decayFactor = 1.0f + ( + // pow(4.0f,-((args.key-'1')+1.7f)) + // * (sets[0].decayFactor<1.0f?-1:1) + // ); sets[0].decayFactor = 1.0f + ( - pow(4.0f,-((args.key-'1')+1.7f)) + pow(4.0f,-(3+((args.key-'1')*0.1)+1.7f)) * (sets[0].decayFactor<1.0f?-1:1) ); + //temp fine adjust with keys sets[1].decayFactor=sets[0].decayFactor; printf("Keydiff: %f Decayfactor: %f \n",((args.key-'1')+1.0f),sets[0].decayFactor); } -- cgit v1.2.3