I would like to use OpenGL because there is a good chance the whole application will be ported to a non-Windows machine
But then it means you have to rewrite your whole WPF app too as this framework is not cross-platform.So in such a case OpenGL part will be only of minor concern here.I think you should re-consider the whole UI tech.For example I would use Qt SDK as it is truly cross platform and you can connect it with both DirectX and OpenGL at will. But if you plan to stick with WPF on Windows and using OpenGL just use C# OpenGL wrapper. Yes you will get some performance overhead because that is a wrapper.Just like those for Java (JOGL , LWJGL).But still games like MineCraft were originally written and worked fine with these APIs. Another , more challenging approach,is to WPF COM interop and call some C++ app that wraps your OpenGL renderer directly from WPF may be even using unsafe mode to get as low level as possible.Never tried it myself but it may get you a better performance.But that is a lot of work actually. Finally I would suggest you using DirectX for Windows as WPF has the best integration with it naturally.If you design your app well then it won't be a problem to connect it to OpenGL backend later.