Browse Source

Add texture and texture coordinates to triangle surface

master
Krisjanis Rijnieks 11 years ago
parent
commit
0022c92ba7
  1. 5
      example/src/ofApp.cpp
  2. 1
      example/src/ofApp.h
  3. 7
      src/ofxBaseSurface.cpp
  4. 1
      src/ofxBaseSurface.h
  5. 21
      src/ofxTriangleSurface.cpp
  6. 2
      src/ofxTriangleSurface.h

5
example/src/ofApp.cpp

@ -2,8 +2,11 @@
void ofApp::setup() void ofApp::setup()
{ {
// Load test pattern image
image.loadImage("TestPatternInvert.jpg");
// Create a triangle surface // Create a triangle surface
triangleSurface.setup( ofVec2f(30,40), ofVec2f(500,500), ofVec2f(0,600) ); triangleSurface.setup( ofVec2f(30,40), ofVec2f(500,500), ofVec2f(0,600), ofVec2f(0,0), ofVec2f(1,1), ofVec2f(0,1), &image.getTextureReference() );
} }
void ofApp::update() void ofApp::update()

1
example/src/ofApp.h

@ -17,6 +17,7 @@ public:
void mouseDragged(int x, int y, int button); void mouseDragged(int x, int y, int button);
ofxTriangleSurface triangleSurface; ofxTriangleSurface triangleSurface;
ofImage image;
}; };
#endif #endif

7
src/ofxBaseSurface.cpp

@ -1 +1,6 @@
#include "ofxBaseSurface.h" #include "ofxBaseSurface.h"
ofxBaseSurface::ofxBaseSurface()
{
ofEnableNormalizedTexCoords();
}

1
src/ofxBaseSurface.h

@ -6,6 +6,7 @@
class ofxBaseSurface class ofxBaseSurface
{ {
public: public:
ofxBaseSurface();
virtual void setup(){}; virtual void setup(){};
virtual void draw(){}; virtual void draw(){};

21
src/ofxTriangleSurface.cpp

@ -18,21 +18,36 @@ void ofxTriangleSurface::setup()
ofVec2f p2 = ofVec2f(ofVec2f(0, ofGetHeight())); ofVec2f p2 = ofVec2f(ofVec2f(0, ofGetHeight()));
ofVec2f p3 = ofVec2f(ofGetWidth(), ofGetHeight()); ofVec2f p3 = ofVec2f(ofGetWidth(), ofGetHeight());
setup( p1, p2, p3 ); // Create 3 point for the texture coordinates
ofVec2f t1 = ofVec2f(0.5f, 0);
ofVec2f t2 = ofVec2f(0, 1.0f);
ofVec2f t3 = ofVec2f(1, 1.0f);
setup( p1, p2, p3, t1, t2, t3, texture );
} }
void ofxTriangleSurface::setup( ofVec2f p1, ofVec2f p2, ofVec2f p3 ) void ofxTriangleSurface::setup( ofVec2f p1, ofVec2f p2, ofVec2f p3, ofVec2f t1, ofVec2f t2, ofVec2f t3, ofTexture* texturePtr )
{ {
// Clear previous vertices if any // Assign texture
texture = texturePtr;
// Clear mesh
mesh.clear(); mesh.clear();
// Create a surface with the points // Create a surface with the points
mesh.addVertex( p1 ); mesh.addVertex( p1 );
mesh.addVertex( p2 ); mesh.addVertex( p2 );
mesh.addVertex( p3 ); mesh.addVertex( p3 );
// Add texture coordinates
mesh.addTexCoord(t1);
mesh.addTexCoord(t2);
mesh.addTexCoord(t3);
} }
void ofxTriangleSurface::draw() void ofxTriangleSurface::draw()
{ {
texture->bind();
mesh.draw(); mesh.draw();
texture->unbind();
} }

2
src/ofxTriangleSurface.h

@ -11,7 +11,7 @@ public:
~ofxTriangleSurface(); ~ofxTriangleSurface();
void setup(); void setup();
void setup( ofVec2f p1, ofVec2f p2, ofVec2f p3 ); void setup( ofVec2f p1, ofVec2f p2, ofVec2f p3, ofVec2f t1, ofVec2f t2, ofVec2f t3, ofTexture* texturePtr );
void draw(); void draw();
}; };

Loading…
Cancel
Save