Meine Werkzeuge
Namensräume
Varianten

OpenGL ES Jumpstart/Das erste Dreieck

Aus indiedev
Wechseln zu: Navigation, Suche
Hinweis Dieser Artikel wird gerade geschrieben bzw. bearbeitet und erfüllt noch nicht die Qualitätsstandards von indiedev.
Bitte bearbeite diesen Artikel nur, wenn du kleine Fehler korrigieren möchtest oder der Autor bist.
OpenGL ES Jumpstart
Das erste Dreieck
Autor Roland "Glatzemann" Rosenkranz
Programmier­sprache Java
Kategorie Android
Diskussion Thread im Forum
Lizenz indiedev article license


Vorwort

Im zweiten Teil dieser Tutorial-Reihe möchte ich mit euch gemeinsam ein erstes Dreieck auf den Bildschirm zaubern. Dazu werden wir einen Vertex Buffer erzeugen in dem sich die Eckpunkte eines Dreiecks befinden. Wir werden außerdem einen Fragment Shader und einen Vertex Shader in der jeweils einfachsten Form erzeugen. Außerdem möchte ich noch auf ein paar kleine Verbesserungen gegenüber dem vorherigen Tutorial eingehen: Vollbild und OpenGL ES Version. Am Ende dieses Tutorials werdet ihr in der Lage sein einfache, untransformierte Primitive darzustellen. Dieses Wissen bildet dann die Grundlage für weitere Schritte, die sowohl für 2D-Grafik, als auch für 3D-Grafik unentbehrlich sein wird.

Das Inhaltsverzeichnis

Ich werde in diesem Artikel eine Art Inhaltsverzeichnis pflegen, die auf die Folgeartikel verweisen wird. Dieses Inhaltsverzeichnis ermöglicht die schnelle und einfache Navigation zwischen den Artikeln und man kann leicht einzelne Themengebiete wiederfinden und auch Dinge, die man bereits beherrscht überspringen.

Projekt einrichten

Zunächst richtet ihr euch ein Projekt ein, wie ich es im Tutorial Projektanlage und erste Schritte beschrieben habe. Die einzelnen Klassen tragen den gleichen Namen. Das Projekt benennen wir jedoch - um Konflikte zu vermeiden - mit einer neuen Nummer: OpenGLES_Tutorial_02. Das Stammpackage trägt den Namen de.indiedev.opengles_tutorial_02.

Die erste Änderung die wir an unserem Projekt durchführen ist der Vollbildmodus. Dieser führt dazu, daß unser Spiel den gesamten Bildschirm ohne Benachrichtigungsleiste etc. verwenden kann und wir so den maximalen Platz haben. Dies ist eine sehr einfache Änderung, wir müssen dazu lediglich zwei Codezeilen in der GLESActivity einfügen. Diese müssen vor der Erzeugung des Views eingefügt werden, da es sonst zu Fehlern kommt.


requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);

Der Befehl requestWindowFeature in der ersten Zeile schaltet die Titelzeile ab. Es gibt eine Reihe Optionen die ihr damit setzen könnt. Beschrieben sind diese hier. Alle verwendbaren Konstanten beginnen mit FEATURE_.

Mit dem zweiten Befehl werden die Window-Flags gesetzt. In unserem Programm erzwingen wir den Vollbildmodus (die Status-Bar wird also nicht angezeigt). Welche Optionen verwendbar sind ist hier beschrieben. Die verwendbaren Konstanten beginnen mit FLAG_.

Die nächste kleine Änderung müssen wir in View.java durchführen. Dort fügen wir - bevor wir den Renderer erzeugen und setzen - die folgende Zeile ein


setEGLContextClientVersion(2);

Dieser Befehl führt dazu, daß ein GLViewContext in der Versin 2 erzeugt wird. Dieser verwendet Shader. Würden wir diesen Befehl nicht verwenden, so würde es im weiteren Verlauf zu erheblichen Fehlern kommen, da dann bestimmte Features nicht verfügbar sind.

Eine letzte kleine Änderung fügen wir im AndroidManifest.xml durch. Im Activity-Tag fügen wir den neuen Parameter


android:screenOrientation="landscape"

ein. Dies führt dazu, daß der Bildschirm die korrekte Ausrichtung hat.

Navigation
Tutorials und Artikel
Community Project
Werkzeuge