Я пытаюсь запустить приложение OpenGL 2.1+ через SSH.
[мой компьютер] --- ssh-подключение --- [удаленная машина] (приложение)
Я использую X-пересылку для запуска этого приложения, и с учетом этого я думаю, что есть несколько способов, с помощью которых это приложение может создавать 3D-графику:
- Используя LIBGL_ALWAYS_INDIRECT, графическое оборудование моего компьютера может быть использовано. Согласноэта почтаэто обычно ограничивается OpenGL версии 1.4.
- Использование программного рендеринга Mesa на удаленной машине. Поддерживает более высокие версии OpenGL, но использует CPU.
Однако в моем случае удаленная машина имеет приличную видеокарту. Поэтому вместо того, чтобыпрограммное обеспечениерендеринг, мне было интересно, может ли он сделатьаппаратное обеспечениевместо этого выполняется удаленный рендеринг.
Кроме того, если есть другой способ использовать видеокарту моего компьютера, это тоже было бы здорово.
решение1
Выбор не обязательно должен быть между косвенным рендерингом и программным рендерингом, а точнее между прямым и косвенным рендерингом. Прямой рендеринг будет выполняться на X-клиенте (удалённой машине), затем результаты рендеринга будут переданы на X-сервер для отображения. Косвенный рендеринг будет передавать команды GL на X-сервер, где эти команды будут визуализированы с использованием аппаратного обеспечения сервера. Поскольку вы хотите использовать 3D-оборудование на удалённой машине, вам следует выбрать прямой рендеринг (и принять накладные расходы на передачу визуализированного растрового изображения по сети).
Если ваше приложение не может работать с OpenGL 1.4, то единственным вариантом является прямой рендеринг.
решение2
Раньше я использовал удаленную настройку ssh для запуска пропатченного драйвера opengl. Но это включало некоторые хаки, такие как захват удаленного X-сервера для рендеринга (войдите на удаленную машину, войдите по ssh и установите DISPLAY на :0). В вашем случае имеет смысл отделить offscreen xserver. Я не помню, можно ли запустить xserver удаленно в offscreen режиме, но с загруженными драйверами GPU. Проект VirtualGL, похоже, обещает, что он поддерживает именно то, что вы ищете. Я никогда не пробовал, но веб-сайт выглядит многообещающим.
http://www.virtualgl.org/About/Введение
Другие альтернативы — vnc и xdmcp. Они позволяют получить доступ к полной среде удаленного рабочего стола.