Skip to content

Instantly share code, notes, and snippets.

@iondune
Last active April 1, 2016 05:11
Show Gist options
  • Select an option

  • Save iondune/b5bf2b4baba1f93703352ded671aa1cd to your computer and use it in GitHub Desktop.

Select an option

Save iondune/b5bf2b4baba1f93703352ded671aa1cd to your computer and use it in GitHub Desktop.

Version 0.4

New since 0.3.2

  • 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)

Upgrade Guide

Namespace Changes

A few classes moved out of the global namespace and into ion::, and a few others moved from ion::*:: to ion::

  • ion::Scene::CSceneManager now ion::CSceneManager
  • ion::Graphics::IGraphicsAPI now ion::CGraphicsAPI
  • CWindowManager now in ion::
  • CWindow now in ion::
  • CTimeManager now in ion::
  • CGUIManager now in ion::

New Initialization Path, GraphicsAPI is Singleton

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment