¿Cómo cooperan las bibliotecas GTK + y OpenGL en un único servidor X?

La interfaz gráfica de usuario esconde misteriosas mecánicas bajo su cortina. Mezcla contextos 2D y 3D en una sola pantalla y permite una composición perfecta de estos dos mundos, muy diferentes. Pero, ¿de qué manera y en qué nivel se intercalan?

La práctica ha demostrado que un contexto OpenGL se puede incrustar en una biblioteca de widgets 2D, por lo que toda la interfaz 2D se puede respaldar con OpenGL. Además, algunas aplicaciones pueden explorar la aceleración de hardware mientras que otras no (mientras se renderizan en la misma pantalla). ¿La tarjeta gráfica "sabe" acerca de las áreas 2D y 3D en la pantalla y el administrador de ventanas crea la ilusión de un extremo frontal cohesivo? ... uno puede notar que las ventanas (3D, video) aceleradas "saltan" para encajar en la interfaz 2D cuando, por ejemplo. desplazando una página web o moviendo un reproductor de video a través de la pantalla.

La pregunta parece ser trivial, pero no he encontrado a nadie capaz de darme una respuesta completa. Una respuesta, que podría permitirme incrustar un contexto OpenGL en una aplicación GTK + y comprender por qué y cómo funciona. He probado GtkGlExt y GLUT, pero me gustaría entender el tema en profundidad y escribir mi propia solución como parte de un proyecto académico. Me gustaría saber cuáles son las relaciones entre X, GLX, GTK, OpenGL y el administrador de ventanas y cómo explorar esta red de bibliotecas para programarla conscientemente.

No espero que alguien escriba aquí una disertación, pero agradeceré cualquier indicación, sugerencia o enlace a artículos sobre ese tema.

Respuestas a la pregunta(1)

Su respuesta a la pregunta