![Embarassed :oops:](./images/smilies/icon_redface.gif)
![Razz :P](./images/smilies/icon_razz.gif)
To add to the woes, I'm having serious connectivity issues, so am not able to work in as efficient manner as I'd like
![Sad :(](./images/smilies/icon_sad.gif)
CE.
Moderators: CEGUI MVP, CEGUI Team
Code: Select all
// disable calls to _beginFrame and _endFrame, which also disables
// default rendering: we will use a custom rendering method.
myOgreRenderer->setFrameControlExecutionEnabled(false);
Code: Select all
myRenderQueueListener = new CEGUIRQListener(myOgreRenderer, Ogre::RENDER_QUEUE_OVERLAY, true);
mySceneManager->addRenderQueueListener(myRenderQueueListener);
Code: Select all
//! RenderQueueListener based class used to hook into the ogre rendering system
class CEGUIRQListener : public Ogre::RenderQueueListener
{
public:
CEGUIRQListener(CEGUI::OgreRenderer* renderer, Ogre::uint8 queue_id, bool post_queue) :
d_renderer(renderer),
d_queue_id(queue_id),
d_post_queue(post_queue)
{
}
void renderQueueStarted(Ogre::uint8 id, const Ogre::String& invocation, bool& skipThisQueue)
{
if (!d_post_queue && d_queue_id == id)
CEGUI::System::getSingleton().renderGUI();
}
void renderQueueEnded(Ogre::uint8 id, const Ogre::String& invocation, bool& repeatThisQueue)
{
if (!d_post_queue || d_queue_id != id)
return;
// need to reset Ogre renderer viewport here for whichever vp is being drawn.
Ogre::Viewport* vp = Ogre::Root::getSingleton().getRenderSystem()->_getViewport();
int left, top, width, height;
vp->getActualDimensions(left, top, width, height);
const CEGUI::Rect vp_area(left, top, left + width, top + height);
dynamic_cast<CEGUI::OgreRenderTarget&>(
d_renderer->getDefaultRenderingRoot().getRenderTarget()).
setOgreViewportDimensions(vp_area);
CEGUI::System::getSingleton().renderGUI();
}
// methods for adjusting target queue settings
void setTargetRenderQueue(Ogre::uint8 queue_id)
{
d_queue_id = queue_id;
}
void setPostRenderQueue(bool post_queue)
{
d_post_queue = post_queue;
}
The root window or any window that is drawn directly onto either the root window or other full-screen window attached to the root window
Kulik wrote:I remember CE saying something about disabling the automatic rendering and calling renderGUI yourself exactly when you want. I don't know the details off the top of my head though. HTH at least a little bit
Code: Select all
myOgreRenderer->setFrameControlExecutionEnabled(false);
Code: Select all
void renderQueueStarted(Ogre::uint8 id, const Ogre::String& invocation, bool& skipThisQueue)
{
if (!d_post_queue && d_queue_id == id)
CEGUI::System::getSingleton().renderGUI();
}
void renderQueueStarted(Ogre::uint8 id, const Ogre::String& invocation, bool& skipThisQueue)
{
if (!d_post_queue && d_queue_id == id)
CEGUI::System::getSingleton().renderGUI();
}
void renderQueueStarted(Ogre::uint8 id, const Ogre::String& invocation, bool& skipThisQueue)
{
if (!d_post_queue && d_queue_id == id && invocation == "" )
CEGUI::System::getSingleton().renderGUI();
}
Users browsing this forum: No registered users and 9 guests