Rendu logiciel OpenGL pur

8

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.

Gabriel
la source
Mesa ne prend même pas en charge OpenGL 3.3 à accélération matérielle sur certains systèmes (comme mon ordinateur portable).
Colonel trente-deux
connexes gamedev.stackexchange.com/questions/17571/...
Ciro Santilli冠状病毒审查六四事件法轮功

Réponses:

6

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 .

rioki
la source
1
Il existe des puces vidéo Intel merdiques fabriquées même aujourd'hui, qui ne prennent en charge que OpenGL 1.4 + assemblage de fragments ARB + ​​assemblage de vertex implémenté par logiciel ARB. Ceux-ci ne seront pas plus efficaces que le logiciel de rendu pour toute application nécessitant OpenGL 3.
Ruslan
Merci beaucoup. Oui, c'est un PC. Tout d'abord, un simple PC dans un cluster PC, dans lequel nous nous connectons via ssh. Plus tard, ce seront des nœuds PC dans un système HPC. Le problème est: peu importe ce que nous faisons, nous n'obtenons toujours que OpenGL 2.1. Notre application est basée sur Qt, mais dans la version sans fenêtre, tout le code Qt est inactif, sauf celui qui crée le contexte OpenGL. Et, oui, nous avons réglé DISPLAY sur: 0.0 sur la machine distante.
Gabriel
Mais là encore, OpenGL 2.1 n'est pas trop mal. Je l'ai beaucoup utilisé avec des résultats assez bons.
rioki
3

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.

kolrabi
la source