- 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);