2009-10-24 28 views
9

PCとAndroidの両方で動作するJava 3Dゲームを作成する予定です。残念ながら、両方のプラットフォームで共通のOpenGL APIがないようです。JOGLとAndroid OpenGLを使用したポータブルJavaアプリケーションの作成

APIは大きく異なるのですか?両方のバージョンで同じ3Dコードを使用できる方法はありますか?いいアイデアですか?

+0

モバイルプラットフォームでのポータビリティについてはまだまだ現実的ではありません。 – whatnick

+0

Qtをお試しください。クロスプラットフォームで、Windows、Mac OSX、Linux、iOS、Android、BlackBerry、Windows RT、(すぐに)Windows Phoneで動作します。これは、すべてのプラットフォームで互換性のある最小限のOpenGL関数セットを提供しますが、各プラットフォームに固有のOpenGL関数(デスクトップ上の完全なOpenGLなど)も使用できます。 – trusktr

答えて

10

AndroidはOpenGL 1.3と重複するOpenGL ES 1.0をサポートしていますので、これは可能ですが、実行時にjarファイルを置き換えるだけでは簡単ではありません。

可能であれば、両方のプラットフォームでアプリケーションを再利用することをお勧めします。 OpenGL ESのサポートが特に必要ない場合でも、残りのコードをOpenGLなどの外部依存関係から分離することは、一般的には良い習慣です。あなたは、あなたのアプリケーションを将来移植することができるかもしれないAPI /プラットフォームを知りません。

2つのオプションがあります。

最初に、アプリケーションの残りの部分が使用するインターフェイスの背後にあるOpenGL実装を非表示にして、別のJoglおよびAndroide実装を提供します。実行中のプラットフォームに応じて、実行時にファクトリパターンを使用して正しい実装をインスタンス化することを選択できます。

OpenGL ESとOpenGLは非常によく似ているので、これを維持するために必要な努力は、共通の機能に固執しすぎてはいけません。

もう1つの方法は、プロファイルをサポートするJogl2を試してみることです。これらは、必要なものを正確に提供するように見えますが、Jogl2はまだベータ版です。

下、このページには、プロファイルについて少し語っ:http://kenai.com/projects/jogl/pages/FAQ

プロファイルは、Javaアプリケーションが同時に複数のOpenGLのバージョンとの互換性を可能にする方法で書き込むことができます。 OpenGL ES(組み込みシステム向けGL)はOpenGL自体と重複する機能を持っているため、デスクトップと組み込みの実装をつなぐ、さらにプロファイルを追加する機会が開かれました。

プロファイルの詳細については、http://michael-bien.com/mbien/entry/jogl_2_opengl_profiles_explainedをお読みください。

+0

非常にきれいに答えが研究されました。私が取り組んでいるworldwindという素晴らしいOS JOGLアプリケーションがあり、それがAndroid上で実行されるのを見るにはお金を払うでしょう。 – whatnick

1

実際には、java3dとandroid opengl apiの違いはかなりあります。最初のjava3dは、3dでのより高いレベルの抽象化です。そして、あなたがJOGLのようなものを使用していたとしても、apiにはいくつかの違いがあります。あなたの最善の策は、コードベースで実際の3D図面の実装を抽象化することです。論理の残りの部分を共有することができますが、OpenGL/3D図面を処理するためのプラットフォーム固有のコードがあります。

4

プロジェクトが終了しました。それはAPIが多少異なることが判明しましたが、機能的には共有部分があります。 JOGLコードをESバージョンに変換し、Eclipseで変換を自動化する単純なプリプロセッサを作成しました。

+2

あなたはプリプロセッサを共有しますか? – Rom1

+0

プリプロセッサを共有してください。私は同じ問題に直面しています – jmishra

+2

もしそれが助けがあれば、おそらくGCCのcppを使って得ることができます。 とにかく、私たちのプロジェクト(Netacka 3D):http://students.mimuw.edu.pl/~pm262952/netacka/ プリプロセッサ(Pythonで):http://pastebin.com/iPjDHiTR サンプルソースファイル:http://pastebin.com/vwHGcyC0 – hmp

1

JOGL-ESが数年前にJOGL 2.xにマージされたので、デスクトップ環境とモバイル環境(Android)の両方でJOGLを使用できるようになりました。

関連する問題