Well, abstractions - at different levels - that's what they are ! And between the Engine and the basic API - DX or OGL - you could have the scenegraph API as another abstraction. And this scenegraph API, for example, could either talk to DX or OGL without you, as an application/engine...