I would like to make a thin client application with OpenGL display support, where the user is able to detach the view on a computer and attach to it from an other.
At first I thought about X Window System which I heard to be capable of transmitting GLX commands to the thin-client (X server.. from now on under "client" I'll mean client from the user perspective, even if for X it is the X server actually). However from former experience and also reading Wikipedia I know that de/reattaching of clients is not supported by default for X. I already use the workaround solution of using a server-side virtual client desktop and transferring it to the thin client using VNC, however here transmitting the dynamically animated OpenGL content is problematic. Then I read about VirtualGL, a tricky solution to transmit OpenGL rendered 3D to non-3D capable clients via a fine-tuned VNC.
The hacky and hard solution would be to store the whole UI state on the server side (and this is not just OpenGL content, but controls, etc.) and restore the UI state on reattaching the client application manually. This would be a custom UI state protocol eventually which I would like to avoid if possible.
Now what I am interested in are:
- Do you have experience using VirtualGL? If the network (100Mbps or GigaBps) is the bottleneck, how many thin clients could attach at once (in a worst case scenario when everyone wants to actievely view dynamic 3D content)? If the CPU is the bottleneck? If the GPU is the bottleneck?
- Do you have an experience or suggestion for any other technology? Cross-platform would be nice, and maybe Java support for the client app would also be nice, but I don't want to restrict you to these because I don't think I would have many choices here so I can't be much picky.
Thank you.