JOGL or LWJGL?

I need some help in deciding which API to use for advanced OpenGL rendering in Java.

My choices has boiled down to either JOGL or LWJGL, and the following are important for my choice, in prioritized order:

  1. Compatibility. I noticed LWJGL fails to even initialize the screen on some systems, how about JOGL. Which one is more stable?
  2. Performance. I want the API with the smallest amount of overhead between Java and native OpenGL. Any Benchmark tests?
  3. Features. My application will support advanced rendering techniques like HDR rendering and Perspective Shadow Mapping. I also need support for shaders through Open Gl Shading Language, or similar.

I only need to support the Windows platform.

Any advice would be greatly appreciated… :slight_smile:

  1. LWJGL/JOGL. -You have to ask why does LWJGL fail on some systems? Both JOGL and LWJGL are GL bindings and nothing more. LWJGL has some extras but those extras don’t involve graphics.
  2. LWJGL/JOGL. LWJGL forces you to use native buffers while JOGL does not, you have an option with JOGL.
  3. LWJGL/JOGL. OGL 2.0 is supported by both bindings.

Both APIs are remarkably similar in most ways. It all boils down to your coding style and which you prefer. LWJGL is slightly more lightweight and comes with sound and input support as well and a bunch of features to make getting stuff up and running easier.

LWJGL also has the accolade of actually being the first to market with professional-class products :smiley: Haven’t yet seen a commercial JOGL game.

Cas :slight_smile:

although Wurm Online looks very promising :smiley:

Promising it might be, but commercial grade, it is not. Wurm is still in the 20 part of the 80/20 rule for commercial release…

Cas :slight_smile:

It’s safe to say that the sample size renders the comparison non statistically significant :wink:

Well I dont know about commercial games which you can buy off shelves but I’m working on a company which developes commercial applications which uses JOGL. I’ve been using JOGL for about 1.5 years and I’m very satisfied with that. All extensions can be used nicely and what comes to performance it wouldnt be any faster with native code (C, C++). Lots of optimizing can be done in modelling phase and optimizing shaders for example. Personally I dont understand people having doubts about java or jogl and wether it is possible to make commercial games with this combination. I guess that most of the current game developers have too much experience in c/c++ and quite a large set of existing tools and libraries that there is no sense to switch to java. Hmm went a bit offtopic. (Not advertising but some screenshots can be found from companys webpage www.redlynx.com, if anyone should be interested :).

It ain’t safe to say it’s insignificant at all! There are to my knowledge 5 commercial games released now using LWJGL which means that all the little niggles and problems have been thoroughly ironed out. It’s passed shakedown. When the first one that uses JOGL goes on sale… that’s when JOGL shakedown begins. It’ll have its fair share of hassles.

Cas :slight_smile:

Funny, I was just browsing your website and opened TV at the same time which was showing this quiz phone game, and I spotted the RedLynx logo there. Is that nice space scene JOGL-powered by chance? ;D

[quote]Is that nice space scene JOGL-powered by chance?
[/quote]
Yes, we use JOGL as rendering API in the 3D-engine currently :).

JOGL is by far your best bet, as it’s used for the basis for the upcoming official opengl java extension.

Ha. Like thats any measure of quality. ::slight_smile:

even if JOGL would become the “official opengl java extension”, that doesn’t mean that others will throw their hands up in the air forget about other APIs…

IIRC, Java3D was SUN’s “official scenegraph”…look where that went ::slight_smile: and look how many other scenegraphs there are now…

Both are good choices so don’t spend too much time choosing one of them ;

  • your choice will not be bad one,
  • you will allways have the choice to swap to the other system with minimal overhead,
  • and you can allways make an abstraction layer between these 2 if you really matter to have, and keep, the choice between these 2.

Just go to the real thing of building your application.

       Vincent