HW vs. SW over the network

Here’s my dilema - I have a piece of OpenGL software that gets compiled on various machines. It dynamically links to the GL library on the machine that it is running on. Sometimes, however, it is running on a machine that has HW acceleration, but is XHosted to another machine. Some HW drivers, no problem. Some, no application! This is a Bad Thing ™. How can I deal with this problem so that when the user is sitting at the machine they get HW, but when running over the network, they get SW?

Solution ideas:

  1. 2 executables and a frontend that somehow magically detects that they are running over the network and runs the correct executable.
  2. Some real magic with function pointers and LDD paths, etc.

Any ideas, suggestions, or advice?


I do not know much about this stuff but I think that it should work the way you do it. The system should take care of the details but I think that this is less used and has lower priority so I am not surprised by the bugs.

It is possible to select indirect rendering in the call to glXCreateContext.
You can use dlopen to load a dynamic library. I think that some games like UT is doing this so optional libraries like OpenAL can be used if it is installed.

Here is a presentation that may help http://toolbox.sgi.com/linux/documents/OpenGL/GLXprotocol.pdf.gz


You might consider to redirect your OpenGL calls to the local machine (hardware accelerated machine), grab the image and send the image accross the network.

I’m working on a library which does exactly that - something similar to SGI’s OpenGL VizServer. You can even make this transparent to the application…

– Niels

This topic was automatically closed 183 days after the last reply. New replies are no longer allowed.