Nowhere did I say that the spec is poorly written with regards to the exactness, just that the undefined behaviors (and implementation specifics is the same to me) make it a harder API to live with when there’s also no error detection.
I was asking if there was a part of the OpenGL API where it looks like the API says “X is possible” but the spec says “X is undefined/implementation dependent.” That would suggest the kind of miscommunication you’re talking about.
Do you see it as a problem at all?
Do I see which as a problem? You seem to be talking about two entirely separate issues. One issue is driver quality, which is what the D3D model helps to improve on. As the topic of the thread indicates (as well as the need for this sub-forum on drivers), this is clearly a problem.
The other issue you talk about is with too much “undefined behavior”, which you seem to suggest is lurking all over the place, waiting to swallow hapless OpenGL programmers.
In order for that to be true, the specification and the API must be at odds. That there are a lot of pitfalls in the API that don’t raise glGetError’s, but can cause one to enter “undefined behavior” that varies from implementation to implementation. The user mistakenly assumes that this behavior is compliant and comes to rely on it.
You have yet to show such a case, even though the topic of the thread provides one for the compatibility spec. Namely, that nothing in the array rendering API suggests that you need to actually bind anything to render, but the compatibility spec says otherwise. Also, the special treatment of attribute 0.
But since the core spec (the required one) gets this right, it is at best a half-example. Even less, considering the fact that a compliant compatibility implementation is not supposed to actually render anything if you try it; it should give a GL_INVALID_OPERATION error. So the only way you could come to rely on it is by relying, not on “undefined behavior” but on non-conforming behavior. The spec is not too loose or too “undefined”; there’s just a bad OpenGL implementation out there.
The problem is clearly on NVIDIA, not on the specification or the API.
To me, the biggest problems in OpenGL are, in order:
1: Driver quality. I’m looking at you, AMD. Sampler Objects are not a river in Egypt.
2: Driver quality. Yes, I’m looking at you too, NVIDIA, Mr. “I’ll let anything through.”
3: Driver quality. And that means you, Intel, Mr. “I don’t know how to write code!”
4: Specification quality. coughseparate_program_objectscough. And some of their others, like shader subroutines, have been very oddly specified. And unlike the past days, when features would often have a dry run at the EXT or ARB level before being promoted to core (geometry shaders in core is much better than even the ARB version), now features are born directly in core. Which is good when the spec doesn’t have problems, but when it does…
5: API quality. Seriously, have you looked at the texturing API lately? It’s like a madhouse in there. If there were one place I could take a sledgehammer to, it would be every non-FBO function that dealt with creating, managing, and binding textures. The combination of explicit attribute locations, shader inclusion (when AMD gets around to implementing it), and separate programs (the functionality, not the spec, which is equal parts buggy and stupid) are able to save the shader specification part of the API.