Perhaps my post is obvious. Perhaps it’s already in the works.
I think we don’t need to bind to a texture unit to create a texture anymore, right?
The second thing I want is that when you create a texture, you should not be able to upload data in the same function call.
For example :
//Texture created, contents undefined
glCreateTexture2D(textureID, GL_TEXTURE_2D, level, internal, width, height, border);
//User needs to upload bits using another function
//This way, creation and definition are separated.
Notice that I don’t need to bind the texture to create it or define the bits.
Also, we should not bind in order to make glTexParameter calls. They should each take a textureID. Perhaps I should call it textureHandle.
The only binding that should happen is for the shaders.
read the files on this page.
SIGGRAPH 2006 - OpenGL BOF presentations
Specifically the one named
The new object format in openGL 3 will allow you to link textures directly to the sampler uniforms, in fact most things will be done trough shaders so i don’t know if you even can texture stuff without using at least a basic shader in openGL 3.
Anyway, the idea is to remove the concept of imageid(witch is today just an uint) and instead use them as objects.
GLattribute attrib = glCreateAttrib(GL_IMAGE_OBJECT);
glSetAttribo(attrib, GL_FORMAT, format);
glSetAttribi(attrib, GL_WIDTH, width);
glSetAttribi(attrib, GL_HEIGHT, height);
glSetAttribi(attrib, GL_LEVELS, levels);
GLimage image = glCreateImage(attrib);
or the quick way
GLimage image = gluCreateImage2D(format, width, height, levels);
So any operation that uses textures can be called any where you want(mostly) without requiring you to bind it previously.
image = glTexSubImage2D(image2 ...);
and maybe even
image += image2;
or something like this, though i am a bit fuzzy on the details myself.
Oh, looks like they want to move the glTexParameter stuff into a sampler object.
The rest is good.