int GBuffer[5];
int GBufferFBO;
glGenTextures( 1,GBuffer);
for (int n=0; n < 4; n++){
glActiveTexture (GL_TEXTURE12 + n);
glBindTexture (GL_TEXTURE_2D,GBuffer[n]);
glTexParameteri (GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_NEAREST);
glTexParameteri (GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_NEAREST);
glTexImage2D (GL_TEXTURE_2D,0,GL_RGBA8, WIDTH , HEIGHT ,0,GL_RGBA,GL_UNSIGNED_BYTE,Null);
}
glGenTextures (1, &GBuffer[4]);
glActiveTexture (GL_TEXTURE11);
glBindTexture (GL_TEXTURE_2D,GBuffer[4]
glTexParameteri (GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_NEAREST);
glTexParameteri (GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_NEAREST);
glTexImage2D (GL_TEXTURE_2D,0,GL_DEPTH24_STENCIL8_EXT,WIDTH,HEIGHT,0,GL_DEPTH_COMPONENT,GL_UNSIGNED_BYTE,Null);
glGenFramebuffersEXT (1, &GBufferFBO);
glBindFramebufferEXT (GL_FRAMEBUFFER_EXT, GBufferFBO);
for (int n=0; n < 4; n++){
glFramebufferTexture2DEXT (GL_FRAMEBUFFER_EXT,GL_COLOR_ATTACHMENT0_EXT + n,GL_TEXTURE_2D,GBuffer[n],0);
}
glFramebufferTexture2DEXT (GL_FRAMEBUFFER_EXT,GL_DEPTH_ATTACHMENT_EXT,GL_TEXTURE_2D,GBuffer[4],0);
glDrawBuffers (4, {GL_COLOR_ATTACHMENT0_EXT,GL_COLOR_ATTACHMENT1_EXT,GL_COLOR_ATTACHMENT2_EXT,GL_COLOR_ATTACHMENT3_EXT});
switch glCheckFramebufferStatusEXT(GL_FRAMEBUFFER_EXT){
case GL_FRAMEBUFFER_COMPLETE_EXT:
printf ("FRAMEBUFFER_COMPLETE");break;
case GL_FRAMEBUFFER_UNSUPPORTED_EXT:
printf ("FBO configuration unsupported");break;
default:
printf ("FBO error");
}
glBindFramebufferEXT (GL_FRAMEBUFFER_EXT,0);
int LightBuffer;
int LightBufferFBO;
glGenTextures (1,&LightBuffer);
glActiveTexture (GL_TEXTURE10);
glBindTexture (GL_TEXTURE_2D,LightBuffer);
glTexParameteri (GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_NEAREST);
glTexParameteri (GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_NEAREST);
glTexImage2D (GL_TEXTURE_2D,0,GL_RGBA16F,WIDTH,HEIGHT,0,GL_RGBA,GL_UNSIGNED_BYTE,Null);
glGenFramebuffersEXT (1, &LightBufferFBO);
glBindFramebufferEXT (GL_FRAMEBUFFER_EXT, LightBufferFBO);
glFramebufferTexture2DEXT (GL_FRAMEBUFFER_EXT,GL_COLOR_ATTACHMENT0_EXT,GL_TEXTURE_2D,LightBuffer,0);
glFramebufferTexture2DEXT (GL_FRAMEBUFFER_EXT,GL_DEPTH_ATTACHMENT_EXT,GL_TEXTURE_2D,GBuffer[4],0);
glFramebufferTexture2DEXT (GL_FRAMEBUFFER_EXT,GL_STENCIL_ATTACHMENT_EXT,GL_TEXTURE_2D,GBuffer[4], 0);
switch glCheckFramebufferStatusEXT(GL_FRAMEBUFFER_EXT){
case GL_FRAMEBUFFER_COMPLETE_EXT:
printf ("FRAMEBUFFER_COMPLETE");break;
case GL_FRAMEBUFFER_UNSUPPORTED_EXT:
printf ("FBO configuration unsupported");break;
default:
printf ("FBO error");
}
glBindFramebufferEXT (GL_FRAMEBUFFER_EXT,0);