Thank you.
I am currently using my PC which has a ATI chip that supports shaders. However, my end hardware doesnt support shaders.
So I am not using shaders for this.
I think its easier to have this discussion if I can provide the source code here,
create_textures();
standard_open_gl_setup(); //sets up ortho and viewport etc.
glEnable( GL_TEXTURE_2D );
glEnable( GL_BLEND );
glBlendFunc( GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA );
/----------------------------------------------------------
Generate frame buffer
----------------------------------------------------------/
width = 512;
height = 512;
glGenTextures( 1, &fb_tex_one );
glBindTexture( GL_TEXTURE_2D, fb_tex_one );
glTexImage2D( GL_TEXTURE_2D, 0, GL_RGBA, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL );
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_MIN_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
glGenFramebuffersEXT( 1, &fb_one );
glBindFramebufferEXT( GL_FRAMEBUFFER_EXT, fb_one );
glFramebufferTexture2DEXT( GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0_EXT,
GL_TEXTURE_2D, fb_tex_one, 0 );
/----------------------------------------------------------
Draw to framebuffer one
----------------------------------------------------------/
glPushAttrib( GL_ENABLE_BIT | GL_VIEWPORT_BIT | GL_COLOR_BUFFER_BIT );
glBindFramebufferEXT( GL_FRAMEBUFFER_EXT, fb_one );
glMatrixMode( GL_PROJECTION );
glLoadIdentity();
glOrtho( 0.0f, 512.0f, 512.0f, 0.0f, -1.0f, 1.0f );
glMatrixMode( GL_MODELVIEW );
glLoadIdentity();
glViewport( 0, 0, 512, 512 );
glClearColor( 0.0f, 0.0f, 0.0f, 1.0f );
glClear( GL_COLOR_BUFFER_BIT );
glBindTexture( GL_TEXTURE_2D, bkgd_hnd_rw );
glBegin( GL_QUADS );
glColor4f( 1.0f, 1.0f, 1.0f, 1.0f );
glTexCoord2f( 1.0f, 1.0f ); glVertex2f( 512.0f, 512.0f );
glTexCoord2f( 1.0f, 0.0f ); glVertex2f( 512.0f, 0.0f );
glTexCoord2f( 0.0f, 0.0f ); glVertex2f( 0.0f, 0.0f );
glTexCoord2f( 0.0f, 1.0f ); glVertex2f( 0.0f, 512.0f );
glEnd();
glBindTexture( GL_TEXTURE_2D, checkerbox_hnd_rb );
glBegin( GL_QUADS );
glColor4f( 1.0f, 1.0f, 1.0f, 1.0f );
glTexCoord2f( 1.0f, 1.0f ); glVertex2f( 384.0f, 384.0f );
glTexCoord2f( 1.0f, 0.0f ); glVertex2f( 384.0f, 128.0f );
glTexCoord2f( 0.0f, 0.0f ); glVertex2f( 128.0f, 128.0f );
glTexCoord2f( 0.0f, 1.0f ); glVertex2f( 128.0f, 384.0f );
glEnd();
glBindFramebufferEXT( GL_FRAMEBUFFER_EXT, 0 );
glPopAttrib();
/----------------------------------------------------------
Draw to frame buffer 2 using multi texture
----------------------------------------------------------/
glGenTextures( 1, &fb_tex_two );
glBindTexture( GL_TEXTURE_2D, fb_tex_two );
glTexImage2D( GL_TEXTURE_2D, 0, GL_RGBA, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL );
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_MIN_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
glGenFramebuffersEXT( 1, &fb_two );
glBindFramebufferEXT( GL_FRAMEBUFFER_EXT, fb_two );
glFramebufferTexture2DEXT( GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0_EXT,
GL_TEXTURE_2D, fb_tex_two, 0 );
glPushAttrib( GL_ENABLE_BIT | GL_VIEWPORT_BIT | GL_COLOR_BUFFER_BIT );
glBindFramebufferEXT( GL_FRAMEBUFFER_EXT, fb_two );
glMatrixMode( GL_PROJECTION );
glLoadIdentity();
glOrtho( 0.0f, 512.0f, 512.0f, 0.0f, -1.0f, 1.0f );
glMatrixMode( GL_MODELVIEW );
glLoadIdentity();
glViewport( 0, 0, 512, 512 );
glClearColor( 0.0f, 0.0f, 0.0f, 0.0f );
glClear( GL_COLOR_BUFFER_BIT );
glActiveTexture(GL_TEXTURE0);
glEnable(GL_TEXTURE_2D);
glBindTexture(GL_TEXTURE_2D, bkgd_hnd_rw);
glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE);
glActiveTexture(GL_TEXTURE1);
glBindTexture(GL_TEXTURE_2D, fb_tex_one);
glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE);
glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_RGB, GL_REPLACE);
glTexEnvi(GL_TEXTURE_ENV, GL_SRC1_ALPHA, GL_PREVIOUS);
/* what i am trying here is to create a texture
that has the RGB component of fb_tex_one and alpha value
of bkgd_hnd_rw, I might be wrong with my glTexEnvf combinations */
glBegin(GL_QUADS);
glColor4f( 1.0f, 1.0f, 1.0f, 1.0f );
glMultiTexCoord2f(GL_TEXTURE0, 1.0f, 1.0f);
glMultiTexCoord2f(GL_TEXTURE1, 1.0f, 1.0f);
glVertex2f( 512.0f, 512.0f );
glMultiTexCoord2f(GL_TEXTURE0, 0.0f, 1.0f);
glMultiTexCoord2f(GL_TEXTURE1, 0.0f, 1.0f);
glVertex2f( 0.0f, 512.0f );
glMultiTexCoord2f(GL_TEXTURE0, 0.0f, 0.0f);
glMultiTexCoord2f(GL_TEXTURE1, 0.0f, 0.0f);
glVertex2f( 0.0f, 0.0f );
glMultiTexCoord2f(GL_TEXTURE0, 1.0f, 0.0f);
glMultiTexCoord2f(GL_TEXTURE1, 1.0f, 0.0f);
glVertex2f( 512.0f, 0.0f );
glEnd();
glBindFramebufferEXT( GL_FRAMEBUFFER_EXT, 0 );
glDisable( GL_TEXTURE_2D );
glPopAttrib();
glEnable(GL_TEXTURE_2D);
glBindTexture(GL_TEXTURE_2D, fb_tex_one);
glBegin( GL_QUADS );
glColor4f( 1.0f, 1.0f, 1.0f, 1.0f );
glTexCoord2f( 1.0f, 1.0f ); glVertex2f( 512.0f, 512.0f );
glTexCoord2f( 1.0f, 0.0f ); glVertex2f( 512.0f, 0.0f );
glTexCoord2f( 0.0f, 0.0f ); glVertex2f( 0.0f, 0.0f );
glTexCoord2f( 0.0f, 1.0f ); glVertex2f( 0.0f, 512.0f );
glEnd();
/----------------------------------------------------------
Draw to screen, from framebuffer
----------------------------------------------------------/
width = 512;
height = 512;
glViewport( 0, 0, width, height );
glClearColor( 0.0f, 0.0f, 0.0f, 0.0f );
glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );
glMatrixMode( GL_PROJECTION );
glLoadIdentity();
glOrtho( 0.0f, 512.0f, 512.0f, 0.0f, -1.0f, 1.0f );
glMatrixMode( GL_MODELVIEW );
glLoadIdentity();
glViewport( 0, 0, width, height );
glEnable( GL_TEXTURE_2D );
glEnable(GL_BLEND);
glColor4f( 1.0f, 1.0f, 1.0f, 1.0f );
glPushMatrix();
glTranslatef( 256.0f, 256.0f, 0.0f );
glScalef(128.0f, 128.0f, 1.0f );
glBindTexture( GL_TEXTURE_2D, checkerbox_hnd_ug );
glBegin( GL_QUADS );
glColor4f( 1.0f, 1.0f, 1.0f, 1.0f );
glTexCoord2f( 1.0f, 1.0f ); glVertex2f( 1.0f, 1.0f );
glTexCoord2f( 0.0f, 1.0f ); glVertex2f( -1.0f, 1.0f );
glTexCoord2f( 0.0f, 0.0f ); glVertex2f( -1.0f, -1.0f );
glTexCoord2f( 1.0f, 0.0f ); glVertex2f( 1.0f, -1.0f );
glEnd();
glPopMatrix();
glEnable( GL_TEXTURE_2D );
glColor4f( 1.0f, 1.0f, 1.0f, 1.0f );
glBindTexture( GL_TEXTURE_2D, fb_tex_two );
glPushMatrix();
glTranslatef( 256.0f, 256.0f, 0.0f );
glScalef(128.0f, 128.0f, 1.0f );
glBegin( GL_QUADS );
glTexCoord2f( 1.0f, 1.0f ); glVertex2f( 1.0f, 1.0f );
glTexCoord2f( 0.0f, 1.0f ); glVertex2f( -1.0f, 1.0f );
glTexCoord2f( 0.0f, 0.0f ); glVertex2f( -1.0f, -1.0f );
glTexCoord2f( 1.0f, 0.0f ); glVertex2f( 1.0f, -1.0f );
glEnd();
glDisable( GL_TEXTURE_2D );
glPopMatrix();
glBindTexture( GL_TEXTURE_2D, 0 );
glDeleteFramebuffersEXT( 1, &fb_one );
glDeleteTextures( 1, &fb_tex_one );
glDeleteFramebuffersEXT( 1, &fb_two );
glDeleteTextures( 1, &fb_tex_two );
I am not able to get my second render to texture work. The end image is a single colored texture.