I think we'll end up doing a bunch of dynamic_cast<>ing to more-specific interfaces in the implementations, but that's a pretty sensible way of doing better-than-default features in the presence of wildly different underlying implementations.
I don't think we'll need a create_streams() in mg::RenderingPlatform(); I think we'll need a redesign of it. That's orthogonal to splitting out RenderingPlatform(), though.
This seems like a sensible start.
I think we'll end up doing a bunch of dynamic_cast<>ing to more-specific interfaces in the implementations, but that's a pretty sensible way of doing better-than-default features in the presence of wildly different underlying implementations.
I don't think we'll need a create_streams() in mg::RenderingPl atform( ); I think we'll need a redesign of it. That's orthogonal to splitting out RenderingPlatfo rm(), though.