RenderTarget::~RenderTarget() { // make a copy of the list to avoid crashes, the viewport destructor change the list ViewportList vlist = mViewportList; // Delete viewports for (ViewportList::iterator i = vlist.begin(); i != vlist.end(); ++i) { fireViewportRemoved(i->second); OGRE_DELETE (*i).second; } //DepthBuffer keeps track of us, avoid a dangling pointer detachDepthBuffer(); // Write closing message LogManager::getSingleton().stream(LML_TRIVIAL) << "Render Target '" << mName << "' " << "Average FPS: " << mStats.avgFPS << " " << "Best FPS: " << mStats.bestFPS << " " << "Worst FPS: " << mStats.worstFPS; }
//----------------------------------------------------------------------- void RenderTarget::setDepthBufferPool( uint16 poolId ) { if( mDepthBufferPoolId != poolId ) { mDepthBufferPoolId = poolId; detachDepthBuffer(); } }
//----------------------------------------------------------------------- bool RenderTarget::attachDepthBuffer( DepthBuffer *depthBuffer ) { bool retVal = false; if( (retVal = depthBuffer->isCompatible( this )) ) { detachDepthBuffer(); mDepthBuffer = depthBuffer; mDepthBuffer->_notifyRenderTargetAttached( this ); } return retVal; }
//--------------------------------------------------------------------- void D3D11RenderWindowBase::_destroySizeDependedD3DResources() { SAFE_RELEASE(mpBackBuffer); SAFE_RELEASE(mRenderTargetView); // delete manual depth buffer (depth buffer view non-owning wrapper) DepthBuffer* depthBuf = this->getDepthBuffer(); detachDepthBuffer(); D3D11RenderSystem* rsys = static_cast<D3D11RenderSystem*>(Root::getSingleton().getRenderSystem()); rsys->_removeManualDepthBuffer(depthBuf); delete depthBuf; SAFE_RELEASE(mDepthStencilView); }