Como as bibliotecas GTK + e OpenGL cooperam em um único servidor X?

A interface gráfica do usuário esconde misteriosa mecânica sob sua cortina. Ele mistura contextos 2D e 3D em uma única tela e permite a composição perfeita desses dois mundos muito diferentes. Mas de que maneira e em que nível eles estão realmente intercalados?

A prática mostrou que um contexto OpenGL pode ser incorporado em uma biblioteca de widgets 2D e, portanto, toda a interface 2D pode ser suportada com OpenGL. Além disso, alguns aplicativos podem explorar a aceleração de hardware enquanto outros não (enquanto são renderizados na mesma tela). A placa gráfica "sabe" sobre áreas 2D e 3D na tela e o gerenciador de janelas cria a ilusão de um front-end coeso? ... pode-se notar janelas aceleradas (3D, vídeo) "saltando" para caber na interface 2D quando, por ex. rolando uma página da web ou movendo um player de vídeo pela tela.

A questão parece ser trivial, mas não encontrei ninguém capaz de me dar uma resposta abrangente. Uma resposta, que poderia me permitir incorporar um contexto OpenGL em um aplicativo GTK + e entender por que e como ele está funcionando. Eu tentei GtkGlExt e GLUT, mas eu gostaria de entender profundamente o tema e escrever minha própria solução como parte de um projeto acadêmico. Gostaria de saber quais são as relações entre X, GLX, GTK, OpenGL e gerenciador de janelas e como explorar essa rede de bibliotecas para programa-las conscientemente.

Não espero que alguém escreva aqui uma dissertação, mas ficarei grato por quaisquer indicações, sugestões ou links para artigos sobre esse tópico.

questionAnswers(1)

yourAnswerToTheQuestion