I've had some recent chats our graphics gurus <www.xna.com> about this...
OpenGL was designed to abstract 3D acceleration hardware. It sought to avoid favoring any particular hardware strategy and aimed for software abstraction. It is pretty strong in this respect, but hardware evolved more quickly than OpenGL could. As a result, game developers have to use a large number of vendor specific extensions for maximum performance in modern games.
Early Direct3D came in two flavors. Retained mode, which was more similar to OpenGL, but also resembled a sort of early game engine; and Immediate mode, which aimed to do the reverse of OpenGL: abstract a particular hardware strategy that vendors could implement. Retained mode was a clear loser and quickly forgotten. Immediate mode, however, was a resounding success. The command buffer model lent itself well to the leading hardware of the time and proved to scale well simply by more tightly packing silicon.
PowerVR uses a form of deferred rendering which is significantly more clever than the brute force command buffers of 3dfx and later nVidia. This clever approach turns out to be faster with comparable hardware, but nVidia was simply able to produce beefer and beefier GPUs. No amount of cleverness was match for Moore's law. Lucky for PowerVR, beefy GPUs are energy hogs and mobile devices don't have a lot of energy to spare. The iPhone probably couldn't exist today if not for the cleverness of the PowerVR architecture.
Modern games use more and more PowerVR-inspired techniques in their shaders to reduce overdraw and the Xbox 360 uses a form of predicated tiling to enable HD render targets to fit in the small amount of super fast (and super expensive) eDRAM. We are pushing the current limits of jam-packed silicon. It is time to start being more clever.
Apple has selected to use OpenGL ES for the iPhone, just as everyone but Microsoft selects for their devices. OpenGL ES isn't a standard in the typical sense. It is more like a standard template. They basically took the OpenGL standard and then labeled the vast majority of the API as optional. OpenGL ES is an API starter kit. The premise being that platforms don't need to design an entire API from scratch. As an API consumer, if you know OpenGL, you just need to learn which bits Apple has customized, then you can write an iPhone game. The downside is that iPhone games aren't any more portable than Xbox 360 games, which use a customized version of Direct3D. The funny bit is: no one cares. It turns out that you need to performance tune for every individual device anyway, you might as well use an entirely different API. It isn't that much more work.
OpenGL ES is enabling evolution at a pace on par with Direct3D. Since it is primarily used in closed platforms such as game game consoles, and small platforms such as mobile phones, I do not expect it to push nearly the same amount of innovation as Direct3D. Microsoft has the privilege of strategic partnerships with independent hardware vendors. I don't think there is anything exclusive about these partnerships, but Apple's control freak nature will probably demand control than breaking API changes. They also have a bigger focus on battery life than on performance. Battery life, the slowness of OpenGL, the success of D3D, and the desire for control neatly explain this purchase: http://www.ipodnn.com/articles/08/12/18/apple.buys.into.img/
Whew, that was a looooong winded comment. I at least one person enjoys it :-)
Comments
I've had some recent chats our graphics gurus <www.xna.com> about this...
OpenGL was designed to abstract 3D acceleration hardware. It sought to avoid favoring any particular hardware strategy and aimed for software abstraction. It is pretty strong in this respect, but hardware evolved more quickly than OpenGL could. As a result, game developers have to use a large number of vendor specific extensions for maximum performance in modern games.
http://en.wikipedia.org/wiki/OpenGL#History
Early Direct3D came in two flavors. Retained mode, which was more similar to OpenGL, but also resembled a sort of early game engine; and Immediate mode, which aimed to do the reverse of OpenGL: abstract a particular hardware strategy that vendors could implement. Retained mode was a clear loser and quickly forgotten. Immediate mode, however, was a resounding success. The command buffer model lent itself well to the leading hardware of the time and proved to scale well simply by more tightly packing silicon.
http://en.wikipedia.org/wiki/Direct3D#History
PowerVR uses a form of deferred rendering which is significantly more clever than the brute force command buffers of 3dfx and later nVidia. This clever approach turns out to be faster with comparable hardware, but nVidia was simply able to produce beefer and beefier GPUs. No amount of cleverness was match for Moore's law. Lucky for PowerVR, beefy GPUs are energy hogs and mobile devices don't have a lot of energy to spare. The iPhone probably couldn't exist today if not for the cleverness of the PowerVR architecture.
Modern games use more and more PowerVR-inspired techniques in their shaders to reduce overdraw and the Xbox 360 uses a form of predicated tiling to enable HD render targets to fit in the small amount of super fast (and super expensive) eDRAM. We are pushing the current limits of jam-packed silicon. It is time to start being more clever.
http://en.wikipedia.org/wiki/PowerVR#Technology
Apple has selected to use OpenGL ES for the iPhone, just as everyone but Microsoft selects for their devices. OpenGL ES isn't a standard in the typical sense. It is more like a standard template. They basically took the OpenGL standard and then labeled the vast majority of the API as optional. OpenGL ES is an API starter kit. The premise being that platforms don't need to design an entire API from scratch. As an API consumer, if you know OpenGL, you just need to learn which bits Apple has customized, then you can write an iPhone game. The downside is that iPhone games aren't any more portable than Xbox 360 games, which use a customized version of Direct3D. The funny bit is: no one cares. It turns out that you need to performance tune for every individual device anyway, you might as well use an entirely different API. It isn't that much more work.
OpenGL ES is enabling evolution at a pace on par with Direct3D. Since it is primarily used in closed platforms such as game game consoles, and small platforms such as mobile phones, I do not expect it to push nearly the same amount of innovation as Direct3D. Microsoft has the privilege of strategic partnerships with independent hardware vendors. I don't think there is anything exclusive about these partnerships, but Apple's control freak nature will probably demand control than breaking API changes. They also have a bigger focus on battery life than on performance. Battery life, the slowness of OpenGL, the success of D3D, and the desire for control neatly explain this purchase: http://www.ipodnn.com/articles/08/12/18/apple.buys.into.img/
Whew, that was a looooong winded comment. I at least one person enjoys it :-)