I initiate Ogre on single window with 2 viewports. I want to have 2 GUIContext (1 for each viewport).
Viewports split window in two parts by height (horizontal split). Is this possible?
This what I have done so far, but I cant get any CEGUI window shown on second viewport.
Here is the code:
Code: Select all
CODE:
CEGUI::OgreRenderer* mRenderer1 = &CEGUI::OgreRenderer::create();
mRenderer1->setDefaultRootRenderTarget(*mWindow);
CEGUI::Rectf rect = mRenderer1->getDefaultRenderTarget().getArea();
float width = rect.d_max.d_x; float height = rect.d_max.d_y;
mRenderer1->getDefaultRenderTarget().setArea(CEGUI::Rectf(0, 0, width, height/2.0));
CEGUI::System::create(*mRenderer1);
CEGUI::GUIContext* guiContext1 = new CEGUI::GUIContext( mRenderer1->getDefaultRenderTarget() );
CEGUI::Window* myRoot1 = CEGUI::WindowManager::getSingleton().createWindow("DefaultWindow", "myRoot1");
guiContext1->setRootWindow( myRoot1);
CEGUI::OgreRenderer* mRenderer2 = &CEGUI::OgreRenderer::create();
mRenderer2->setDefaultRootRenderTarget(*mWindow);
mRenderer2->getDefaultRenderTarget().setArea(CEGUI::Rectf(0, height/2.0, width, height));
CEGUI::GUIContext* guiContext1 guiContext2 = new CEGUI::GUIContext( mRenderer2->getDefaultRenderTarget() );
CEGUI::Window* myRoot2 = CEGUI::WindowManager::getSingleton().createWindow("DefaultWindow", "myRoot2");
guiContext2->setRootWindow( myRoot2);
Now follows some standar initializaion and later in frameRenderingQueued:
Code: Select all
CODE:
CEGUI::System::getSingleton().injectTimePulse(evt.timeSinceLastFrame);
CEGUI::System::getSingleton().renderAllGUIContexts();
guiContext1->injectTimePulse(evt.timeSinceLastFrame);
guiContext2->injectTimePulse(evt.timeSinceLastFrame);
mRenderer1->beginRendering();
guiContext1->draw();
mRenderer1->endRendering();
mRenderer2->beginRendering();
guiContext2->draw();
mRenderer2->endRendering();
I added single CEGUI window to each rooot window of each guicontext but only first one is showing.
Any help?