MAX_TEXTURE_UNITS versus MAX_TEXTURE_IMAGE_UNITS

I looked at the definition for each of these parameters and it sounds as if MAX_TEXTURE_UNITS specifies the number of available textures for the fixed function and MAX_TEXTURE_IMAGE_UNITS is the number of total units usable in a fragment shader. Does this mean that if no shader is in use you can still bind textures to a unit higher than MAX_TEXTURE_UNITS but less than MAX_TEXTURE_IMAGE_UNITS? If this is the case, would no results be visible normally?

Also, when using the GL_COMBINE texture environment mode, you’re allowed to specify one of the sources for the combination function as GL_TEXTUREn, does mean only textures available to the fixed pipeline can be accessed or can n be any bound texture unit?

Thanks

Long answer short, no you can’t bind more textures than MAX_TEXTURE_UNITS when using the fixed function pipeline, since it has no texture coords to address the higher bound textures. You can only bind MAX_TEXTURE_IMAGE_UNITS when using shaders.

I did some very simple tests and it seems you bind texture units above MAX_TEXTURE_UNITS even when the fixed function pipeline is used. I think they would just be considered as disabled for opengl, but since I didn’t actual rendering something to the screen, it’s hard to tell. All I know is that it didn’t cause a gl error (but binding to a unit above MAX_TEXTURE_IMAGE_UNITS did cause one).