Let's say I'm drawing multiple objects using vertex arrays and they're all different such that some are textured, some use a color values, some use color indices, and some have surface normals, but they don't all have all of them. I have to do the following, don't I:
glEnableClientState(GL_VERTEX_ARRAY);
glEnableClientState(GL_NORMAL_ARRAY);
glEnableClientState(GL_COLOR_ARRAY);
//draw object 1
glDisableClientState(GL_COLOR_ARRAY);
glDisableCleintState(GL_NORMAL_ARRAY);
glEnableClientState(GL_TEXTURE_ARRAY);
//draw object 2
glDisableClientState(GL_TEXTURE_ARRAY);
glEnableClientState(GL_NORMAL_ARRAY);
glEnableClientState(GL_INDEX_ARRAY);
//draw object 3
glDisableClientState(GL_NORMAL_ARRAY);
glDisableClientState(GL_VERTEX_ARRAY);
glDisableClientState(GL_INDEX_ARRAY);
You'd think you could just OR those GLenums together into a single enable/disable call, but you can't, right? Wouldn't this be much nicer:
glEnableClientState(GL_VERTEX_ARRAY | GL_NORMAL_ARRAY | GL_COLOR_ARRAY);
//draw object 1
glDisableClientState(GL_COLOR_ARRAY | GL_NORMAL_ARRAY);
glEnableClientState(GL_TEXTURE_ARRAY);
//draw object 2
glDisableClientState(GL_TEXTURE_ARRAY);
glEnableClientState(GL_NORMAL_ARRAY | GL_INDEX_ARRAY);
//draw object 3
glDisableClientState(GL_NORMAL_ARRAY | GL_VERTEX_ARRAY | GL_INDEX_ARRAY);
Can that be done? I don't think it can (I can't really test it right now). I'm not really complaining that if it can't be done, but am rather curious why it's not done that way?
Without order nothing can exist - without chaos nothing can evolve.