- GraphicsAPI is now singleton and is initialized with a GraphicsImplementation
- Lots of interfaces no longer required a GraphicsAPI pointer
- Engine initialization path is now more clear
- Minor cleanup in ionMath
- Changed a few method names
- Add features to vec3 and box3
- Remove unnecessary const
- Added some new typedefs
- Fix crash when an OBJ file has no materials (merge from 0.3.2.1)
- CSceneManager, CGUIManager, other classes moved from ion::Scene:: to ion::
- Improvements to CUniform wrapper
- arithmetic-assignment operators
- move construction and assignment operators
- Add method to GraphicsAPI to create texture from image
- Add method to get GraphicsContext from Window
- Update tinyformat version to get rid of compiler warnings on OS X clang (merge from 0.3.2.2)
A few classes moved out of the global namespace and into ion::, and a few others moved from ion::*:: to ion::
ion::Scene::CSceneManagernowion::CSceneManagerion::Graphics::IGraphicsAPInowion::CGraphicsAPICWindowManagernow in ion::CWindownow in ion::CTimeManagernow in ion::CGUIManagernow in ion::
The main change here is that IGraphicsAPI is now CGraphicsAPI, is singleton, and is no longer a parameter to a lot of methods.
The initialization path has changed a little, but has overall been modified so that it is obvious what order to initialize each engine component.
Where in 0.3.2, initialization would look like this:
WindowManager->Init();
CWindow * Window = WindowManager->CreateWindow(...);
TimeManager->Init();
IGraphicsAPI * GraphicsAPI = new COpenGLAPI();
SceneManager->Init(GraphicsAPI);
AssetManager->Init(GraphicsAPI);It now looks like this in 0.4:
GraphicsAPI->Init(new Graphics::COpenGLImplementation());
WindowManager->Init(GraphicsAPI);
TimeManager->Init(WindowManager);
SceneManager->Init(GraphicsAPI);
AssetManager->Init(GraphicsAPI);Additionally, there are a handful of places where GraphicsAPI used to be a parameter for initialization but is no longer.
Constructing a Scene::CRenderPass takes only a Graphics::IGraphicsContext:
CRenderPass * RenderPass = new CRenderPass(Context);Most other changes should be transparent to user code.