Чистый рендеринг программного обеспечения OpenGL

8

Для обучения алгоритму машинного обучения нам нужно визуализировать некоторую геометрию в OpenGL без какой-либо аппаратной поддержки рендеринга (без графической карты). Итак, мы думали о рендеринге в чистом программном обеспечении и уже рассматривали Mesa. Кажется, что он способен выполнять рендеринг в чистом программном обеспечении, но пока мы получаем только OpenGL 2.x, тогда как нам нужен OpenGL 3.3.

Кто-нибудь знает, возможно ли это? и если да, то как? Кажется, мы все время сталкиваемся с камнем преткновения.

(Исходная информация, почему мы хотим это сделать: для обучения алгоритму обучения нам нужно выполнить много запусков нашего программного обеспечения на кластере ПК, которые не позволяют выполнять рендеринг на аппаратном уровне.)

Любые намеки, идеи и указатели будут оценены.

Габриель
источник
Mesa даже не поддерживает OpenGL 3.3 с аппаратным ускорением на некоторых системах (например, на моем ноутбуке).
полковник тридцать два
связанные gamedev.stackexchange.com/questions/17571/…
Сиро Сантилли 冠状 病毒 审查 六四 事件 法轮功

Ответы:

6

Я запутался в твоих требованиях. Вы запускаете код на ПК или во встроенной системе? Если вы работаете на чем-то, что удаленно выглядит как ПК, «любая поддержка аппаратного рендеринга» в принципе просто не соответствует действительности. Как минимум, у вас есть кое-что интегрированное в Intel. Мне еще предстоит увидеть безголовую систему, в которой физически не было видеочипа.

В безголовой системе вы можете выполнить рендеринг без окна, как это сделать с GLX, вы можете увидеть детали в Windowless OpenGL . В любом случае, даже самое дрянное оборудование будет более эффективным, чем программный рендер.

Если вы действительно в затруднении и абсолютно не имеете графического оборудования, вы можете использовать что-то вроде VirtualGL .

Но если вы синтезируете изображения в программном обеспечении, используя OpenGL, это своего рода обратная сторона. OpenGL разработан с учетом жестких ограничений графического оборудования. Результатом является то, что существуют значительные ограничения на сборку, которые можно преднамеренно игнорировать при рендеринге в программном обеспечении. Кроме того, растровый алгоритм не очень эффективен при использовании современного оборудования. Трассировка лучей первого порядка может быть более эффективной и легко парализовать несколько ядер. Может быть, вы можете посмотреть что-то вроде PovRay .

rioki
источник
1
Уже сегодня выпускаются некоторые дрянные видеочипы Intel, которые поддерживают только OpenGL 1.4 + сборка фрагментов ARB + ​​программно-реализованная сборка вершин ARB. Они не будут более эффективными, чем программный рендер, для любого приложения, требующего OpenGL 3.
Руслан
Большое спасибо. Да, это как ПК. Во-первых, простой ПК в кластере ПК, в который мы входим через ssh. Позже это будут узлы ПК в системе HPC. Проблема в том, что независимо от того, что мы делаем, мы всегда получаем только OpenGL 2.1. Наше приложение основано на Qt, но в безоконной версии весь код Qt неактивен, кроме того, которое создает контекст OpenGL. И да, мы установили DISPLAY на: 0.0 на удаленной машине.
Габриэль
Но опять же OpenGL 2.1 не так уж и плох. Я использовал это широко с довольно хорошими результатами.
Риоки
3

Казалось бы, только OpenGL 2.x полностью поддерживается программным средством рендеринга в Mesa.

Однако этот ответ предполагает, что большая часть функциональности OpenGL 3.x поддерживается через расширения. Итак, вы можете попробовать.

kolrabi
источник