Schreiben Sie eine portable Java-Anwendung mit JOGL-und Android-OpenGL
Plane ich auf das schreiben einer Java-3D-Spiel, das funktioniert sowohl auf PC und Android. Leider sieht es so aus, dass es keine gemeinsame OpenGL-API für beide Plattformen.
Tun die APIs unterscheiden sich signifikant? Gibt es eine Möglichkeit, die ich verwenden könnte, die gleichen 3D-code in beiden Versionen? Ist es eine gute Idee ist?
- Schöne Frage - Portabilität auf mobile Plattformen ist noch nicht Realität.
- Versuchen Sie es mit Qt. Es ist cross-Plattform und arbeitet in Windows -, Mac-OSX, Linux, iOS, Android, BlackBerry, Windows RT und (bald) Windows Phone. Es stellt den minimalen Satz von OpenGL-Funktionen kompatibel, die auf allen Plattformen, aber Sie können OpenGL-Funktionen spezifisch für jede Plattform (z.B. volle OpenGL auf dem Desktop).
Du musst angemeldet sein, um einen Kommentar abzugeben.
Android unterstützt OpenGL ES 1.0, die überschneidungen mit OpenGL 1.3, so sollte dies möglich sein, aber es ist nicht so einfach nur den Austausch der jar-Dateien zur Laufzeit.
Ist es eine gute Idee, um zu versuchen, um die Wiederverwendung von so viel wie möglich von Sie Anwendung auf beiden Plattformen.
Trotzdem ist es generell eine gute Praxis, um zu isolieren Sie den rest von dem code aus externen Abhängigkeiten wie OpenGL auch wenn Sie nicht speziell OpenGL ES-Unterstützung. Man weiß nie, was API/Plattform können Sie portieren möchten, Ihre Anwendung in der Zukunft.
Gibt es 2 Optionen, die verfügbar sind.
Dem ersten verstecken sich die OpenGL-Implementierung hinter einer Schnittstelle, die den rest der Anwendung verwendet und bieten dann separate Jogl-und Androide-Implementierungen. Je nachdem, auf welcher Plattform Sie laufen, Sie können dann wählen Sie instantiieren die richtige Implementierung zur Laufzeit mit der Fabrik-Muster.
Als OpenGL ES und OpenGL sehr ähnlich sind und der erforderliche Aufwand zur Erhaltung dieser sollte nicht zu hoch sein bietet bleiben Sie bei den Allgemeinen Funktionen.
Die andere option ist, um zu versuchen und verwenden Sie Jogl2 die Unterstützung für profile. Diese erscheinen an genau, was Sie brauchen, aber Jogl2 ist noch in der beta.
Unten auf dieser Seite erzählt ein wenig über die profile: http://kenai.com/projects/jogl/pages/FAQ
Möchten Sie vielleicht, um diese zu Lesen http://michael-bien.com/mbien/entry/jogl_2_opengl_profiles_explained für mehr Informationen über profile.
Das Projekt abgeschlossen ist. Es stellte sich heraus, die APIs unterscheiden sich etwas, aber funktional gibt es einen gemeinsamen Teil. Landeten wir schreiben einen einfachen Präprozessor umgewandelt JOGL-code zu ES-version, und automatisiert die Konvertierung mit Eclipse.
Es ist eigentlich ganz ein bisschen der Unterschied zwischen java3d und die android-opengl-api. Erste java3d ist eine höhere Ebene der Abstraktion auf 3d. Und selbst wenn Sie waren, um so etwas wie JOGL gibt es einige Unterschiede in der api. Ihre beste Wette wäre, zu abstrahieren, aus der eigentlich 3d-Zeichnung die Umsetzung in den code-Basis, Sie teilen konnte, der rest der Logik, aber dann haben die Plattform-spezifischen code für die Verarbeitung von opengl/3d-Zeichnung.
Als JOGL-ES war verschmolzen in JOGL 2.x vor einigen Jahren, jetzt können Sie die JOGL sowohl in desktop-und mobilen Umgebungen (Android).