Off-Screen Rendering in Fedora

Part of a project I’m working on is to experiment with off-screen rendering in Fedora, using Panda to work with the results. If possible, I’d like to be able to render application windows off-screen, and texture them onto polygons in Panda. I’ve got a pretty beefy computer to try this on, and it’s more an experiment in capability than efficiency at this time.

I really don’t know anything about off-screen rendering as it stands, so this thread is pretty much a query into where I can start learning about it and what methods of accomplishing it exist that might enable the capability with Panda which I described. Any other forums, tutorials, or prior work that relates to this would be extremely appreciated.

I understand also that is probably not possible to do entirely from Panda, but it wouldn’t conflict with my project ideals at all to use an intermediary program or script to handle the off-screen rendering and have Panda use the rendering results for texturing. Any and all thoughts on a project of this nature are greatly appreciated.


There’s a render-to-texture tutorial included in the full Panda download. That should be plenty to get you started.

I’ve looked at this and I know it will be useful, however I’m more concerned with off-screen rendering of application windows in linux systems. While it is likely a task that will occur outside panda and might require the installation of extensions to the X Window system, I was hoping some member of this forum might be able to point me in the right direction for learning about this subject.

You mean you want to run a normal 2-D X application and present its window in a 3-D space, like some of the fancy window managers do? I’m pretty sure you’d need to write this as a window manager.

In any case, you won’t be using the 3-D engine to do “off-screen rendering” in the normal sense, unless you’re running a 3-D application. The typical application renders 2-D, using basic 2-D graphics primitives, that have nothing to do with the 3-D capabilities of your graphics card.

There might be some low-level X calls that will let you create windows that render entirely into an PixBuf or something like that. It’s all beyond me, and has very little to do with Panda; you’re probably better off asking at an X forum. When you get to the point that you have a bitmap that might get updated several times a second, then come back here and we’ll help you put that bitmap on a texture in your 3-D scene. :slight_smile:


Okay, so if I understand you correctly you want to capture, say, a live image of a web browser to a texture and render it in 3D? Something like what the Compiz/Beryl 3D desktops are doing?

You might want to look at the xscreensaver source code. Several of the xscreensaver modules manipulate captured desktop images, so the code there is probably a very portable way to take screen captures.

If you want live updates where the textures copy a window or the desktop in real time, then things might be trickier.

This was just the impression I was getting, that this would probably require a whole separate project just to turn pixmap renders into 2-D textures that can be loaded to Panda. Thanks for the help, and if this gets any further along I’ll surely let you guys know, since using Panda for prototyping 3D desktop GUI concepts would certainly open up a wide variety of interesting projects :astonished: