Welche Version von OpenGL für Android?

7

Ich habe versucht, OpenGL ES 2.0 zu lernen, um ein einfaches 2D-Spiel zu erstellen. Ich habe ein Buch über Android-Entwicklung gekauft, aber nachdem ich festgestellt habe, dass der Autor sein eigenes SDK verwendet, das OpenGL ES 1.0 implementiert, habe ich mich entschieden, nur Online-Tutorials zu verwenden. Ich war so verloren, herauszufinden, was ich verwenden soll. Die Matrizen und Shader von 2.0 verwirren mich und ich kann kein Tutorial finden, das nur erklärt, wie man ein einfaches 2D-Bild texturiert. Grundsätzlich:

  • OpenGL ES 1.x oder 2.0 für einfaches 2D mit wenig OpenGL-Erfahrung
  • Wenn 2.0 Irgendwelche guten Tutorials für 2.0, habe ich so viele für 1.0 gefunden
Akadouri
quelle
5
Wenn Sie das mathematische Konzept der Matrizen verwirrt, müssen Sie Hintergrundwissen zu diesem Thema sammeln. Dies ist kein optionales Lernen für die Grafikprogrammierung, da Sie überall Matrizen verwenden werden . Wenn es nur die Art und Weise ist, wie OpenGL mit ihnen umgeht, die Sie verwirrt ... müssen Sie noch lernen, wie Sie mit ihnen umgehen.
Doppelgreener
Haben Sie Vorschläge, wo ich diese Fähigkeiten lerne? Ich verstehe das mathematische Konzept von Matrizen, nur nicht, was OpenGL mit ihnen macht oder wie man sie über Java in Android implementiert.
Akadouri
1
Nachdem ich OpenGL ES 2.0 nicht selbst gelernt habe, kann ich Ihnen keine spezifischen Ratschläge geben, aber ich kann Ihnen allgemeine Ratschläge geben. Ich habe den Eindruck, dass Sie nur lernen möchten, wie man etwas texturiert, ohne den Aufwand und die Mühe eines Tutorials. Wenn ich recht habe: sei nicht so. Machen Sie ein Tutorial und lassen Sie sich vom Tutorial führen . Sie werden auf dem Weg viel lernen und froh sein, dass Sie es getan haben. Im Moment studiere ich das Erlernen moderner 3D-Grafikprogrammierung, die schließlich das Texturieren lehrt. Es lehrt Grafikprogrammierung (und lehrt OpenGL als Mittel und nicht als Zweck).
Doppelgreener
1
Es gibt nicht "ein paar einfache Zeilen", da man verstehen muss, wie OpenGL die Dinge macht, und wahrscheinlich ist das Lernen, ein Bild zu zeigen, so trivial, dass jedes Tutorial, das diese Dinge erklärt, auch sagt, wie es geht. In Bezug auf die zweite Frage hier oder SO: Unsere FAQ behandelt dies im allerersten Abschnitt. Fragen Sie sich: "Würde mir ein professioneller Spieleentwickler eine bessere / andere / spezifischere Antwort auf diese Frage geben als andere Programmierer?" Wenn ja, fragen Sie hier, wenn nicht, könnte es besser auf SO platziert sein.
Doppelgreener
2
Eine Android-Implementierung von Breakout, die speziell als Beispiel für die Verwendung von OpenGL ES 2.0 für ein 2D-Spiel entwickelt wurde: code.google.com/p/android-breakout
fadden

Antworten:

5

Ich würde eher sagen: Klären Sie zuerst Ihre Konzepte mit OpenGL ES 1.x und entscheiden Sie sich dann für OpenGL ES 2.0, da erstere Ihre Basis stark machen und Sie möglicherweise keine Probleme haben, letztere zu erlernen.

Insgesamt glaube ich, dass Sie die Wahl haben. Wenn Sie jedoch ein E-Book für OpenGL ES benötigen, können Sie mich danach fragen. Ich werde den Link hier einfügen.

Siddharth-Verma
quelle
Ich würde ein eBook für OpenGL ES sehr schätzen, würde auch empfehlen, OpenGL in Java oder Android NDK in C / C ++ zu codieren?
Akadouri
1
@akadouri Ich habe beide Bücher, OpenGL ES für Android und OpenGL ES 2.0 in C / C ++. :) Ich suche nur nach den darin enthaltenen Konzepten und codiere gemäß meinen Anforderungen. Soll ich den Link einfügen?
Siddharth-Verma
Wenn Sie dürfen, bin ich mir der Regeln dieser Site nicht sicher.
Akadouri
3
@akadouri Hier sind die Links. dl.dropbox.com/u/99054577/… und dl.dropbox.com/u/99054577/… Ich hoffe, diese sind für Sie nützlich.
Siddharth-Verma
1
@akadouri bestätigen Sie mich, nachdem Sie die Bücher heruntergeladen haben :)
Siddharth-Verma
4

OpenGL ES 2 ist die beste Wahl für Android, wenn Sie keine Rückkompatibilität suchen.

Schauen Sie sich dieses Tutorial an: https://code.google.com/p/gdc2011-android-opengl/ Es ist gut erklärt.

Marco Martinelli
quelle
2

ES 2.0 hat eine steilere Lernkurve und Sie brauchen sie nicht wirklich, um loszulegen oder viele nützliche Dinge über OpenGL-Programmierung zu lernen. Selbst mit ES 2.0 werden Sie wahrscheinlich eine feste Funktionsbibliothek erstellen, ähnlich wie ES 1.x zum Zeichnen von Grafikprimitiven.

Also würde ich sagen, bleib vorerst bei OpenGL ES 1.x und wenn du das beherrschst, kannst du später ES 2.0 und Shader ausprobieren. Die meisten Spiele benötigen nur ein paar grundlegende Shader, es sei denn, Sie machen etwas Besonderes. Hier ist ein gutes Tutorial für 2.0 Shader in Android. http://blog.shayanjaved.com/2011/03/13/shaders-android/

Es gibt auch Motoren, die die gesamte OpenGL-Arbeit für Sie erledigen. Wenn Sie Java mögen, dann vielleicht libGDX (http://libgdx.badlogicgames.com/) und wenn Sie C ++ mögen, dann vielleicht cocos2d-x (http://www.cocos2d-x.org/projects/cocos2d-x/wiki)

Milchplus
quelle
2

OpenGL ES 2.0 ist nicht komplexer als ES 1.0 Wir haben auf ES 2.0 umgestellt und unterstützen ES 1.0 in echten Apps nicht. ES 2.0 wird auf iPhone 3GS und neueren Versionen unterstützt. Es ist jetzt der meiste iOS-Markt. Unter Android ist die Situation ähnlich, aber es gibt viel mehr Geräte auf dem Markt.

Ich empfehle, ES 2.0 zu lernen und zu verwenden, da Sie ES 2.0 kennen müssen. Sie sollten ES 2.0 oder beide kennen. Personen, die ES 1.0 kennen, müssen 2.0 lernen

Für ES 2.0 ist ein Shader erforderlich, Sie können den Shader jedoch in 5 Codezeilen hinzufügen

Wenn ES 1.0-Code mit ES 2.0 kompatibel war, können Sie ihn zuerst lernen. Aber es ist anders. Sie verschwenden Zeit damit, ES 1.0 zu lernen und später zu ES 2.0 zu wechseln.

Es ist Zeit für ES 2.0, besonders wenn Sie etwas lernen.

Max
quelle
Haben Sie Vorschläge, wo Sie ES 2.0 lernen können? Ich kann keine Tutorials zum grundlegenden Textur-Mapping finden. Sollte ich auch C / C ++ über das NDK oder natives Java verwenden?
Akadouri
1

Wenn Sie nur 2D-Inhalte haben, ist OpenGL ES 1 in Ordnung. Wenn Sie jedoch 3D-Inhalte haben möchten, ist OpenGL ES 2 geeignet.

Alex
quelle