2012-06-16 8 views
6

Sto esaminando le API grafiche e linux, tuttavia sono confuso su come opengl sia implementato nei sistemi operativi. E 'solo un insieme di librerie che usano il kernel per "parlare" con la tua scheda grafica di quali pixel colorare o meno? se è così allora non so dove arriva la pipeline - come le scene 3D sono rasterizzate e gli shader influenzano la geometria.In che modo OpenGl è implementato in un sistema operativo?

E come mai le GPU possono supportare i linguaggi shader da DX e OGL? - e dove si adattano effettivamente i linguaggi shader? - sono compilati o interpretati in fase di runtime?

Non ho molta esperienza con le API grafiche, nonostante l'utilizzo di diversi motori di gioco, di solito il nitty grintoso è molto lontano con diversi livelli di astrazione.

+1

Si potrebbe avere un'occhiata a questa serie di post di blog che potrebbero illuminarti: http://fgiesen.wordpress.com/2011/07/01/a-trip-through-the-graphics-pipeline-2011-part-1/ – rotoglup

+2

possibile duplicato di [Come funziona OpenGL al livello più basso?] (Http://stackoverflow.com/questions/6399676/how-does-opengl-work-at-the-lowest-level) – datenwolf

risposta

0

Non riesco a parlare di come viene implementata l'API.

Ma so per esperienza che gli shader sono compilati. Quindi li compili e li mandi alla tua GPU dove vengono eseguiti.

0

Almeno sulla maggior parte delle schede grafiche tipiche, la maggior parte della pipeline OpenGL (fissa o programmabile) è implementata nell'hardware grafico stesso. Ciò è ancora più vero per DirectX (ad esempio, in DirectGL mancano alcune funzionalità in OpenGL che non sono direttamente supportate dall'hardware corrente).

Gli shader sono normalmente compilati. La scheda grafica ha un processore per scopi speciali (o, spesso, più di uno) quindi il compilatore prende l'input nel linguaggio shader e lo trasforma nel linguaggio assembly per quel processore, proprio come fa un compilatore C per la CPU. Sostenere diverse lingue di input non è un bel po 'diverso da una singola CPU di supporto di input in C, C++, Pascal, Fortran, Cobol, ecc

Problemi correlati