In OpenGL ES 2, you still use shaders. Thus, you can freely use any texture coordinates that you like. Just add an additional attribute for the second pair of cooridnate textures and delegate this to the fragment shader, as usual:
...
attribute vec2 texCoord0;
attribute vec2 texCoord1;
varying vec2 vTexCoord0;
varying vec2 vTexCoord1;
void main()
{
...
vTexCoord0 = texCoord0;
vTexCoord1 = texCoord1;
}
:
...
uniform sampler2D tex0;
uniform sampler2D tex1;
...
varying vec2 vTexCoord0;
varying vec2 vTexCoord1;
void main()
{
... = texture2D(tex0, vTexCoord0);
... = texture2D(tex1, vTexCoord1);
}
, , ( glVertexAttribPointer). , GLSL, OpenGL ES 1. , .
EDIT:. OpenGL ES 1, . , , , , -.
glActiveTexture(GL_TEXTUREi) i- . , , i- (, glBindTexture, glTexEnv gl(En/Dis)able(GL_TEXTURE_2D)).
glTexCoordPointer, , glCientActiveTexture(GL_TEXTUREi) , glTexCoordPointer glEnableClientAttrib(GL_TEXTURE_COORD_ARRAY).
- :
glActiveTexture(GL_TEXTURE1);
glBindTexture(GL_TEXTURE_2D, <second texture>);
glTexEnv(<texture environment for second texture>);
glEnable(GL_TEXTURE_2D);
glActiveTexture(GL_TEXTURE0);
glBindTexture(GL_TEXTURE_2D, <first texture>);
glTexEnv(<texture environment for first texture>);
glEnable(GL_TEXTURE_2D);
glClientActiveTexture(GL_TEXTURE1);
glTexCoordPointer(<texCoords for second texture>);
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
glClientActiveTexture(GL_TEXTURE0);
glTexCoordPointer(<texCoords for first texture>);
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
glDrawArrays(...)/glDrawElements(...);
glClientActiveTexture(GL_TEXTURE1);
glDisableClientState(GL_TEXTURE_COORD_ARRAY);
glClientActiveTexture(GL_TEXTURE0);
glDisableClientState(GL_TEXTURE_COORD_ARRAY);
glActiveTexture(GL_TEXTURE1);
glDisable(GL_TEXTURE_2D);
glActiveTexture(GL_TEXTURE0);
glDisable(GL_TEXTURE_2D);
, , , 0. , , , . , , (GL_TEXTURE0) , , -, .
EDIT: (glBegin/glEnd) , glTexCoordPointer, . glClientAttribTexture, . glMultiTexCoord(GL_TEXTUREi, ...) (GL_TEXTURE0, GL_TEXTURE1,...) glTexCoord(...). , OpenGL ES . .