Direct3D to OpenGL abstraction layer