Apologies for the late reply; I lost track of the thread a few weeks back.
This is degenerating into a flame war but I’m game today.
This isn’t a flame war. A flame war is when people are insulting one another back and forth.
We are having an argument. We are presenting different sides, offering evidence and argument for our different positions. This is what a forum is for.
Gee check this as well: GL_OES_extended_matrix_palette.
Wow, I don’t think I’ve ever seen a more worthless extension. Not the matrix palette functionality; when dealing with the FFP, that has some merit. Just the fact that they made an extension for the sole purpose of increasing the minimum of a queriable value.
The ARB has made some extensions of questionable merit, but I don’t think even they’ve ever made one solely to increase a minimum implementation-dependent value before.
Can’t GLES users just ask what the max number of matrices is? Isn’t that easier than looking for an extension?
But that does not sound so crazy: lot’s of development in D3D land is Direct3D 9 (not 10 and not 11) which corresponds to GL2.1.
Yes there is. But your analogy misses a crucial point: that D3D9 is supported on all Windows OS’s, while D3D10+ are only supported on Vista or better. The simple fact of the matter is that there is a lot of D3D 10 capable hardware out there that cannot be used with D3D 10 because the user is running XP.
This is a rather large issue. One that OpenGL doesn’t have. GL 3.x runs just fine under XP.
So when you’re asking yourself whether you want to restrict yourself to GL 3.x, you aren’t also saying that all XP users will be cut out of the loop like you would in D3D land.
Look at Valve’s hardware survey. A developer might be willing to say that they’re willing to overlook the bottom 20% who use DX9-only hardware. But it’d be much harder to overlook the bottom 36% who only have access to the DX9 API even though almost half of them have DX10-hardware.
One fifth vs. one third. That’s a pretty substantial difference.
Ever worked on a large project with tons of code? Ever have to work with other people? Ever have to run on older hardware? All of these are reasons to think carefully about using GL3 and higher.
Yes to all of the above. But you said, “Moreover, if it is a large block of code already, ‘porting/updating’ it to avoid the fixed function pipeline is a significant amount of work.” That’s not citing a lot of reasons; that’s only citing one reason.
My point was that if you are doing performance optimizations, then you had better prepare to do “a significant amount of work” regardless of what those particular optimizations are. Whether it’s dropping the FFP for shaders in some places, optimizing your vertex formats, etc. My point is that something being “a significant amount of work” does not mean that you shouldn’t do it if you need the performance.
Performance takes effort to achieve.
The greater hardware requirements are a valid point, but it would be just as valid a point if the OP’s suggested extension came to be. Because GL 2.1 hardware is simply not capable of what he’s asking. Thus it would only ever be implemented on 3.x class hardware, and thus the optimization would require 3.x hardware.