For the OS X platform layer that I did, I picked OpenGL because:
- We'll probably use OpenGL in the future for more optimized hardware-accelerated rendering.
- It's very easy to sync OpenGL frame buffer swaps with the display's vertical refresh rate.
- It wasn't much harder to use OpenGL than any other API.
OpenGL is actually the closest to the metal that you can currently get on OS X. It sits below Quartz. On iOS, you could drop down to Apple's Metal API, but that won't be coming to OS X any time soon.
Also, realize that the current platform layer is using OpenGL just as a dumb bit-blitter. It's not like we're getting a massive speedup by using OpenGL at the moment. You could use Quartz with a CGLayer and probably get similar performance. I tried this early in the project to compare performance and it was in the ballpark of the OpenGL version.
Here's an excerpt of blitting the early bit pattern using a CGLayer:
https://gist.github.com/itfrombit/909b6ee24f31a2746267
-Jeff