private IntPtr GetAngleDisplay(IntPtr dc, GraphicsContextFlags flags, int major) { // default to D3D9 for ES2, but use D3D11 for ES3 as required by Angle. var platform_type = major == 2 ? Egl.PLATFORM_ANGLE_TYPE_D3D9_ANGLE : Egl.PLATFORM_ANGLE_TYPE_D3D11_ANGLE; if (FlagEnabled(flags, GraphicsContextFlags.AngleD3D11)) { platform_type = Egl.PLATFORM_ANGLE_TYPE_D3D11_ANGLE; } else if (FlagEnabled(flags, GraphicsContextFlags.AngleD3D9)) { platform_type = Egl.PLATFORM_ANGLE_TYPE_D3D9_ANGLE; } else if (FlagEnabled(flags, GraphicsContextFlags.AngleOpenGL)) { platform_type = Egl.PLATFORM_ANGLE_TYPE_OPENGL_ANGLE; } else { // make sure the correct flag is set. switch (platform_type) { case Egl.PLATFORM_ANGLE_TYPE_D3D9_ANGLE: flags |= GraphicsContextFlags.AngleD3D9; break; case Egl.PLATFORM_ANGLE_TYPE_D3D11_ANGLE: flags |= GraphicsContextFlags.AngleD3D11; break; case Egl.PLATFORM_ANGLE_TYPE_OPENGL_ANGLE: flags |= GraphicsContextFlags.AngleOpenGL; break; } } var attribs = new[] { Egl.PLATFORM_ANGLE_TYPE_ANGLE, platform_type, Egl.PLATFORM_ANGLE_MAX_VERSION_MAJOR_ANGLE, Egl.DONT_CARE, Egl.PLATFORM_ANGLE_MAX_VERSION_MINOR_ANGLE, Egl.DONT_CARE, Egl.PLATFORM_ANGLE_DEVICE_TYPE_ANGLE, Egl.PLATFORM_ANGLE_DEVICE_TYPE_HARDWARE_ANGLE, Egl.NONE }; return(Egl.GetPlatformDisplay( Egl.PLATFORM_ANGLE_ANGLE, dc, attribs )); }