As part of my games programming course that I am studying, we developed a proto-type 3D graphics engine in C++ using OpenGL. The excercise involved setting up all of the 3D rendering manually so that obj models and fbx models could be loaded in, setting up shaders, programming lighting with mathematical equations, experimenting with GUI features to make it customizable, and I even added in CPU particle effects. If you wish to learn C++, having a go at OpenGL and setting up your own 3D graphics rendering can be a very good exercise. My C++ skills increased dramatically, and in the video above you can see the results.
If you are curious about more user friendly approaches to displaying graphics in C++, SFML is said to be a great, object oriented approach, and I intend to look at that for future projects. Some people swear by SDL, although I have heard that it is more procedural and less object oriented. Having said all that, you could also try using the Unreal Engine which handles the graphics side for you and focus on your game code.
I may do further work on this graphics engine in the future, but for now it was a fun experience.
If you enjoyed reading, try my game Puzzledorf.