Frage

Ich plane, ein Java-3D-Spiel auf dem Schreiben, das sowohl auf PC und Android arbeiten. Leider sieht es aus wie es keine gemeinsame OpenGL API für beide Plattformen ist.

Haben die APIs erheblich voneinander abweichen? Gibt es eine Art, wie ich den gleichen 3D-Code in beiden Versionen verwenden könnte? Ist es eine gute Idee?

War es hilfreich?

Lösung

Android unterstützt OpenGL ES 1.0, die mit OpenGL 1.3 überlappen, so sollte dies möglich sein, aber es ist nicht so einfach, ein einfach die JAR-Dateien zur Laufzeit zu ersetzen.

Es ist eine gute Idee zu versuchen, so viel wie möglich von Ihnen Anwendung auf beiden Plattformen wiederzuverwenden. Auf jeden Fall ist es im Allgemeinen gute Praxis, den Rest Sie Code von externen Abhängigkeiten so OpenGL selbst zu isolieren, wenn Sie nicht speziell OpenGL ES Unterstützung benötigen. Man kann nie wissen, was API / Plattform, die Sie in der Zukunft zu portieren Ihre Anwendung können.

Es gibt zwei Optionen, die verfügbar sind.

Die erste ist die OpenGL-Implementierung hinter einer Schnittstelle, die den Rest Ihrer Anwendung verwendet und dann bieten getrennte Jogl und Androide-Implementierungen zu verstecken. Je nachdem, welche Plattform Sie auf Sie ausführen können dann wählen Sie die richtige Implemenation zur Laufzeit instanziiert das Werk Muster.

Als OpenGL ES und OpenGL sind sehr ähnlich der Aufwand zu halten diese nicht zu hoch sein sollte bieten Sie an die gemeinsamen Funktionen bleiben.

Die andere Option ist, um zu versuchen und verwenden Jogl2 die Unterstützung für Profile hat. Diese scheinen genau zu bieten, was Sie brauchen, aber Jogl2 ist noch in der Beta.

Die untere Seite spricht ein wenig über Profile: http://kenai.com/projects/ jogl / pages / FAQ

  

Profile erlauben Java-Anwendungen in einer Art und Weise geschrieben werden, die die Kompatibilität mit verschiedenen OpenGL-Versionen zur gleichen Zeit ermöglicht. Da OpenGL ES (GL für eingebettete Systeme) hat mit OpenGL überlappende Funktionalität selbst es die Möglichkeit eröffnet, auch Profile hinzufügen, die Brücke Desktop- und Embedded-Implementierungen.

Sie können diese http://michael-bien.com/mbien/entry/ jogl_2_opengl_profiles_explained für weitere Informationen zu Profilen.

Andere Tipps

Das Projekt ist abgeschlossen. Es stellte sich heraus, die APIs unterscheiden sich etwas, aber funktionell Es gibt einen gemeinsamen Teil. Am Ende haben wir einen einfachen Präprozessor schreiben, die JOGL Code ES Version umgewandelt und automatisiert die Konvertierung mit Eclipse.

Es ist eigentlich ziemlich viel Unterschied zwischen java3d und dem Android opengl api. Erstes java3d ist eine höhere Abstraktion 3d. Und selbst wenn Sie so etwas wie JOGL verwenden wäre, würde es einige Unterschiede in den api sein. Ihre beste Wette zu abstrakt sein würde aus der tatsächlich 3D-Zeichnung Implementierung in der Code-Basis, können Sie den Rest der Logik teilen können, aber dann spezifischen Code haben Plattform, um die OpenGL / 3D-Zeichnung zu behandeln.

Als JOGL-ES in JOGL 2.x vor einigen Jahren verschmolzen wurde, können Sie jetzt JOGL verwenden sowohl in Desktop- und mobilen Umgebungen (Android).

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top