instead of wine, you can port it to .NET Core, which is like aiming to be cross platform across all systems - windows, macos, linux (and probably more). and from the win32/64.exe client -> .NET Core -> towards other platforms. since the windows client uses W32API, and .NET Core is a layer that can access W32API, then it should be easy to plug them together. and for other systems, it should be smooth sailing coz it's cross platform, making .NET Core a "bridge" and you don't even have to know the intrinsics of the other systems coz it's taken care of by .NET Core's portability. But yeah, the lag can probably happen. but you have to wait for the Framework to "mature" coz the important features like Forms, C/C++, etc. usage are not yet implemented. they had a preview just weeks ago and the important features will be out on version 3 release. and this should help, for the directx http://sharpdx.org/