Um einen Algorithmus für maschinelles Lernen zu trainieren, müssen wir einige Geometrien in OpenGL ohne Unterstützung für Hardware-Rendering rendern (keine Grafikkarte). Wir haben also überlegt, in reiner Software zu rendern, und wir haben uns Mesa bereits angesehen. Es scheint, dass es in der Lage ist, in reiner Software zu rendern, aber bisher erhalten wir nur OpenGL 2.x, während wir OpenGL 3.3 benötigen.
Weiß jemand, ob das möglich ist? und wenn ja, wie? Wir scheinen die ganze Zeit auf Stolpersteine zu stoßen.
(Hintergrund, warum wir das tun wollen: Um den Lernalgorithmus zu trainieren, müssen wir viele Läufe unserer Software auf einem PC-Cluster ausführen, die kein Rendern in Hardware ermöglichen.)
Alle Hinweise, Ideen und Hinweise werden geschätzt.
quelle
Antworten:
Ich bin verwirrt über Ihre Anforderungen. Führen Sie den Code auf einem PC oder einem eingebetteten System aus? Wenn Sie auf etwas laufen, das aus der Ferne wie ein PC aussieht, ist die "Unterstützung für Hardware-Rendering" im Grunde einfach nicht wahr. Zumindest haben Sie einige Intel integrierte Sachen. Ich habe noch kein kopfloses System gesehen, das physisch keinen Videochip hatte.
Auf einem Headless-System können Sie ohne Fenster rendern. Wie dies mit GLX gemacht wird, sehen Sie Details in Windowless OpenGL . In jedem Fall ist selbst die beschissenste Hardware effizienter als ein Software-Renderer.
Wenn Sie wirklich in Not sind und absolut keine grafische Hardware haben, können Sie so etwas wie VirtualGL verwenden .
Aber wenn Sie Bilder in Software mit OpenGL synthetisieren, ist das irgendwie rückwärts. OpenGL wurde unter Berücksichtigung der strengen Einschränkungen der Grafikhardware entwickelt. Das Ergebnis ist, dass es erhebliche Einschränkungen gibt, die beim Rendern in Software absichtlich ignoriert werden können. Darüber hinaus ist der Raster-Algorithmus bei Verwendung der aktuellen Hardware nicht sehr effizient. Ein Raytracing erster Ordnung kann effizienter sein und über mehrere Kerne hinweg leicht lähmen. Vielleicht können Sie sich so etwas wie PovRay ansehen .
quelle
Es scheint, dass nur OpenGL 2.x vom Software-Renderer in Mesa vollständig unterstützt wird.
Diese Antwort legt jedoch nahe, dass die meisten Funktionen von OpenGL 3.x über Erweiterungen unterstützt werden. Vielleicht möchten Sie es versuchen.
quelle