2013-12-04 2 views
1

Ситуация такова: Существует удаленный сервер Linux (без GUI), который создает сцену OpenGL. Цель: Перенос сгенерированного изображения на клиентский компьютер Windows Я не могу понять что-то с помощью рендеринга с экрана, прочитал много литературы, но все еще не совсем понял: Использование GLUT подразумевает настройку переменной DISPLAY. Если я правильно понимаю, это означает дистанционное рендеринг через x11. Если я запускаю сервер x11 на windows (XWin server), все работает. Если я попытаюсь запустить без сервера рендеринга, то: freeglut (./WFWorkspace): не удалось открыть отображение «localhost: 11.0». В любом случае x11 не подходит.Удаленный экранный рендеринг (Linux/no GUI)

  1. Нужно ли создавать графический контекст (требуется поддержка аппаратного рендеринга)?

  2. Как создать графический контекст на сервере Linux без GLUT/x11?

  3. Объект Framebuffer - подходит ли он для моей задачи и нужен ли для этого контекст графики?

  4. Что является наиболее эффективным способом решения этой проблемы (для рендеринга требуется поддержка аппаратного обеспечения).

Не является важным вопросом, но все-таки:

  • Pixel объект буфера. Я планирую использовать его для повышения производительности чтения GPU-памяти. Это выгодно в моей задаче?
+0

Связанный: http://stackoverflow.com/questions/3191978/how-to-use-glut-opengl-to-render-to-a-file –

ответ

3

Вам необходимо изменить вашу программу, чтобы использовать OSMesa - это драйвер "null display", используемый Mesa для рендеринга программного обеспечения. Рассмотрим ответ на ближайшее дубликата вопрос в качестве стартера:

https://stackoverflow.com/a/8442800/2702398

Для полного примера, вы можете проверить примеры в самом распределении Меса, таких, как это: http://cgit.freedesktop.org/mesa/demos/tree/src/osdemos/osdemo.c

Update

Похоже, что VirtualGL (http://www.virtualgl.org) поддерживает удаленный рендеринг протокола OpenGL/GLX и обслуживает визуализированные пиксельные изображения для клиента через VNC (после чего головка VNC может быть выполнена виртуально виртуально).

+0

Но если я правильно понимаю, что нет аппаратного ускорения: ... «Автономная Mesa - это оригинальное воплощение Mesa. В системах, на которых запущена X Window System, она выполняет весь свой рендеринг через API Xlib: Поддерживается GLX API , но это на самом деле просто эмуляция реальной вещи. Протокол проводника GLX не поддерживается, и нет расширения OpenGL, загружаемого сервером X. Аппаратное ускорение отсутствует. Библиотека OpenGL, libGL.so, содержит все (API программирования, функции GLX и все рендеринг кода). "... – snk

+0

Как насчет http://www.virtualgl.org/About/Background?Кажется, он делает именно то, что вам нужно: удаленный сервер ускоренного рендеринга GLX. – oakad

+0

Спасибо за идею. Я проверю его. Основная цель для меня: производительность (как рендеринг, так и передача данных). – snk

1

Если вы хотите использовать полную спецификацию OpenGL, используйте X11 для создания контекста. Вот учебник, показывающий, как вы можете сделать это: http://arrayfire.com/remote-off-screen-rendering-with-opengl/

+0

Публичные ссылки полезны для справочной информации, но вы также должны суммировать связанный контент. Ответ должен быть полезен, если связь будет нарушена. – skrrgwasme