During the WWDC Keynote, Apple has announced a new graphics Application Programming Interface (API) for game developers called Metal. The name is a reference to the low-level (close to the hardware, or “close to the metal”) of the API, which has been designed to address inherent inefficiencies of OpenGL, the current 3D graphics API for games. OpenGL has been around for decades, and although OpenGL ES for mobiles has been optimized to remove many of the inefficiencies due to legacy desktop code, the problem remains that OpenGL had been designed when graphics hardware was totally different.
Very much like DirectX 11, there are a number of scenarios where the programmability of today’s games induced so many changes and updates in the game states that the graphics driver had to keep track of way too many things. Additionally, the app itself could sometime do a better job at it since it knows exactly what’s going on, while the graphics API can only make assumptions.
Both have been designed to reduce the involvement of the graphics API, and give the app developer more control over the state and data necessary to display 3D objects. Because of that, the net result is that games that use low-level APIs should be able to display more objects without running into API performance limitations.
This is particularly important for performance critical games such as those using the Unreal Engine (Gears of War…), or the Frostbite engine (Battlefield…) since they tend to draw a huge amount of polygons with complex rendering (watch a demo of the Unreal engine). Those enormous development teams have the know-how and manpower to take on such an API change first.
Other developers will probably stick to OpenGL for the time being in order to minimize the amount of work required to port their app to Android/PC/Mac and Linux. In the end, Metal will accelerate the arrival of PC/Console type of titles or graphics to iOS devices. Right now, it’s not clear which devices will support Metal, but we should have more information pretty soon as the new development kit is downloaded by developers.