The following works on my GF4 Ti 4200. I does not report a FRAMEBUFFER_UNSUPPORTED error.
For the rendering i used a window with a resolution of 640x480. The framebuffer object is 512x512, so i had to adjust the Viewport before rendering to the framebuffer object.
At the end I draw a screen sized quad using the rendered texture. The result does not look as it should! It seems as if only the blue color components are actually rendered into the texture!
When executing this i had enabled GL emulation via the nvemulate tool. After installing the Forceware 75.90 drivers I cannot disable emulation anymore! Does anyone know how to disable emulation manually?
GLuint fb;
GLuint color_tex;
GLuint depth_rb;
glGenFramebuffersEXT(1, &fb);
glGenRenderbuffersEXT(1, &depth_rb);
glGenTextures(1, &color_tex);
glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, fb);
glBindTexture(GL_TEXTURE_2D, color_tex);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB8, 512, 512, 0, GL_RGB, GL_INT, NULL);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0_EXT, GL_TEXTURE_2D, color_tex, 0);
glBindRenderbufferEXT(GL_RENDERBUFFER_EXT, depth_rb);
glRenderbufferStorageEXT(GL_RENDERBUFFER_EXT, GL_DEPTH_COMPONENT24, 512, 512);
glFramebufferRenderbufferEXT(GL_FRAMEBUFFER_EXT, GL_DEPTH_ATTACHMENT_EXT, GL_RENDERBUFFER_EXT, depth_rb);
CHECK_FRAMEBUFFER_STATUS();
glBindTexture(GL_TEXTURE_2D, 0);
glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, fb);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glViewport(0,0,512,512);
glBegin(GL_TRIANGLES);
glColor3f(1.0f, 0.0f, 0.0f); glVertex2f(-0.5f, -0.5f);
glColor3f(0.0f, 1.0f, 0.0f); glVertex2f( 0.5f, -0.5f);
glColor3f(0.0f, 0.0f, 1.0f); glVertex2f( 0.0f, 0.5f);
glEnd();
glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0);
glBindTexture(GL_TEXTURE_2D, color_tex);
glEnable(GL_TEXTURE_2D);
glViewport(0,0,640,480);
//draw with texture
glClearColor(0, 0, 0, 0);
glClear(GL_COLOR_BUFFER_BIT);
gluOrtho2D(0.0, 1.0, 0.0, 1.0);
glBegin(GL_QUADS);
glTexCoord2f(0.0f, 0.0f); glVertex2f(0.0f, 0.0f);
glTexCoord2f(1.0f, 0.0f); glVertex2f(1.0f, 0.0f);
glTexCoord2f(1.0f, 1.0f); glVertex2f(1.0f, 1.0f);
glTexCoord2f(0.0f, 1.0f); glVertex2f(0.0f, 1.0f);
glEnd();