Jump to content
  • Advertisement
ched59

OpenGL sharing a texture between multiple processes

This topic is 393 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

Hi,

I'm working on an application which has the following design:

- several rendering processes which could be seen as several independent applications; each needs to render graphics using the OpenGL API. Each process renders into a texture (as of today using a frame buffer object).
- a kind of arbiter process which owns the actual visible window and "chooses" at a given time the source of the image to actually render into that window (from the different rendering processes). The actual rendering is done inside the arbiter process by using a textured full screen quad; the texture content being selected from one of the rendering processes.

For now, I have this working by downloading, inside each rendering process, the frame buffer object into a shared memory region (shared between the rendering process and the arbiter process). The arbiter process then uploads this content as a texture into a pixel buffer object and renders the full screen quad. However I find this very inefficient performance wise.

Is there any mean to avoid that download/upload sequence and just leave the texture all the time in the GPU memory and get access to it directly from the arbiter process (although it would be created/updated by the rendering process) ? I'm open to any kind of ideas, whatever technology or design change is required (mixing OpenGL with whatever else technology and/or using something different than pixel buffer objects/frame buffer objects).

For information, I'm in control of the source code of each rendering process as well as the arbiter process so I can do whatever I want in each of those. Moreover, one process creates all the others at run time so if there is a need to play with security settings or whatever, this is possible also as all the rendering processes are children from the arbiter process. The only limitations are that I need to keep those seperate processes (and not just threads inside one process) and the rendering processes have to use the OpenGL API for rendering.
Finally, this is using C/C++, targeting Windows XP.

Thanks for your help.

Edouard Edited by ched59

Share this post


Link to post
Share on other sites
Advertisement

  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

We are the game development community.

Whether you are an indie, hobbyist, AAA developer, or just trying to learn, GameDev.net is the place for you to learn, share, and connect with the games industry. Learn more About Us or sign up!

Sign me up!