The great thing about the rendering engine library I am using (OGRE), it abstracts away a lot of the complexity behind actually loading the mesh from disk and preparing it so that it can be rendered in the next render call to the target window. My job basically is to call a createEntity() method on my scene manager with reference to the mesh, the mesh is loaded and then all I must do is initialize any additional options on the scene entity object that I wish and then attach it to a scene node which requires the transform's orientation, position, and scale. I can also use OGRE's material manager to load textures (mesh) and then apply those textures as a plane or call createLight() to create lighting or using draw commands to project 2D text for name plates and billboards, etc.
From a separation of concerns perspective, it seems bad to have a high-level render component that knows how to do ALL these things, but maybe that is how it is done in commercial software. The concept of a "sort key" is very new and one which I haven't even seen introduced before in any articles or design documents about this particular architecture. Typically, I see that functionality should be broken down into simple components and subsystems, which would follow one for meshes, another for lights, one for name plates, etc. But they each of these require the ability to invoke things on the render engine.
My first thought was that all these various subsystems (mesh/lights/name plates) would be provided an IRenderer interface during their construction and during the update() call to those subsysetms, they could use this IRenderer interface to invoke drawing methods. Another solution to be totally decoupled without an interface would be to take the interface API and create events from those calls and simply have these various subsystems dispatch events to create lights, meshes, or to fade a light or destroy a light source, etc.
Ideally I would prefer to keep from having OGRE referenced in so many component and system files because I believe it should be encapsulated so should I change engines down the road, I could with minimal efforts. But maybe I am either suffering from over-engineering or over-generalizing too, idk.