When I first ported my code over to use JOGL 2 I experimented with the Newt window API but found that it wasn’t very stable and had poor event behavior on my Mac. Because of this (and some things below), I just used the AWT GLCanvas still. However, now I’m trying out the new version and I would really like to be able to use Newt.
When re-learning its API, here are some things that could use improvement:
- I have no idea how to change the screen resolution for a fullscreen window. Setting the window size and then fullscreen does not use the window size as the desired resolution. This is a feature that’s very important for me.
- Having to specify -XstartOnFirstThread is pretty lame but I understand why it might be necessary
- Even lamer however is having to use a different main class entry point.
- The documentation for the native window and newt libraries are non-existent. I think the API suffers from too much abstraction (when it comes to AbstractX + DefaultX + ImplX for such things as graphics configurations and devices and factories), but also exposes too many low-level handles in an inconsistent manner (sometimes strings and sometimes integers). It’s also not clear who is responsible for locking the surfaces, etc. (#4 is more general and something that I can learn to live with)
With the 2 and 3, I have to document in my engine that anyone which wants to use the JOGL engine implementation has to do special java command line stuff to get it to run without locking up.