void InitFBO()
{
glGenFramebuffersEXT(1, &fb);
glGenTextures(1, &tex2);
glGenRenderbuffersEXT(1, &depth_rb);
glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, fb);
// init texture
glBindTexture(texTarget, tex2);
glTexImage2D(texTarget, 0, texInternalFormat, texWidth, texHeight, 0,
GL_RGB, GL_FLOAT, NULL);
glTexParameterf(texTarget, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
glTexParameterf(texTarget, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
glTexParameterf(texTarget, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
glTexParameterf(texTarget, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
//glTexEnvi(GL_TEXTURE_ENV,GL_TEXTURE_GEN_MODE,GL_RE PLACE);
glFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0_EXT,
texTarget, tex2, 0);
glBindRenderbufferEXT(GL_RENDERBUFFER_EXT, depth_rb);
glRenderbufferStorageEXT(GL_RENDERBUFFER_EXT, GL_DEPTH_COMPONENT24, texWidth, texHeight);
glFramebufferRenderbufferEXT(GL_FRAMEBUFFER_EXT, GL_DEPTH_ATTACHMENT_EXT,
GL_RENDERBUFFER_EXT, depth_rb);
glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0);
}
void display()
{
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
glLoadIdentity();
glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, fb);
glEnable(GL_LIGHT0);
CreateObject();
glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0);
glEnable(GL_TEXTURE_2D);
glBindTexture(texTarget,tex2);
glBegin(GL_QUADS);
glTexCoord2f(0,0);
glVertex2f(0,0);
glTexCoord2f(1,0);
glVertex2f(1,0);
glTexCoord2f(1,1);
glVertex2f(1,1);
glTexCoord2f(0,1);
glVertex2f(0,1);
glEnd();
//glPopMatrix();
glDisable(GL_TEXTURE_2D);
glutSwapBuffers();
}