Drawing without the fixed-function pipeline

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?

Deleted. I was not thinking enough :slight_smile:

Now, if you take a look at the OGL function reference

You might have noticed that it says, in big, bold letters, “OpenGL 2.1 Reference Pages.” In OpenGL 2.1, nothing is deprecated. So there’s no problem.

As for my first question (and according to your answer), I am now standing wondering which parts of the function reference of NOT deprecated functions still apply to OGL3.0? Odd. So we need to guess and play.

Yeah, we’re all still waiting for the GL 3 reference pages. I started compiling a list of all forward-compatible functions in GL3, but It got temporarily bumped to the side yesterday evening. It’s a pain since I need to go through the spec, see a function name, make sure it’s not deprecated, add it to the list…