I assume the problem is with texture bindings. SpriteBatch claims that the active texture element will be 0, so it makes a call
lastTexture.bind(); lastTexture.bind(0);
, , , 1 ( texture2.bind(1); ). 0 , .
, Gdx.GL20.glActiveTexture(0); draw. , , !
EDIT: , !: D. , :
batch.begin();
texture2.bind(1);
shaderProgram.setUniformi("u_Texture2", 1);
Gdx.gl.glActiveTexture(GL10.GL_TEXTURE0);
batch.draw(spriteTexture,positions[0].x,positions[0].y);
batch.draw(spriteTexture,positions[1].x,positions[1].y);
batch.end();