
Originally Posted by
elanthis
(The other reason is that GL is just a poorly designed API -- e.g. binding Uniform Buffer Objects by slot directly in the shader wasn't added to Core until 4.2, and the ARB extension that adds the support to older cards is only supported by NVIDIA's drivers; likewise, binding vertex attributes by slot wasn't added to Core until 3.3. Major D3D-class features came to GL over a year later, e.g. Uniform Buffer Objects, Texture Buffer Objects, primitive restart, and instancing weren't added to GL until 3.1 and it took until GL 3.2 to add geometry shader support to Core. Those features existed as extensions, but they were neither universally available nor universally high-quality, so you couldn't actually use them in a shipping product. Granted, even once in Core, the implementations tended to be buggy, likely due to a lack of any kind of test suite for implementations to be verified against.)