void FaceOff::updateClone() { gl::ScopedMatrices mvp; gl::setMatricesWindow(mRenderedOfflineFaceFbo->getSize()); gl::ScopedViewport viewport(0, 0, mRenderedOfflineFaceFbo->getWidth(), mRenderedOfflineFaceFbo->getHeight()); // TODO: merge these two passes w/ MRTs { gl::ScopedFramebuffer fbo(mRenderedOfflineFaceFbo); gl::ScopedGlslProg glsl(gl::getStockShader(gl::ShaderDef().texture())); gl::ScopedTextureBind t0(mOfflineFaceTex, 0); gl::clear(ColorA::black(), false); gl::draw(mFaceMesh); } if (!MOVIE_MODE) { { gl::ScopedFramebuffer fbo(mFaceMaskFbo); gl::clear(ColorA::black(), false); gl::draw(mFaceMesh); } // TODO: add gl::ScopedMatrices in mClone.update() mClone.update(mRenderedOfflineFaceFbo->getColorTexture(), mCapture.texture, mFaceMaskFbo->getColorTexture()); mHasNewRenderedFace = true; } }