// // Update override for the current frame. // // Make sure we have a proper set of operations. If so then update // shaders and light pruning information. // MStatus viewRenderOverrideShadows::setup(const MString& destination) { // Firewall checks MHWRender::MRenderer* renderer = MHWRender::MRenderer::theRenderer(); if (!renderer) return MStatus::kFailure; const MHWRender::MShaderManager* shaderMgr = renderer->getShaderManager(); if (!shaderMgr) return MStatus::kFailure; // Update render operations // MStatus status = updateRenderOperations(); if (status != MStatus::kSuccess) return status; // Update shaders status = updateShaders( shaderMgr ); if (status != MStatus::kSuccess) return status; // Update light list status = updateLightList(); return status; }
/* Desctructor Make sure to release the operations and any shaders acquired via the shader manager */ viewRenderOverrideShadows::~viewRenderOverrideShadows() { for (unsigned int i=0; i<kOperationCount; i++) { delete mRenderOperations[i]; mRenderOperations[i] = NULL; } MHWRender::MRenderer* theRenderer = MHWRender::MRenderer::theRenderer(); if (theRenderer) { // Release shaders const MHWRender::MShaderManager* shaderMgr = theRenderer->getShaderManager(); if (shaderMgr && mLightShader) { shaderMgr->releaseShader(mLightShader); mLightShader = NULL; } } }