#include "OgrePhaseTextureRenderingRun.h" #include "OgreIlluminationManager.h" OgrePhaseTextureRenderingRun::OgrePhaseTextureRenderingRun( String name, unsigned int resolutionX, unsigned int resolutionY, String materialName ) :PhaseTextureRenderingRun(resolutionX, resolutionY) , OgreRenderingRun(1, 1) , RenderingRun(1, 1) { this->name = name; this->materialName = materialName; createPhaseTexture(); } void OgrePhaseTextureRenderingRun::createPhaseTexture() { TexturePtr texPtr = Ogre::TextureManager::getSingleton().createManual(name, "default", TEX_TYPE_2D, resolutionX, resolutionY, 0, 0, PF_FLOAT16_RGBA, TU_RENDERTARGET); phaseTexture = texPtr.getPointer(); phaseCamera = Root::getSingleton()._getCurrentSceneManager()->createCamera(name + "_CAMERA"); //add viewport to rendertarget HardwarePixelBuffer* hpb = (phaseTexture->getBuffer()).getPointer(); RenderTarget* rt = hpb->getRenderTarget(); Viewport* v = rt->addViewport(phaseCamera); v->setOverlaysEnabled(false); rt->setAutoUpdated(false); } void OgrePhaseTextureRenderingRun::updateFrame(unsigned long frameNum) { RenderTarget* rt = phaseTexture->getBuffer().getPointer()->getRenderTarget(); renderFullscreenQuad(materialName, rt); } void OgrePhaseTextureRenderingRun::freeAllResources() { this->phaseTexture = 0; TextureManager::getSingleton().remove(name); Root::getSingleton()._getCurrentSceneManager()->destroyCamera(name + "_CAMERA"); }