JOGL vs. LWJGL for Java -- an experience

Started by
-1 comments, last by HScottH 10 years, 2 months ago

Greetings,

I am building a game in Java (long story on language choice, as I prefer C++), and having recently used JOGL for another project, decided to use that for my OpenGL access library. I'm about three months into this project.

I learned JOGL about a year ago and found a lot of chatter on the net about it vs. LWJGL. Last night, I finished a piece of optimization, and quite out of the blue decided to port it to LWJGL just to see how easy it would be and if some of the [very old] claims I heard were true, that LWJGL is faster.

A quick conclusion for those of you who can't wait: I am now using LWJGL for my game.

A longer one...

The port was far simpler than I had thought. Get rid of a bunch of window set-up junk, get rid of GL object instaces, replace a few float array's with FloatBuffers, and it worked. Sorta. My single gripe is with SlickUtil; it's TextureLoader automatically resizes non-power-of-two textures to make them power of two. "Magic" features like this make for bad libraries; they should add another load method called "loadScaledToPOT" or something, but I digress.

What's rendered in my game

Blocks. Yep, it's YABS -- Yet Another Blocky Sandbox.

How much stuff am I rendering

Around 4 million block faces at a time, meshed as 2 million triangles. My screen res is 1920x1200.

And, the performance?

These numbers are for use with JOGL and are in FPS.

Radeon 5450: 20 (I have GOT to figure out why this is so slow. Can this card really be THIS cruddy?)

Radeon 4550: 55

Radeon 3870: 130

Radeon 5870: 265

nVidia GTX 590: 410

What about using LWJGL?

They are identical.

So?
So, there we have it. Now this doesn't mean that one or the other API isn't a tiny bit faster, it only means that the FPS bottleneck in my game is not related to library-specific Java-isms.

Note that I am making roughtly 8,000 GL calls per frame (glUnivorm... glBindBuffer... glVertexAttribPointer...).

So if the performance isn't better, why did you switch to LWJGL?

Because I forgot to back-up my code before porting it.

Just kidding :-)

The API is better. Display creation, input management, and getting rid of the annoying GL interface instances; combined, these represent a substantial simplification of my development. Also, the libraries are smaller--I know, this doesn't matter these days, but I'm old enough to still think smaller is better.

That's it. If you have any input, please share--the term "JOGL vs. LWGL" gets googled a lot :-)

This topic is closed to new replies.

Advertisement