当前位置: 首页>>代码示例>>C++>>正文


C++ RenderSystem::clearFrameBuffer方法代码示例

本文整理汇总了C++中ogre::RenderSystem::clearFrameBuffer方法的典型用法代码示例。如果您正苦于以下问题:C++ RenderSystem::clearFrameBuffer方法的具体用法?C++ RenderSystem::clearFrameBuffer怎么用?C++ RenderSystem::clearFrameBuffer使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在ogre::RenderSystem的用法示例。


在下文中一共展示了RenderSystem::clearFrameBuffer方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1:

/** The Ogre renderQueueStarted implementation
  *
  * The more used parameter is the queueGroupId. 90 is for the 
  * object to be highlighted, 91 is its outline.
  *
  * \param queueGroupId The queue group identifier (90 and 91 are treated)
  * \param invocation Unused Ogre provided parameter
  * \param skipThisInvocation Unused Ogre provided parameter
  *
  */
void RainbruRPG::Core::HighlightQueueListener::
renderQueueStarted(Ogre::uint8 queueGroupId, const Ogre::String& invocation, 
		   bool& skipThisInvocation)

{
  //RenderQueue containing the object to be highlighted
  if (queueGroupId == 90){
    Ogre::RenderSystem * rendersys = Ogre::Root::getSingleton()
      .getRenderSystem();
		
    rendersys->clearFrameBuffer(Ogre::FBT_STENCIL);
    rendersys->setStencilCheckEnabled(true);
    rendersys->setStencilBufferParams(Ogre::CMPF_ALWAYS_PASS,1,0xFFFFFFFF,
				      Ogre::SOP_KEEP,Ogre::SOP_KEEP,
				      Ogre::SOP_REPLACE,false);      
  }
  
  //RenderQueue containing the outline
  if (queueGroupId == 91){
    Ogre::RenderSystem * rendersys = Ogre::Root::getSingleton()
      .getRenderSystem();
    
    rendersys->setStencilCheckEnabled(true);
    rendersys->setStencilBufferParams(Ogre::CMPF_NOT_EQUAL,1,0xFFFFFFFF,
				      Ogre::SOP_KEEP,Ogre::SOP_KEEP,
				      Ogre::SOP_KEEP,false);      
    }
}
开发者ID:dreamsxin,项目名称:rainbrurpg,代码行数:38,代码来源:HighlightListener.cpp

示例2: clear

        void rtt::clear(unsigned buffers, const colour &c, float d, unsigned s)
        {
            assert(_viewport);

            Ogre::RenderSystem *rs = Ogre::Root::getSingleton().getRenderSystem();

            rs->_setViewport(_viewport);
            rs->clearFrameBuffer(buffers, c, d, s);
        }
开发者ID:Joooo,项目名称:pseudoform,代码行数:9,代码来源:rtt.cpp

示例3: begin

	void OgreRTTexture::begin()
	{
		Ogre::RenderTexture* rtt = mTexture->getBuffer()->getRenderTarget();

		if (mViewport == nullptr)
		{
			mViewport = rtt->addViewport(nullptr);
			mViewport->setClearEveryFrame(false);
			mViewport->setOverlaysEnabled(false);
		}

		Ogre::RenderSystem* system = Ogre::Root::getSingleton().getRenderSystem();
		system->_setProjectionMatrix(mProjectMatrix);
		mSaveViewport = system->_getViewport();
		system->_setViewport(mViewport);
		system->clearFrameBuffer(Ogre::FBT_COLOUR, Ogre::ColourValue::ZERO);
	}
开发者ID:Anomalous-Software,项目名称:mygui,代码行数:17,代码来源:MyGUI_OgreRTTexture.cpp

示例4: renderFrame

	void OgreSubsystem::renderFrame()
	{
		Ogre::RenderSystem * rendersys = Ogre::Root::getSingleton().getRenderSystem(); 
		Ogre::WindowEventUtilities::messagePump();

		if (!mCustomRenderSequenceEnabled)
		{
			mRoot->renderOneFrame();
		}
		else
		{
			// clear framebuffer
			rendersys->clearFrameBuffer(Ogre::FBT_STENCIL | Ogre::FBT_COLOUR | Ogre::FBT_DEPTH,
				mViewport->getBackgroundColour()); 

			// pass index
			int pass = 0;

			std::list<CustomRenderIteration>::iterator it = mRenderSequence->getIterator();

			while (it != mRenderSequence->getEnd())
			{
				// signal after each iteration
				getSignal("CustomRenderSequenceIteration")->send(pass);

				// update iteration info with listener
				mSequenceListener->iteration = &(*it);
				StencilConfig& cfg = mSequenceListener->iteration->stencilConfigs[-1];

				if(cfg.stencil)
				{
					// set initial stencil info
					rendersys->setStencilCheckEnabled(true); 
					rendersys->setStencilBufferParams(
						static_cast<Ogre::CompareFunction>(cfg.compare), 
						static_cast<Ogre::uint32>(cfg.mask), 
						static_cast<Ogre::uint32>(cfg.ref), 
						static_cast<Ogre::StencilOperation>(cfg.failOp), 
						static_cast<Ogre::StencilOperation>(cfg.depthFailOp), 
						static_cast<Ogre::StencilOperation>(cfg.passOp), 
						false);       
				}

				if(it->clearDepth)
					rendersys->clearFrameBuffer(Ogre::FBT_DEPTH);
				
				// force a transformation update and render
				getActiveCamera()->getCamera()->_notifyMoved();
				getActiveCamera()->getCamera()->_renderScene(mViewport, true);
				
				++pass;
				++it;
			}

			// final signal
			getSignal("CustomRenderSequenceIteration")->send(pass);

			// finally swap the buffers
			mWindow->swapBuffers();

		}
	}
开发者ID:67-6f-64,项目名称:OryxEngine,代码行数:62,代码来源:OgreSubsystem.cpp


注:本文中的ogre::RenderSystem::clearFrameBuffer方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。