Sounds like you have a case of NIH... (Not Invented Here
Honestly, you'd be foolish not
to use LibGDX. Just because it's a third-party library doesn't mean you should shy away from it (Java2D and LWJGL are also third-party libraries). If you want to avoid third-party code at all costs, you should be writing your own rasterizer in C and assembly.
For example, here are three scenarios, and in all cases LibGDX is the best choice:
1. You want to make a game.
Without LibGDX, you have a lot
of boilerplate to write (game loop, texture handlers, shader compilation, tiled map loader, etc). LibGDX makes development smoother and allows you to focus on programming the game itself
2. You want to learn general graphics programming.
LibGDX gives you a high-level platform for manipulating GL, textures, shaders, and so forth without wasting time tinkering with hundreds of lines of OpenGL boilerplate. It's an easier way to learn the pipeline.
3. You want to learn OpenGL from the lowest level.
At this point some people may suggest LWJGL, but really LibGDX is just another OpenGL wrapper at its core. So you can get down to the nitty-gritty and write your own texture loaders, if you really want to reinvent the wheel. The difference is, you're working with a cross-platform solution (LibGDX ports to iOS, WebGL, Android, and Desktop) as opposed to LWJGL, a desktop-only solution. And, with LibGDX, you have the option to use its utilities (shaders, asset management, image decoders, 3D model loaders, JNI-accelerated matrix math) whenever you want.
If I still haven't convinced you... and you refuse to use LibGDX, start poking around my tutorials and code here
(which is just "straight LWJGL").