Direct state access does indeed look like a great solution, but I think the hardware requirements might be a bit high. Interesting point about whether glGet values will be cached -- I'll remember that.
It really depends on the GL version you're aiming to support. Suppose it's 4...
That technique looks excellent, but unfortunately I need to support Mac OS X versions earlier than Lion, so I only have OpenGL 2.1 available. If you have any suggestions that could work for OpenGL 2.1, that would be great. I'm interested in your idea about having the device create the textures. How would you implement this? Would you just create the OpenGL texture object in a function in the GraphicsDevice class and then pass the GLuint into the Texture constructor? Or something else?
if you have to resort to glGet to query the state, then your design has flaws
Yeah, that's what I thought. Do you have any pointers on how I could approach re-designing this so that I wouldn't need to use glGet?