Для обучения алгоритму машинного обучения нам нужно визуализировать некоторую геометрию в OpenGL без какой-либо аппаратной поддержки рендеринга (без графической карты). Итак, мы думали о рендеринге в чистом программном обеспечении и уже рассматривали Mesa. Кажется, что он способен выполнять рендеринг в чистом программном обеспечении, но пока мы получаем только OpenGL 2.x, тогда как нам нужен OpenGL 3.3.
Кто-нибудь знает, возможно ли это? и если да, то как? Кажется, мы все время сталкиваемся с камнем преткновения.
(Исходная информация, почему мы хотим это сделать: для обучения алгоритму обучения нам нужно выполнить много запусков нашего программного обеспечения на кластере ПК, которые не позволяют выполнять рендеринг на аппаратном уровне.)
Любые намеки, идеи и указатели будут оценены.
источник
Ответы:
Я запутался в твоих требованиях. Вы запускаете код на ПК или во встроенной системе? Если вы работаете на чем-то, что удаленно выглядит как ПК, «любая поддержка аппаратного рендеринга» в принципе просто не соответствует действительности. Как минимум, у вас есть кое-что интегрированное в Intel. Мне еще предстоит увидеть безголовую систему, в которой физически не было видеочипа.
В безголовой системе вы можете выполнить рендеринг без окна, как это сделать с GLX, вы можете увидеть детали в Windowless OpenGL . В любом случае, даже самое дрянное оборудование будет более эффективным, чем программный рендер.
Если вы действительно в затруднении и абсолютно не имеете графического оборудования, вы можете использовать что-то вроде VirtualGL .
Но если вы синтезируете изображения в программном обеспечении, используя OpenGL, это своего рода обратная сторона. OpenGL разработан с учетом жестких ограничений графического оборудования. Результатом является то, что существуют значительные ограничения на сборку, которые можно преднамеренно игнорировать при рендеринге в программном обеспечении. Кроме того, растровый алгоритм не очень эффективен при использовании современного оборудования. Трассировка лучей первого порядка может быть более эффективной и легко парализовать несколько ядер. Может быть, вы можете посмотреть что-то вроде PovRay .
источник
Казалось бы, только OpenGL 2.x полностью поддерживается программным средством рендеринга в Mesa.
Однако этот ответ предполагает, что большая часть функциональности OpenGL 3.x поддерживается через расширения. Итак, вы можете попробовать.
источник