Удаленный рендеринг вне экрана (Linux / без графического интерфейса)

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

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

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

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

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

Не важная проблема, но тем не менее:

  • Пиксельный буферный объект. Я планирую использовать его для увеличения скорости чтения памяти графического процессора. Это выгодно в рамках моей задачи?

1

Решение

Вам нужно изменить свою программу для использования OSMesa — это драйвер «нулевого дисплея», используемый Mesa для рендеринга программного обеспечения. Рассмотрите этот ответ для почти повторяющегося вопроса как стартер:

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

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

Обновить

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

3

Другие решения

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

1

По вопросам рекламы [email protected]