3

質問したいのですが、私はJavaを初めて使用し、実際の3Dおよびマルチプラットフォームアプリケーションを作成したいと思います。初めから、私はそのマルチプラットフォーム性のためにJavaだけが好きでした。しかし、3Dに関しては、最初にJOGLを試しました。OK、なんとかしてOpenGLドライバーに接続しているので、マルチプラットフォームにすることはできません。しかし、なぜ3D APIの真のマルチプラットフォーム(したがってJVMのみに依存する)バージョンがないのかについても考えました。私がJava3Dを見つけたより。まず、探しているものだと思いました。しかし、私が知ったよりも、それはネイティブライブラリにも依存しています。

それで、純粋にJavaで書かれたJava用の3D APIはありますか?そしてもちろん、少なくとも少しのハードウェアアクセラレーションはありますか?JVMがネイティブコードライブラリの代わりにハードウェアアクセラレーション機能を提供できなかった理由はわかりません。ありがとう。

編集:こんにちは。さて、私はあなたの答えを読みました、加速された3Dグラフィックスのプラットフォームに依存しない方法はあり得ないことについて。しかし、なぜですか?つまり、JVMは、プラットフォームに依存しないようにする必要があるということですよね?彼らがする必要があるのは、ネイティブライブラリをJVMに直接埋め込むことだけです。たとえば、JVMがOSですべてのIOを実行する場合、そのプラットフォームに依存します。Swingが描画したい場合、JVMはネイティブコードを使用して、たとえばWinAPI、X Systemなどにアクセスする必要があります。それで、私が本当に尋ねるのは、それについて何が違うのかということです。たとえば、OpenGLバインディングをJVMに追加しますか?他のOSルーチンを呼び出すのと同じように?違いはありません。

4

5 に答える 5

1

ハードウェアアクセラレーションが必要な場合は、プラットフォームに依存します。..したがって、いくつかのネイティブライブラリ、少なくともドライバとのバインディングが必要です。

私の意見では、JOGL(低レベル)とJava3D(高レベル)の両方が適切な選択です。

編集:

各プラットフォームには独自のJVM実装があります。「Javaコード」とプラットフォームの特性(ハードウェア/ドライバー)の間のバインディングを行うのはJVMです。3Dのものは標準のJVMにパッケージ化されていません。JOGLとJava3Dはどちらも、プラットフォームのそれぞれのネイティブライブラリに自動的にバインドされるという意味で、プラットフォームに依存しません。

于 2011-03-24T12:53:46.340 に答える
1

JMonkeyEngineをお勧めします。本当に理解しやすく、たくさんの力と素晴らしいコミュニティ。

于 2011-03-24T12:47:55.380 に答える
0

JavaViewに精通していますか?しかし、私はそれがあなたが探している方向に全くないのではないかと心配しています。

于 2011-03-24T12:48:22.567 に答える
0

java3dはこれでうまくいきませんか? http://java3d.java.net/

于 2011-03-24T13:33:48.567 に答える
0

定義上、3Dグラフィックスはプラットフォームに依存するアクティビティです。プラットフォームに依存しないライブラリを作成することはできますが、ハードウェアグラフィックスアクセラレーションを利用できないため、非常に低速になります。プラットフォームハードウェアを使用する必要があり、そのハードウェアはプラットフォームによって異なります。

JOGlは、最も人気のある低レベルAPIです。Java3Dもあります。JOGLは単なるOpenGLであり、GLに慣れていない場合は習得が困難です。LWJGLは、ゲームを対象とした高レベルのAPIであり、JMonkeyEngineのようなシステムはさらに高レベルです。取得したいグラフィックの深さに基づいて、どれを使用するかを決定します。

于 2011-03-24T13:45:32.627 に答える