Pour former un algorithme d'apprentissage automatique, nous devons rendre une géométrie dans OpenGL sans aucun support de rendu matériel (pas de carte graphique). Nous pensions donc au rendu en logiciel pur, et nous avons déjà regardé Mesa. Il semble qu'il soit capable de rendre dans un logiciel pur, mais jusqu'à présent, nous n'obtenons que OpenGL 2.x, alors que nous avons besoin d'OpenGL 3.3.
Est-ce que quelqu'un sait si c'est possible? et si oui, comment? Il semble que nous rencontrions tout le temps des obstacles.
(Contexte, pourquoi nous voulons faire cela: pour former l'algorithme d'apprentissage, nous devons effectuer beaucoup d'exécutions de notre logiciel sur un cluster PC, qui ne permettent pas le rendu dans le matériel.)
Tous les conseils, idées et pointeurs seront appréciés.
la source
Réponses:
Je suis confus à vos besoins. Exécutez-vous le code sur un PC ou un système embarqué? Si vous utilisez quelque chose qui ressemble à distance à un PC, "tout support de rendu matériel" n'est tout simplement pas vrai. Au minimum, vous avez des trucs intégrés Intel. Je n'ai pas encore vu un système sans tête qui n'avait physiquement pas de puce vidéo.
Sur un système sans tête, vous pouvez rendre sans fenêtre, comment faire avec GLX, vous pouvez voir les détails dans Windowless OpenGL . Dans tous les cas, même le matériel le plus merdique sera plus efficace qu'un moteur de rendu logiciel.
Si vous êtes vraiment pressé et que vous n'avez absolument aucun matériel graphique, vous pouvez utiliser quelque chose comme VirtualGL .
Mais si vous synthétisez des images dans un logiciel à l'aide d'OpenGL, c'est en quelque sorte à l'envers. OpenGL est conçu autour des restrictions sévères du matériel graphique. Le résultat est qu'il existe des restrictions de construction importantes qui peuvent être volontairement ignorées lors du rendu dans le logiciel. De plus, l'algorithme raster n'est pas très efficace lors de l'utilisation du matériel actuel. Un lancer de rayons de premier ordre peut être plus efficace et paralyser facilement plusieurs cœurs. Vous pouvez peut-être examiner quelque chose comme PovRay .
la source
Il semblerait que seul OpenGL 2.x soit entièrement pris en charge par le logiciel de rendu de Mesa.
Cependant, cette réponse suggère que la plupart des fonctionnalités d'OpenGL 3.x sont prises en charge via des extensions. Donc, vous voudrez peut-être essayer.
la source