void select_texture(){
glLoadIdentity();
glOrtho (0, 256, 0, 256, 0, 1);
glViewport(0,0,256,256);
glMatrixMode (GL_MODELVIEW);
}
void select_screen(int w,int h){
glLoadIdentity ();
glOrtho (0, w, h, 0, 0, 1);
glViewport(0,0,w,h);
glMatrixMode (GL_MODELVIEW);
}
int main() {
GLuint my_fbo;
GLuint color_rb;
set_gfx_mode(GFX_OPENGL_WINDOWED, 512, 512, 0, 0);
glDisable(GL_DEPTH_TEST);
glEnable(GL_TEXTURE_2D);
glGenRenderbuffersEXT(1,&color_rb);
glBindRenderbufferEXT( GL_RENDERBUFFER_EXT, color_rb);
glRenderbufferStorageEXT( GL_RENDERBUFFER_EXT, GL_RGB, 256, 256 );
glGenFramebuffersEXT(1, &my_fbo);
glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, my_fbo);
glFramebufferRenderbufferEXT(GL_FRAMEBUFFER_EXT,GL_COLOR_ATTACHMENT0_EXT, GL_RENDERBUFFER_EXT, color_rb );
glBindFramebufferEXT(GL_FRAMEBUFFER_EXT,my_fbo);
select_texture();
glClearColor(0,0,1,1);
glClear( GL_COLOR_BUFFER_BIT );
//clear our 'screen'.
glBindFramebufferEXT(GL_FRAMEBUFFER_EXT,0);
glClearColor(0.2,0.2,0.2,1);
glClear( GL_COLOR_BUFFER_BIT );
select_screen(512,512);
glBindFramebufferEXT(GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_EXT,my_fbo);
glBindFramebufferEXT(GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_EXT,0);
glPixelTransferi(GL_MAP_COLOR,GL_TRUE);
glRasterPos2i(0,256);
glCopyPixels(0,0,256,256,GL_COLOR);
/* Flip the backbuffer on screen */
allegro_gl_flip();
return 0;
}