Hi!!
I use this code to display multitextured geometry with vertexarrays:
init() {
vbuffer = allocateDirectFloatBuffer(size);
tbuffer = allocateDirectFloatBuffer(size);
tbuffer2 = allocateDirectFloatBuffer(size);
// geometry
gl.glEnableClientState(GL.GL_VERTEX_ARRAY);
gl.glVertexPointer(3, GL.GL_FLOAT, 0, vbuffer);
// textures
gl.glClientActiveTextureARB(GL.GL_TEXTURE0_ARB);
gl.glEnableClientState(GL.GL_TEXTURE_COORD_ARRAY);
gl.glTexCoordPointer(2, GL.GL_FLOAT, 0, tbuffer);
gl.glBindTexture(GL.GL_TEXTURE_2D, textures[0]);
gl.glClientActiveTextureARB(GL.GL_TEXTURE1_ARB);
gl.glEnableClientState(GL.GL_TEXTURE_COORD_ARRAY);
gl.glTexEnvi(GL.GL_TEXTURE_ENV, GL.GL_RGB_SCALE_ARB, 2);
gl.glTexEnvi(GL.GL_TEXTURE_ENV, GL.GL_TEXTURE_ENV_MODE, GL.GL_COMBINE_ARB);
gl.glTexCoordPointer(2, GL.GL_FLOAT, 0, tbuffer2);
gl.glBindTexture(GL.GL_TEXTURE_2D, textures[1]);
gl.glMatrixMode(GL.GL_TEXTURE);
gl.glLoadIdentity();
gl.glScalef(16, 16, 1);
gl.glMatrixMode(GL.GL_MODELVIEW);
fillBuffers();
}
display{
gl.glClientActiveTextureARB(GL.GL_TEXTURE0_ARB);
gl.glEnableClientState(GL.GL_TEXTURE_COORD_ARRAY);
gl.glClientActiveTextureARB(GL.GL_TEXTURE1_ARB);
gl.glEnableClientState(GL.GL_TEXTURE_COORD_ARRAY);
gl.glDrawArrays(GL.GL_TRIANGLE_STRIP, 0, size/3);
gl.glClientActiveTextureARB(GL.GL_TEXTURE1_ARB);
gl.glDisableClientState(GL.GL_TEXTURE_COORD_ARRAY);
gl.glClientActiveTextureARB(GL.GL_TEXTURE0_ARB);
gl.glDisableClientState(GL.GL_TEXTURE_COORD_ARRAY);
}
I see just the second texture (texture[1]) with to much alpha. I do not know what I make wrong, a similar code with a display list works well.
thank you in advance
turbotank