Simplest way is multiple draw calls.
In OpenGL ES 2.0, the adding texture operation is in the shader
Not really. How does shaders know where to take texture pixels? You must bind texture outside shader too.
Basic algorithm for drawing multiple objects is:
for(each object obj)
{
SetPipelineState(obj);
Draw(obj);
}
In your case:
void RenderFrame()
{
ClearBackBuffer();
ClearDepthBuffer();
// Draw cube
glUseProgram(programForCube);
glActiveTexture(GL_TEXTURE0);
glBindTexture(GL_TEXTURE_2D, textureOfCube); // Texture for cube
glBindBuffer(...) // Vertex buffer for cube
// other states go here
Draw(...);
// Draw background
glUseProgram(programForBackground);
glActiveTexture(GL_TEXTURE0);
glBindTexture(GL_TEXTURE_2D, textureOfBackground); // Texture for background
glBindBuffer(...) // Vertex buffer for background
// other states go here
Draw(...);
}
Don't forget to set up depth state and depth buffer.
There are advanced techniques to reduce draw calls number.
Even better and more general solution will be to google up complete OpenGL tutorial course. There are plenty on the web.