1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
|
// Creating objects
glGenTextures( 1, &(cd->color_buffer) );
glGenRenderbuffersEXT( 1, &(cd->depth_buffer) );
glGenFramebuffersEXT( 1, &(cd->frame_buffer) );
// Binding objects
glBindTexture( cd->target, cd->color_buffer );
glBindRenderbufferEXT( GL_RENDERBUFFER_EXT, cd->depth_buffer );
glBindFramebufferEXT( GL_FRAMEBUFFER_EXT, cd->frame_buffer );
// Initialization of the texture
glTexParameteri( cd->target, GL_TEXTURE_MAG_FILTER, GL_LINEAR );
glTexParameteri( cd->target, GL_TEXTURE_MIN_FILTER, GL_LINEAR );
glTexParameteri( cd->target, GL_TEXTURE_WRAP_S, GL_CLAMP );
glTexParameteri( cd->target, GL_TEXTURE_WRAP_T, GL_CLAMP );
glTexImage2D( cd->target, 0, GL_RGBA, cd->wtex, cd->htex, 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL );
// Initialize the Depth Render Buffer
glRenderbufferStorageEXT (GL_RENDERBUFFER_EXT, GL_DEPTH_COMPONENT24, cd->wtex, cd->htex);
// Attach texture to FrameBuffer
glFramebufferTexture2DEXT( GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0_EXT, cd->target, cd->color_buffer, 0 );
// Attach the Render Buffer to the Frame Buffer
glFramebufferRenderbufferEXT (GL_FRAMEBUFFER_EXT, GL_DEPTH_ATTACHMENT_EXT, GL_RENDERBUFFER_EXT, cd->depth_buffer );
// Checking the status
assert( GL_FRAMEBUFFER_COMPLETE_EXT==glCheckFramebufferStatusEXT( GL_FRAMEBUFFER_EXT ) );
// Unbinding
glBindRenderbufferEXT( GL_RENDERBUFFER_EXT, 0 );
glBindFramebufferEXT( GL_FRAMEBUFFER_EXT, 0 );
glBindTexture( cd->target, 0 ); |