However, I have some question regarding to which extent you would do this:
I'd use OpenTK as a C# OpenGL binding but on their website they state that calling OpenGL functions in C# is a bit slower that via C++ due to the overhead of transitions from managed to unmanaged code and back (C# binding to driver and back ).
Also, I found this blog where the diagram states that the graphics engine would/should still use compiled (unmanaged?) code.
So, my question is: Would you port the entire engine to C# or the better part of it, leaving the graphics subsystem in C++ (or maybe more generally everything that needs to communicate with the driver many times a frame - like OpenGL calls: draw calls, state changes, binding objects [Texture, VBO, FBO etc.], setting shader parameters etc.)?
I think you should really make a new thread to discuss this, it's way off topic. In brief, yes there is a minor cost to crossing the native/managed barrier, and as such it is often better to do it as little as possible, but by leaving only your renderer in native code you may end up making that transition a lot more than you would if you ported the renderer and only made the transition for the low-level API work (what OpenTK does). It depends. I suggest you create a new thread.