@poweruserm
You seem to seek to compose some sort of incomplete game engine or just "a library engine" of some sort because you mentioned libraries for graphics, audio, networking, UI, math etc..
I'm working on something similar myself but my approach is different in that I focus on single platform (Windows x64) and use as much 3rd party libraries as possible in order to write as few code as possible.
You already have a breakdown of libraries that you want, and what you're missing next is real library names that will must at a minimum accomplish 2 things:
1. be able to glue together, that is work nicely with each other
2. choose libraries that are well maintained and widely used
With enough dedication of your work and time, this is not hard to do, but you make it much harder by saying you want C++ only libraries and cross platform.
If you want high quality end product that you work on you'll have to use libraries written in not only in C++ but also C and assembly, and please focus on single platform unless you work in a team to save your self time. (why? because there are many good libraries written in not a C++)
A few concrete examples of libraries to glue regarding your requested setup:
Widgets, layout, and event support with 2D Graphics drawing and siplay support of major image file formats |
1.
imgui
2.
freeimage
An advanced 3D Graphical User Interface library, that includes Special Effects and other useful advanced options. |
There is no such thing as 3D GUI, you probably mean "rendering engine", ex:
1.
ogre-next
An Arbitrary or High Precision Mathematics library |
1.
eigen
You most likely know nothing about these libraries, therefore suggested to
make your own build system, preferably with VS because it will allow you to navigate code in an easy manner for learning how to use them.
You can use cmake to generate VS projects for almost any source tree, then simply unify your projects to use same directory tree and build flags.
Once you have the base setup in place your job is to
write glue code, that is high level API that makes use of your base libraries (dependencies).
Your glue code can be only C++, meaning your end product can be well designed and easy to use and learn.
This means, a glue code is simply a wrapper around mixture of 3rd party libraries.