Rendering del software OpenGL puro


8

Per l'addestramento di un algoritmo di apprendimento automatico, è necessario eseguire il rendering di alcune geometrie in OpenGL senza supporto per il rendering hardware (nessuna scheda grafica). Quindi stavamo pensando di renderizzare con un software puro e abbiamo già visto Mesa. Sembra che sia in grado di eseguire il rendering in software puro, ma finora abbiamo solo OpenGL 2.x, mentre abbiamo bisogno di OpenGL 3.3.

Qualcuno sa se questo è possibile? e se sì, come? Sembra che ci imbattiamo continuamente in ostacoli.

(Background, perché vogliamo farlo: per addestrare l'algoritmo di apprendimento, dobbiamo eseguire molte esecuzioni del nostro software su un cluster di PC, che non consente il rendering in hardware.)

Eventuali suggerimenti, idee e suggerimenti saranno apprezzati.


Mesa non supporta nemmeno OpenGL 3.3 con accelerazione hardware su alcuni sistemi (come il mio laptop).
Colonnello Trentadue

Risposte:


6

Sono confuso alle tue esigenze. Stai eseguendo il codice su un PC o un sistema incorporato? Se stai eseguendo qualcosa che assomiglia a un PC da remoto, "qualsiasi supporto per il rendering hardware" non è praticamente vero. Come minimo hai alcune cose integrate Intel. Devo ancora vedere un sistema senza testa che fisicamente non aveva un chip video.

Su un sistema senza testa puoi eseguire il rendering senza una finestra, come farlo con GLX puoi vedere i dettagli in Windowless OpenGL . In ogni caso, anche l'hardware più scadente sarà più efficiente di un renderer software.

Se sei davvero in difficoltà e non hai assolutamente hardware grafico, puoi usare qualcosa come VirtualGL .

Ma se stai sintetizzando immagini nel software usando OpenGL è una specie di rovescio. OpenGL è progettato attorno alle severe restrizioni dell'hardware grafico. Il risultato è che ci sono significative restrizioni integrate che possono essere volontariamente ignorate durante il rendering nel software. Inoltre, l'algoritmo raster non è molto efficiente quando si utilizza l'hardware corrente. Un ray tracing del primo ordine può essere più efficiente e facilmente paralizza su più core. Forse puoi guardare qualcosa come PovRay .


1
Esistono alcuni chip video Intel scadenti prodotti ancora oggi, che supportano solo OpenGL 1.4 + assemblaggio di frammenti ARB + ​​assemblaggio di vertici implementato dal software ARB. Questi non saranno più efficienti del software di rendering per qualsiasi app che richiede OpenGL 3.
Ruslan

Molte grazie. Sì, è simile a un PC. Innanzitutto, un semplice PC in un cluster di PC, nel quale accediamo tramite ssh. Successivamente, saranno nodi PC in un sistema HPC. Il problema è: qualunque cosa facciamo, otteniamo sempre solo OpenGL 2.1. La nostra applicazione si basa su Qt, ma nella versione senza finestre, tutto il codice Qt è inattivo, tranne quello che crea il contesto OpenGL. E, sì, abbiamo impostato DISPLAY su: 0.0 sul computer remoto.
Gabriel,

Ma poi OpenGL 2.1 non è poi così male. L'ho usato ampiamente con risultati abbastanza buoni.
rioki,

3

Sembrerebbe che OpenGL 2.x sia pienamente supportato dal renderer software in Mesa.

Tuttavia, questa risposta suggerisce che la maggior parte delle funzionalità di OpenGL 3.x è supportata tramite estensioni. Quindi, potresti provare.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.