Wie arbeiten GTK + und OpenGL-Bibliotheken auf einem einzelnen X-Server zusammen?

Die grafische Benutzeroberfläche verbirgt geheimnisvolle Mechanik unter seinem Vorhang. Es mischt 2D- und 3D-Kontexte auf einem einzigen Bildschirm und ermöglicht die nahtlose Komposition dieser beiden sehr unterschiedlichen Welten. Aber auf welche Weise und auf welcher Ebene sind sie tatsächlich verschachtelt?

Die Praxis hat gezeigt, dass ein OpenGL-Kontext in eine 2D-Widget-Bibliothek eingebettet werden kann, sodass die gesamte 2D-Oberfläche mit OpenGL gesichert werden kann. Einige Anwendungen untersuchen möglicherweise auch die Hardwarebeschleunigung, während andere dies nicht tun (während sie auf demselben Bildschirm gerendert werden). Weiß die Grafikkarte über 2D- und 3D-Bereiche auf dem Bildschirm Bescheid und der Fenstermanager erzeugt die Illusion eines zusammenhängenden Frontends? ... kann man bemerken, dass beschleunigte Fenster (3D, Video) "hüpfen", um in die 2D-Schnittstelle zu passen, wenn z.B. Scrollen einer Webseite oder Bewegen eines Videoplayers über den Bildschirm.

Die Frage scheint trivial zu sein, aber ich habe niemanden getroffen, der mir eine umfassende Antwort geben kann. Eine Antwort, die es mir ermöglichen könnte, einen OpenGL-Kontext in eine GTK + -Anwendung einzubetten und zu verstehen, warum und wie es funktioniert. Ich habe GtkGlExt und GLUT ausprobiert, möchte das Thema jedoch gründlich verstehen und meine eigene Lösung als Teil eines akademischen Projekts schreiben. Ich würde gerne wissen, in welchen Beziehungen X, GLX, GTK, OpenGL und Window Manager zueinander stehen und wie man dieses Bibliotheksnetzwerk erforscht, um es bewusst zu programmieren.

Ich erwarte nicht, dass hier jemand eine Dissertation schreibt, bin aber für Hinweise, Vorschläge oder Links zu Artikeln zu diesem Thema dankbar.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage