Удаленный рендеринг вне экрана (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. Что является наиболее эффективным способом решения этой проблемы (рендеринг требует аппаратной поддержки).

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

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

2 ответа

Решение

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

/questions/1484811/raspechatat-teksturu-opengl-v-fajl-bez-displeya/1484820#1484820

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

Обновить

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

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

Другие вопросы по тегам