The rendering logics should be isolated from a high-level api, so we will be able to use different APIs: the first two should be SDL2 and OpenGL.