ofImage画像をofPath描画でマスクする #openFrameworks

ofImageへのマスク処理

alpha

0.9.0~ できるようになったというofImageへのマスク処理 setAlphaMask (参考:画像を形を指定してマスクする)を試してみました。

サンプルコード


ofPath path;
ofImage img;
ofFbo fbo;

void ofApp::setup(){

ofHideCursor();

//set path
for(auto i = 0 ; i < 100 ; i++){
ofSetColor(255);
const auto pos = ofPoint(ofRandom(float(ofGetWidth())),float(ofRandom(ofGetHeight())));
path.lineTo(pos);
}

//set fbo
fbo.allocate(ofGetWidth(),ofGetHeight(),GL_RGBA /*GL_LUMINANCE*/);
fbo.begin();
path.draw();
fbo.end();

//set img
//dataフォルダに好きな画像を入れてください。
if(!img.load("mirrorboy.jpg")){
ofLog() << "image is not loaded." ;
};

img.setAnchorPercent(0.5,0.5);
img.getTexture().setAlphaMask(fbo.getTexture());
}

void ofApp::draw(){

 ofBackgroundGradient(ofColor::yellow,ofColor::gray);

 ofSetColor(255);
 img.draw(ofGetWidth()/2,ofGetHeight()/2);

}