I think there is something to be gained from starting from first principles and implementing your own basic 3D engine with at least back face removal, basic texture mapping and say phong shading - including implementing your own scanline algorithms etc. You don’t need to take it any further (because you’ll spend the rest of your life doing it) but being able to have a couple of simple meshes spinning, drawn in solid, mapped and shaded without calling OpenGL, DirectX etc pays real dividends as you progress in your career. It’s a little like knowing enough assembly language when you’re faced with a crash and no PDBs (symbols), or the crash is down in OleAut32 and you don’t have the symbol server installed, you are able to cope.
There are zillions of books of the nature of “So You Want To Implement Your Own Game Engine” that don’t use DirectX or OpenGL. Spend some time in a book store with a coffee and find one you like and then, and work through it - don’t just build the code that comes on the CD.
I don’t know what level your C++ is but writing your own basic 3D engine is also a great excuse to practice your OO principles. I’d strongly suggest you use STL to implement any collections you need rather than going with whatever simple home grown “linked list” or whatever the book might suggest.
I guess this might sound scary but you can actually have this up and running within 3 to 4 months (less if you can put more hours in), and like I say, it’ll equip you for working with and debugging other peoples engines in the future.