From 4f1d5b3a6efe1de7885b37b091595f7bbc8a9b29 Mon Sep 17 00:00:00 2001 From: Tim Redfern Date: Fri, 30 Dec 2011 21:13:07 +0000 Subject: succesfully combined camera and FBO --- src/viewpoint.cpp | 135 +++++++++++++++++++++++++++++------------------------- 1 file changed, 72 insertions(+), 63 deletions(-) (limited to 'src/viewpoint.cpp') diff --git a/src/viewpoint.cpp b/src/viewpoint.cpp index 64a2b99..5d61f1f 100644 --- a/src/viewpoint.cpp +++ b/src/viewpoint.cpp @@ -1,88 +1,97 @@ #include "viewpoint.h" -#define DEBUG 1 +#define DEBUG 0 void viewpoint::setup(float w, float h, float x, float y) { - window=ofRectangle(w,h,x,y); - distortFactor=0.0; - renderFBO.allocate(window.width,window.height,GL_RGB); + window=ofRectangle(w,h,x,y); + distortFactor=0.0; + renderFBO.allocate(window.width,window.height,GL_RGB); - //todo: load/save from xml - fov=17.25; - aspect=1.79; - near=1; - far=20; + //todo: load/save from xml + fov=17.25; + aspect=1.79; + near=1; + far=20; camera.setParent(target); - camera.setPosition(0,0,200); vars=new keyVar[8]; //void set(char _keyInc,char _keyDec,float _val,float _speed,float _accel,float accelTime); vars[0].set('w','s',17.25,0.5,2.0,3.0); - vars[1].set('g','d',0.0,0.2,3.0,3.0); - vars[2].set('r','v',0.0,0.2,3.0,3.0); - vars[3].set('t','c',0.0,0.2,3.0,3.0); + vars[1].set('g','d',0.0,10,3.0,3.0); + vars[2].set('r','v',0.0,10,3.0,3.0); + vars[3].set('t','c',0.0,10,3.0,3.0); vars[4].set('u','n',0.0,1.0,3.0,3.0); - vars[5].set('j','h',0.0,1.0,3.0,3.0); - vars[6].set('o','l',0.0,0.2,3.0,3.0); - vars[7].set('q','a',0,0.0001,2.0,3.0); + vars[5].set('j','h',0.0,1.0,3.0,3.0); + vars[6].set('o','l',1000.0,10,3.0,3.0); + vars[7].set('q','a',0,0.0001,2.0,3.0); + + //camera.setPosition(0,0,vars[6].getVal()); } //-------------------------------------------------------------- void viewpoint::begin(){ - camera.begin(); + + renderFBO.begin(); + ofClear(0,0,0); + + //ofPushView(); + + camera.begin(); camera.setFov(vars[0].getVal()); target.setPosition(vars[1].getVal(),vars[2].getVal(),vars[3].getVal()); target.rotate(vars[4].getInc(),1,0,0); target.rotate(vars[5].getInc(),0,1,0); - camera.move(0,0,vars[6].getInc()); + camera.setPosition(0,0,vars[6].getVal()); - renderFBO.begin(); - ofClear(0,0,0); -} + + } //-------------------------------------------------------------- void viewpoint::end(){ - - renderFBO.end(); - camera.end(); - - ofPushMatrix(); - bindTexture(renderFBO); - - //draw a grid - //glPolygonMode( GL_FRONT_AND_BACK, GL_LINE ); - ofNoFill(); - - ofSetLineWidth(1.0); - //ofSetColor(I_fade1,I_fade1,I_fade1); - int gridX=50; - int gridY=50; - int xStep=ofGetWidth()/2; - int yStep=ofGetHeight()/2; - ofTranslate(ofGetWidth()/2,ofGetHeight()/2); - - for (float i = -1; i < 1.001; i+=(2.0f/gridY)){ - - glBegin(GL_QUAD_STRIP); - ofPoint p0; - ofPoint p1; - for (float j = -1; j < 1.001; j+=(2.0f/gridX)){ - p0=distort(ofPoint(j,i-(2.0f/gridY)),vars[7].getVal()); - p1=distort(ofPoint(j,i),vars[7].getVal()); - glTexCoord2f((j+1)*0.5,((i-(2.0f/gridY))+1)*0.5); - glVertex3f(p0.x*xStep,p0.y*yStep,-0.1); - glTexCoord2f((j+1)*0.5,(i+1)*0.5); - glVertex3f(p1.x*xStep,p1.y*yStep,-0.1); - } - - glEnd(); - // - } - - ofFill(); - - unbindTexture(renderFBO); - - ofPopMatrix(); + + camera.end(); + //ofPopView(); + + renderFBO.end(); + + ofPushMatrix(); + + bindTexture(renderFBO); + + //draw a grid + //glPolygonMode( GL_FRONT_AND_BACK, GL_LINE ); + ofNoFill(); + + ofSetLineWidth(1.0); + //ofSetColor(I_fade1,I_fade1,I_fade1); + int gridX=50; + int gridY=50; + int xStep=ofGetWidth()/2; + int yStep=ofGetHeight()/2; + ofTranslate(ofGetWidth()/2,ofGetHeight()/2); + + for (float i = -1; i < 1.001; i+=(2.0f/gridY)){ + + glBegin(GL_QUAD_STRIP); + ofPoint p0; + ofPoint p1; + for (float j = -1; j < 1.001; j+=(2.0f/gridX)){ + p0=distort(ofPoint(j,i-(2.0f/gridY)),vars[7].getVal()); + p1=distort(ofPoint(j,i),vars[7].getVal()); + glTexCoord2f((j+1)*0.5,((i-(2.0f/gridY))+1)*0.5); + glVertex3f(p0.x*xStep,p0.y*yStep,-0.1); + glTexCoord2f((j+1)*0.5,(i+1)*0.5); + glVertex3f(p1.x*xStep,p1.y*yStep,-0.1); + } + + glEnd(); + // + } + + ofFill(); + + unbindTexture(renderFBO); + + ofPopMatrix(); } //-------------------------------------------------------------- -- cgit v1.2.3