2012-06-16 10 views
6

Estoy buscando en Linux y API gráfica, sin embargo, estoy confundido sobre cómo opengl se implementa en los sistemas operativos. ¿Se trata simplemente de un conjunto de bibliotecas que utilizan el kernel para "hablar" con su tarjeta gráfica sobre qué píxeles marcar o no? si es así, entonces no sé dónde entra la tubería: cómo las tramas 3D se rasterizan y los sombreadores afectan la geometría.¿Cómo se implementa OpenGl en un sistema operativo?

¿Y cómo pueden las GPU soportar lenguajes de sombreado tanto de DX como de OGL? ¿Y dónde se ajustan realmente los lenguajes de sombreado? ¿Se compilan o interpretan en tiempo de ejecución?

No tengo mucha experiencia con las API gráficas a pesar de utilizar varios motores de juegos, por lo general, la nitidez se pierde con varias capas de abstracción.

+1

Usted podría tener una mirada a esta serie de publicaciones en el blog que pueden ilustrarlo: http://fgiesen.wordpress.com/2011/07/01/a-trip-through-the-graphics-pipeline-2011-part-1/ – rotoglup

+2

posible duplicado de [¿Cómo funciona OpenGL en el nivel más bajo?] (Http://stackoverflow.com/questions/6399676/how-does-opengl-work-at-the-lowest-level) – datenwolf

Respuesta

0

No puedo hablar sobre cómo se implementa la API.

Pero sé por experiencia que los sombreadores están compilados. Entonces los compila y los envía a su GPU donde se ejecutan.

0

Al menos en la mayoría de las tarjetas gráficas típicas, la mayoría de las tuberías OpenGL (fijas o programables) se implementan en el hardware de gráficos en sí. Esto es aún más cierto en DirectX (es decir, DirectX no tiene bastante funcionalidad en OpenGL que no sea compatible directamente con el hardware actual).

Los sombreadores normalmente se compilan. La tarjeta gráfica tiene un procesador de propósito especial (o, a menudo, más de uno) por lo que el compilador toma la entrada en el idioma del sombreador y lo convierte en el lenguaje ensamblador para ese procesador, al igual que un compilador de C para la CPU. Apoyando a diferentes idiomas de entrada no es mucho diferente de una sola CPU que soporte el ingreso en C, C++, Pascal, Fortran, Cobol, etc.

Cuestiones relacionadas