RenderEngine::CreateContext() uses an X server on linux to create a context for opengl rendering. This adds extra work when running gzserver in the cloud or in a docker container
- Requires an X server running for rendering, even on headless machines
- When using Docker, have to mount a volume with a socket to an X server and start a container with a script that passes XAUTH data into the container.
It looks like EGL can be used instead. Here is another project discussing it a year ago. Here is an example that uses OpenGL without an X server. Here is an introduction to EGL. Here is an nvidia blog about using OpenGL without an X server.