I’ve found something in the OpenGL docs that I think is contradictory.
In future OGL versions the fixed function pipeline will be gone. Of importance to my problem is that EnableClientState and GL_VERTEX_ARRAY as well as associated state is already deprecated in OGL 3.0. Now, if you take a look at the OGL function reference (no matter where on the web, but lets say at http://www.opengl.org/sdk/docs/man/ ), you’ll notice on the page of glDrawArrays that “if GL_VERTEX_ARRAY is not enabled, no geometric primitives are generated”. That is, you need to call EnableClientState(GL_VERTEX_ARRAY) but this call is deprecated!
As a small experiment, I’ve made a simple test. I installed the newest OGL 3.0 beta drivers from NV, and tried to draw a scene with GL_VERTEX_ARRAY disabled, supplying all the vertex data in custom shader attribute variables. It worked. However, it did not work on an ATI 9800PRO with driver ver. 7.11. Not working means that nothing got drawn, but no erros in glGetError(). On the ATI, I tried enabling GL_VERTEX_ARRAY (without setting glVertexPointer), but it did not help either. I wonder if this is because the ATI driver is not yet OGL3.0 compatible.
So, I’d like some feedback from you. Have I missed something or is it really something contradictory in the docs? But more importantly, has anyone tried drawing vertices without touching glEnableClientState on an ATI? Can one expect for it to be compatible with most drivers/graphic cards and work?