For the project I'm working on, we need to add numerous, and somewhat complex overlay controls onto the scene of Insight3D (http://insight3d.agi.com/), the 3D engine for AGI Components. To describe this engine in a few words, it is used in aerospace/map applications, and is specialized in drawing stuff in space, on and around Earth (like Google Earth for example but aerospace-centered).
So, I'm considering using CEGUI for this task, since it has the huge advantage to offer a lot of features out of the box, fulfilling all our needs.
DIsclaimer : I am new to CEGUI and not very familiar with graphics programming, so if I write something horribly wrong, please don't blame me too much

As I understood it, the approach for this is to write your own Renderer to integrate CEGUI with the underlying engine (here, Insight3D). So I looked at the classes to implement, and I'm not sure it's doable, because Insight3D has a high-level .NET API and exposes very little of its internals. Indeed, it is aimed at rapidly developing aerospace apps, and it is not nearly as flexible as something like Ogre for example.
However, it still allows the user to hook a handler before any scene is rendered, and supports screen overlays. Using the TextureScreenOverlay class, you can overlay any texture, since it is flexible on the texture format. You can also do screen overlay "picking" (i.e. user interaction).
Is that sufficient? Because when I looked at implementation of the Ogre renderer, it seemed way more complex than that, but maybe is it because the Ogre engine itself is more complex? I'm especially concerned about the "low-level" services a renderer must provide like the ones in GeometryBuffer. Basically, what I need to do is to render CEGUI "scene" into a bitmap image in memory, and pass it to Insight3D. Is there some "easy" way to get this done?
If not, I imagined using an existing CEGUI renderer (Direct3D for example), customized for my need, which is getting the contents of what should be displayed in the rendering window. Since it certainly cannot be done from the same process as Insight3D (sharing the graphics card without knowing it will most certainly make both engines fail...), I would then make the rendering in a separate process and pass the rendering window contents via shared memory. But is it even possible to use for example Direct3D to render something in a hidden window? Or to get the contents of a D3D viewport as raw "bitmap" data? I'm starting to feel pretty clueless here ...

Thanks in advance for any help you can provide!

Flo