OpenGL compression and transmission in real time


I would like to perform the compression and transmission in real-time of OpenGL content (meshes, or others) from one machine to another. The receiver machine could be running OpenGL or Unity. The content may be required to be modified at the receiver side, and not just displayed. I am running Linux at the sender machine and the receiver machine may run Linux or Windows.

What would be a good way to do this, particularly regarding the transmission from OpenGL, and the choice and integration with a compression method?

The compression, transmission and display speed would be one of the key requirements (at a not too big loss in quality) and no special limitations on the hardware.

Thanks for the help!

It sounds like ideally you’d like some on-the-fly compression that would allow you to compute on one machine and display the results via OpenGL remotely. Is this correct?

What kind of GPUs/GL drivers are installed on each end of one of these connections?

To save asking lots of specific questions about your problem and the solution requirements, perhaps it would be faster to just ask you what about tunneling X/GLX through a compressed SSH connection from the server to the Linux/X display client would not adequately solve your problem (particularly if they’re running NVidia GPUs/drivers) – websearch “ssh x11 forwarding” for details if you don’t know about this? If you haven’t tried this, you might just give it a shot since it’s free/easy to try.

Or perhaps a VNC-like solution which transmits compressed screen grabs? Also free/easy to try.

Thanks and sorry for being late with my reply!

I realized that I missed to give some detail to my question which was quite important. The receiver machine can be a desktop but it can also be a head-mounted display where I would have to do the rendering according to a specific pose. In this case, I do not think the ssh tunnel solution would work right?

I just realized that given that I may use any tethered or untethered head-mounted display, Unity may be more suitable to be running at the receiver. In this case, perhaps it would be good to run Unity at the sender as well, and just use a bridge between OpenGL and Unity to pass the OpenGL objects and textures into Unity? Tried looking for a bridge but could only find a bridge for textures (e.g. syphon for OSX). Would anyone be aware of a bridge that would allow to pass all OpenGL content to Unity?