Hi people!
I’ve being longing to know if the following code will apply two textures onto one triangle in a single pass;
glBindTexture(GL_TEXTURE_2D,tex0);
glTexImage2D(GL_TEXTURE_2D, 0, compression_mode, w, h, 0, GL_RGB, GL_UNSIGNED_BYTE, rgb0);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_S,GL_REPEAT);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_T,GL_REPEAT);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);
|
glTexEnvi(GL_TEXTURE_ENV,GL_TEXTURE_ENV_MODE,GL_ADD);
|
glBindTexture(GL_TEXTURE_2D,tex1);
glTexImage2D(GL_TEXTURE_2D, 0, compression_mode, w, h, 0, GL_RGB, GL_UNSIGNED_BYTE, rgb0);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_S,GL_REPEAT);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_T,GL_REPEAT);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);
|
glTexEnvi GL_TEXTURE_ENV,GL_TEXTURE_ENV_MODE,GL_ADD);
|
|
glActiveTextureARB(GL_TEXTURE0);
glEnable(GL_TEXTURE_2D);
glBindTexture(GL_TEXTURE_2D,tex0);
|
glClientActiveTextureARB(tex0);
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
glTexCoordPointer(2,GL_FLOAT,0,tex0coords);
|
|
glActiveTextureARB(GL_TEXTURE1);
glEnable(GL_TEXTURE_2D);
glBindTexture(GL_TEXTURE_2D,tex1);
|
|
glClientActiveTextureARB(tex1);
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
glTexCoordPointer(2,GL_FLOAT,0,tex1coords);
|
|
glDrawArrays(...);
Is this correct?
Would it still be single-pass if I did this for 4 textures instead of two? (assuming I have 4 texture units)