Das Beispielprogramm zeigt verschiedene geometrische Körper. Es erlaubt dem Betrachter die Drehung der Szene, die Änderung von Licht- und Materialfarben, Texturen und Nebel.
Das Programm steht in zwei Versionen zur Verfügung, die sich in ihrer Funktion für den Betrachter nicht unterscheiden. Der Unterschied betrifft die Art der Bilderzeugung:
Offscreen-Rendering: Das Bild wird in der GPU erzeugt und mit der Funktion
glReadPixels in den Arbeitsspeicher des Programms übernommen, aufbereitet und angezeigt.
(Dieses Verfahren ist beim Raspberry Pi das einzig mögliche.)
Archivdatei mit diesem Beispielprogramm:
Cpp-Gtk3-GLES11-Demo001RP.tar.gz.
OnScreen-Rendering: Das in der GPU erzeugte Bild wird mit der Funktion
eglSwapBuffers direkt auf den Bildschirm gebracht.
Archivdatei mit diesem Beispielprogramm:
Cpp-Gtk3-GLES11-Demo001.tar.gz.
Das Hauptfenster des Beispielprogramms zeigt drei Schieberegler und einen Anzeigebereich für die erzeugte Grafik:
Mit den Schiebereglern kann die dargestellte Szene um den Ursprung des Koordinatensystems gedreht werden.
Beide Programme sind in C++ geschrieben und verwenden Gtk-3 und GLM. Die benötigten Pakete sind:
libgtkmm-3.0-dev
Das Paket stellt die Bibliotheken und Headerdateien zur Verfügung, die benötigt werden, um Gtk-3 mit C++ zu verwenden.
libglm-dev
Das Paket stellt die Headerdateien zur Verfügung, die für die Einbindung der Bibliothek glm in eigene Programme benötigt werden.
libegl1-mesa-dev
Dieses Paket wurde in früheren Versionen von TinkerOS benötigt, um die Headerdateien für OpenGL ES 1.1 bereitzustellen. In TinkerOS 2.0.9 sollte dieses Paket nicht installiert werden; die für OpenGL ES 1.1 erforderlichen Headerdateien sind im Verzeichnis /usr/include/GLES vorhanden.
Die Installation der benötigten Pakete geschieht mit dem Befehl
sudo apt-get install libgtkmm-3.0-dev libglm-devlibegl1-mesa-dev
Wenn Gtk-3 ohne GNOME verwendet wird - was in TinkerOS meist der Fall sein wird - tritt eine irritierende Warnung auf, wenn ein Programm gestartet wird, das Gtk-3 verwendet. Ursache der Warnung ist der Versuch, eine Verbindung zu nicht installierten Infrastrukturkomponenten von GNOME herzustellen. Zur Vermeidung dieses Fehlers ist in der Datei /etc/environment der folgende Eintrag vorzunehmen:
export NO_AT_BRIDGE=1
Die genannte Datei ist ursprünglich leer. Um sie zu bearbeiten, benötigst du die Rechte des Systemverwalters. Ein mögliches Vorgehen ist:
cd /etc sudo leafpad environment
Im Editor leafpad kannst du die Datei nun bearbeiten und anschließend speichern.
Die Eintragung wird mit dem nächsten Neustart des Betriebssystems wirksam.
Nach der Installation aller erforderlichen Pakete geschieht die Compilierung im Hauptverzeichnis des Projekts wie folgt:
make
Das compilierte Programm wird im Hauptverzeichnis des Projekts abgelegt und mit dem Befehl
./demo
gestartet.
Das Programm kann nicht unverändert auf dem Raspberry Pi compiliert werden, weil der Raspberry für die Verwendung der GPU Bibliotheken benötigt, die auf dem Tinker Board nicht zur Verfügung stehen. Für den Rasperry steht ein Beispielprogramm mit gleichem Funktionsumfang hier zur Verfügung.
mono-complete
Der Zugriff auf die Treiber für EGL und für OpenGL ES 1.1 geschieht mit der Interoperabilitätsschnittstelle von C#.
Direktes Zeichnen in ein Fenster ist mit Gtk-2 möglich. Für Gtk-3 stellen die Beispiele dieses Tutorials im Augenblick nur Rendering in den Speicher der GPU und anschließende &Uuuml;bernahme des Bildes in den Bildspeicher von Gtk zur Verfügung.