本文整理汇总了C++中CompositionPass::setClearBuffers方法的典型用法代码示例。如果您正苦于以下问题:C++ CompositionPass::setClearBuffers方法的具体用法?C++ CompositionPass::setClearBuffers怎么用?C++ CompositionPass::setClearBuffers使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CompositionPass
的用法示例。
在下文中一共展示了CompositionPass::setClearBuffers方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: _compile
//-----------------------------------------------------------------------
void CompositorChain::_compile()
{
clearCompiledState();
bool compositorsEnabled = false;
// force default scheme so materials for compositor quads will determined correctly
MaterialManager& matMgr = MaterialManager::getSingleton();
String prevMaterialScheme = matMgr.getActiveScheme();
matMgr.setActiveScheme(MaterialManager::DEFAULT_SCHEME_NAME);
/// Set previous CompositorInstance for each compositor in the list
CompositorInstance *lastComposition = mOriginalScene;
mOriginalScene->mPreviousInstance = 0;
CompositionPass* pass = mOriginalScene->getTechnique()->getOutputTargetPass()->getPass(0);
pass->setClearBuffers(mViewport->getClearBuffers());
pass->setClearColour(mViewport->getBackgroundColour());
for(Instances::iterator i=mInstances.begin(); i!=mInstances.end(); ++i)
{
if((*i)->getEnabled())
{
compositorsEnabled = true;
(*i)->mPreviousInstance = lastComposition;
lastComposition = (*i);
}
}
/// Compile misc targets
lastComposition->_compileTargetOperations(mCompiledState);
/// Final target viewport (0)
mOutputOperation.renderSystemOperations.clear();
lastComposition->_compileOutputOperation(mOutputOperation);
// Deal with viewport settings
if (compositorsEnabled != mAnyCompositorsEnabled)
{
mAnyCompositorsEnabled = compositorsEnabled;
if (mAnyCompositorsEnabled)
{
// Save old viewport clearing options
mOldClearEveryFrameBuffers = mViewport->getClearBuffers();
// Don't clear anything every frame since we have our own clear ops
mViewport->setClearEveryFrame(false);
}
else
{
// Reset clearing options
mViewport->setClearEveryFrame(mOldClearEveryFrameBuffers > 0,
mOldClearEveryFrameBuffers);
}
}
// restore material scheme
matMgr.setActiveScheme(prevMaterialScheme);
mDirty = false;
}
示例2: preViewportUpdate
//-----------------------------------------------------------------------
void CompositorChain::preViewportUpdate(const RenderTargetViewportEvent& evt)
{
// Only set up if there is at least one compositor enabled, and it's this viewport
if(evt.source != mViewport || !mAnyCompositorsEnabled)
return;
// set original scene details from viewport
CompositionPass* pass = mOriginalScene->getTechnique()->getOutputTargetPass()->getPass(0);
CompositionTargetPass* passParent = pass->getParent();
if (pass->getClearBuffers() != mViewport->getClearBuffers() ||
pass->getClearColour() != mViewport->getBackgroundColour() ||
passParent->getVisibilityMask() != mViewport->getVisibilityMask() ||
passParent->getMaterialScheme() != mViewport->getMaterialScheme() ||
passParent->getShadowsEnabled() != mViewport->getShadowsEnabled())
{
// recompile if viewport settings are different
pass->setClearBuffers(mViewport->getClearBuffers());
pass->setClearColour(mViewport->getBackgroundColour());
passParent->setVisibilityMask(mViewport->getVisibilityMask());
passParent->setMaterialScheme(mViewport->getMaterialScheme());
passParent->setShadowsEnabled(mViewport->getShadowsEnabled());
_compile();
}
Camera *cam = mViewport->getCamera();
if (cam)
{
/// Prepare for output operation
preTargetOperation(mOutputOperation, mViewport, cam);
}
}