mono/MonoGame — pull request #2377 by thefiddler (2014-04-18 14:45:12+00:00)
Title: RFC: Add support for ANGLE platform (take 2)

Right now, testing the OpenGL ES codepath of MonoGame requires an valid Xamarin.Android or iOS license.

This PR adds support for OpenGL ES on Windows via the [ANGLE project](http://code.google.com/p/angleproject/). It is based on the WindowsGL project and reuses the GLES, OpenAL and OpenTK codepaths.

_**Note:** this currently depends on #2359_

While this PR is meant for Windows/ANGLE, it should also work on other OpenGL ES implementations, including OpenGL ES emulators ([PowerVR SDK](http://www.imgtec.com/powerVR/insider/sdkdownloads/index.asp)), desktop OpenGL with `GL_ARB_ES[2|3]_compatibility`, and native Linux OpenGL ES drivers. These implementations have not been tested.

Changes:
- Added MonoGame.Framework.Angle project to Protobuild
- Added new `ANGLE` #define and implemented where necessary (mainly on OpenAL and a few OpenGL ES codepaths)
- Implemented Occlusion Queries via OpenGL ES 3.0. This is currently enabled on ANGLE only, pending further review for ANDROID and IOS.

Pending:
- Add ANGLE binaries to ThirdParty/Dependencies. Is there a preferred way to handle 32-bit and 64-bit native binaries?

This PR has been tested with the Platform2D sample from MonoGame-Samples. Most unit tests appear to run correctly, but my Windows VM runs out of memory before it can complete the test suite.