This is FNAPlatform, the platform abstraction layer and implementations for FNA. The way FNA platforms are written is by implementing the following interfaces: 1. FNAPlatform - Write implementations of the delegate types listed in FNAPlatform.cs - Assign the new functions in the FNAPlatform static constructor 2. IGLDevice - Implement the interfaces listed in IGLDevice.cs - When implementing FNAPlatform.CreateGLDevice, use your new GLDevice Determining platform backends at runtime allows us to have portability across all targets with a single binary, which is convenient for targeting multiple platforms as well as multiple backends for each platform all simultaneously. The expectation is that new platforms will add code exclusively to this folder. Some interfaces may need to change for new platforms, but changing the interface should be as simple as making the modifications at the interface layer and fixing the code in both the XNA reimplementation code as well as each platform backend file that depends on those interfaces, all of which should throw errors at compile time right away, regardless of your current target platform. When submitting new platforms, please test ALL platforms and ALL backends!