RenderTargets - CEGUI's latest development

Discussion regarding the development of CEGUI itself - as opposed to questions about CEGUI usage that should be in the help forums.

Moderators: CEGUI MVP, CEGUI Team

User avatar
CrazyEddie
CEGUI Project Lead
Posts: 6760
Joined: Wed Jan 12, 2005 12:06
Location: England
Contact:

Postby CrazyEddie » Sat Mar 21, 2009 16:54

To update here, which may be the last update in this thread, due to the code now being in trunk ;)

The first wave of additional changes to structure have been done, I say 'first wave' because I can't rule out others ;)

The new Xcode project for the Mac has been committed also. As I think I mentioned elsewhere, these require a recompiled set of dependencies due to reorganisation of where we locate things within the bundles by default. I have a set of these (obviously :roll:), though these use the older versions of the dependency libs. I'm not sure whether to upload those or wait and upload a version using the later versions of the dependency libs when I can get around to making those work - it's not all plain sailing creating these things, you know ;).

I hope to get the "Porting to 0.7.x" page started on the Wiki tomorrow at some stage. I have most of the changes that originated from the renderer rewrite in a text file already, I just have to add the trunk structural changes previously made, and the new stuff I've done this past week, then I'll put that up - obviously that's not a final version or anything, since there are lots more big changes coming to a svn trunk near you :D

I also need to update the supporting docs that are in trunk since they're also out of date.

CE.

Pompei2
Home away from home
Home away from home
Posts: 489
Joined: Tue May 23, 2006 16:31

Postby Pompei2 » Sun Mar 22, 2009 12:20

CrazyEddie wrote:The cost of rendering large amounts of text can be lessened by caching the text to a texture (so you only render two triangles instead of thousands).


Do I understand you correctly that this is already in the new renderer target stuff?

That would be awesome, as I abuse the "lots of texts" :) And I think a lot of others do so, in their game's chatroom.

Anyways grats on the fast advances you made!

User avatar
CrazyEddie
CEGUI Project Lead
Posts: 6760
Joined: Wed Jan 12, 2005 12:06
Location: England
Contact:

Postby CrazyEddie » Sun Mar 22, 2009 16:01

Pompei2 wrote:
CrazyEddie wrote:The cost of rendering large amounts of text can be lessened by caching the text to a texture (so you only render two triangles instead of thousands).


Do I understand you correctly that this is already in the new renderer target stuff?

Yes, this is functional. You're able to selectively specify which windows will use texture backing by way of the "AutoRenderingSurface" property (amongst other methods). In the current svn we have this enabled by default only on FrameWindow by way of the looknfeel definitions.

I think one of the new challenges when using this system will be tuning / balancing which windows should and which should not use the texture backing - there is no one size fits all solution here because it's entirely dependent upon usage scenarios. For example, a page of truly static text will definitely gain from being cached to texture, whereas a text that is (for some unknown reason) updated every single frame, would not gain - since we're drawing it every frame anyway, it might as well be directly to the root surface. This in turn has to be factored into the possibility of having multiple levels of texture caching, which again can be good in some scenarios but not in others. Another additional factor is then whether you're using rotation or other effects, since that generally needs the use of texture backed windows (though there are scenarios where this need not be the case; for example, the rotating CEGUI logo in the demos is not a window at all and uses no texture backing, it is drawn by a subscriber to a render queue drawing event).

Take for example the FirstWindow demo, this is potentially slower when using texture caching, since it's so simple to draw normally; the extra overhead of the RTT usage and setup costs more than just drawing the thing. Whereas things like Demo7 are definitely much, much faster when using caching due to the much more complex nature of the layout.

Pompei2 wrote:Anyways grats on the fast advances you made!

Thanks :) It should be good once 0.7 is released a little later on - especially to see what people start doing with some of the new facilities.

CE.

Fdot
Just popping in
Just popping in
Posts: 8
Joined: Wed Sep 22, 2010 10:24

Re: RenderTargets - CEGUI's latest development

Postby Fdot » Fri Oct 15, 2010 13:41

Hey,

I get an Segfault when using the CEGUI.

What happens?
I start the game, wait 1-2 seconds and it crashes.

I use Ogre 1.7.1 and CEGUI 0.7.2

valgrind says:
==2605== Process terminating with default action of signal 11 (SIGSEGV)
==2605== Access not within mapped region at address 0x24C8
==2605== at 0xF85DB89: ??? (in /usr/X11R6/lib64/libGL.so.256.53)
==2605== by 0xF025A6A: Ogre::GLFBOManager::bind(Ogre::RenderTarget*) (OgreGLFBORenderTexture.cpp:431)
==2605== by 0xF041D2D: Ogre::GLRenderSystem::_setRenderTarget(Ogre::RenderTarget*) (OgreGLRenderSystem.cpp:3464)
==2605== by 0xF03CC01: Ogre::GLRenderSystem::_setViewport(Ogre::Viewport*) (OgreGLRenderSystem.cpp:1887)
==2605== by 0x9233BD6: CEGUI::OgreTextureTarget::clear() (CEGUIOgreTextureTarget.cpp:73)
==2605== by 0x839D97E: CEGUI::RenderingWindow::invalidate() (CEGUIRenderingWindow.cpp:223)
==2605== by 0x83C7494: CEGUI::Window::invalidate_impl(bool) (CEGUIWindow.cpp:1176)
==2605== by 0x83C853C: CEGUI::Window::invalidate(bool) (CEGUIWindow.cpp:1168)
==2605== by 0x83C868F: CEGUI::Window::onActivated(CEGUI::ActivationEventArgs&) (CEGUIWindow.cpp:2745)
==2605== by 0x8407D48: CEGUI::FrameWindow::onActivated(CEGUI::ActivationEventArgs&) (CEGUIFrameWindow.cpp:711)
==2605== by 0x83CE4DD: CEGUI::Window::moveToFront_impl(bool) (CEGUIWindow.cpp:1000)
==2605== by 0x83CE49A: CEGUI::Window::moveToFront_impl(bool) (CEGUIWindow.cpp:987)


I found the following thread:
viewtopic.php?f=10&t=4347&p=20200&hilit=CEGUI%3A%3AOgreTextureTarget%3A%3Aclear#p20200
So I editet the Clear() function (in 0.7.2 it seems to be an old version?). After that I compiled CEGUI new and now I got following error:

Texture: _cegui_ogre_0: Loading 1 faces(PF_A8B8G8R8,256x256x1) with 0 generated mipmaps from Image. Internal format is PF_A8R8G8B8,256x256x1.
Speicherzugriffsfehler


How can I fix that?

Ah btw my code:

Code: Select all

        CEGUI::OgreRenderer::bootstrapSystem();

        InjectInput::GetSingleton();
        CEGUI::SchemeManager::getSingleton().create( "TaharezLook.scheme" );
        CEGUI::FontManager::getSingleton().create( "DejaVuSans-10.font" );


        CEGUI::System::getSingleton().setDefaultFont( "DejaVuSans-10" );

        CEGUI::System::getSingleton().setDefaultMouseCursor( "TaharezLook", "MouseArrow" );

        CEGUI::Window* myRoot = CEGUI::WindowManager::getSingleton().loadWindowLayout( "TextDemo.layout" );
        CEGUI::System::getSingleton().setGUISheet( myRoot );


Just the first few steps. In InjectInput I just inject the input ;)

Edit: And the CEGUI.log : http://pastebin.com/Kzt6cqNF


Return to “CEGUI Library Development Discussion”

Who is online

Users browsing this forum: No registered users and 1 guest