I answered this in another related thread:
LWJGL is bare-bones. It's just a wrapper around OpenGL rendering and a window or fullscreen display. If you want to develop a game, you will need to pretty much write all the things that LibGDX has already implemented for you. A very short list, to give you a broader idea of the challenge involved in "pure LWJGL/OpenGL" gamedev:
- Vector math (LibGDX uses JNI)
- Image and sound decoding
- Sprite batching, shader utilities, and vertex utilities
- 2D GUI toolkit (this in itself is a huge undertaking)
- Asset management and dependencies (also very complex)
- Font rendering/parsing
- 3D scenegraph and shader management (LibGDX's 3D api handles this)
- Camera, texture, input, and various other utilities
On top of all that, LibGDX implements this for far more platforms than LWJGL, allowing you to port it easily if needed.
So, I would recommend to stick with LibGDX. Whether you want to use pure GL calls
, or make use of LibGDX's utilities like ShaderProgram and Mesh
, or even take a higher-level approach and use the new 3D API and shader managers
, any choice would be more suitable than pure LWJGL.