Hi you all! I’m currently unsure what to do. My goal: I want to write a 3d engine. However, I am not sure which low-level API to base it on. AFAIK I have three options:
-
Base it on Java3D. This sounded very good to me at the beginning because it is portable and the API allows a lot of optimization in the background. However, I did not read any “performance success stories” yet (only about success in development time), and the API is not exactly what I need (maybe it works with some tricks though).
-
Base it on an OpenGL-for-Java binding (LWJGL, GL4Java, etc.). This leads to problems as well: When it comes to transferring all the data of a really complex 3d object down to OpenGL, the repeated JNI calls seem to be a performance problem (can anyone clear this issue?) But an OpenGL binding seems to be “almost good”
-
Write an own Java/native binding which uses OpenGL at the native side but offers a higher-level interface to the Java code. This would allow to create an API which is designed specially for Java (unlike OpenGL) and also does a lot of caching on the native side.
As you probably see, I favor the third option. Note that I understand the difference in Java3D vs. OpenGL as “scene graph vs. immediate-mode access”. I would write the scene graph / management part completely in Java then (the native part would work at a lower level then scene graphs).
It also seemed to me that OpenMind is similar to what I want to do, but like Java3D its API is not what I had in mind.
My question is, does this sound like a reasonable approach?
Thanks in advance.