Hi there!
I’m developing a Deferred Shading and when I show my 4 buffers appear to be a problem with culling.
drawMaterial code (image 1)
//*///-----------------------------------------------------------------------------------------
void DeferredShader::drawMaterial( )
{
glViewport( 0, 0, m_width, m_height);
GLenum buffers[] = { GL_COLOR_ATTACHMENT0_EXT, GL_COLOR_ATTACHMENT1_EXT, GL_COLOR_ATTACHMENT2_EXT, GL_COLOR_ATTACHMENT3_EXT/*, GL_DEPTH_ATTACHMENT_EXT*/ };
glDrawBuffers( 4, buffers );
checkFBO( );
glClearColor( 0.0, 0.0, 0.0, 0.0);
glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );
glEnable(GL_DEPTH);
glEnable(GL_DEPTH_TEST);
glDepthFunc(GL_LESS);
glDepthRange(0.0, 1.0); // The default z mapping
glStencilMask(GL_FALSE);
glDisable(GL_TEXTURE_GEN_S);
glDisable(GL_TEXTURE_GEN_T);
glDisable(GL_TEXTURE_GEN_R);
glDisable(GL_TEXTURE_GEN_Q);
glCullFace(GL_BACK);
//glShadeModel(GL_SMOOTH);
//glEnable(GL_LIGHTING);
glEnable(GL_COLOR_MATERIAL);
glEnable(GL_NORMALIZE);
glEnable(GL_TEXTURE_2D);
glEnable(GL_ALPHA_TEST);
glDepthMask(GL_TRUE);
glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE);
glPushMatrix( );
// draw raw scene geometry
m_pMRTShader->setUp( m_pMRTShader->getConfiguration( ) );
m_pMRTShader->beginTextures( );
m_pMRTShader->begin( );
// Formato para el shader
static Entity3D xForm;
const Matrix4 mEffectFormat = xForm.getWorldMatrix( ).transpose( );
glMultiTexCoord4fv(GL_TEXTURE1, mEffectFormat[0]);
glMultiTexCoord4fv(GL_TEXTURE2, mEffectFormat[1]);
glMultiTexCoord4fv(GL_TEXTURE3, mEffectFormat[2]);
glutSolidTeapot( 2000.0f );
m_pMRTShader->endTextures( );
m_pMRTShader->end( );
glPopMatrix( );
}
show FBOs source code (image 2):
//*///-----------------------------------------------------------------------------------------
void DeferredShader::showTest( )
{
glViewport(0, 0, m_width, m_height);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(0.0, 1.0, 1.0, 0.0, -1.0, 1.0);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
m_pFBOTestShader->begin( );
m_pFBOTestShader->setUniform1i("FBO", 0);
glActiveTexture(GL_TEXTURE0);
glBindTexture(GL_TEXTURE_2D, m_mrtTexture[0]);
glBegin(GL_QUADS);
glTexCoord2i(0, 1); glVertex2f(0.0f, 0.0f);
glTexCoord2i(1, 1); glVertex2f(0.5f, 0.0f);
glTexCoord2i(1, 0); glVertex2f(0.5f, 0.5f);
glTexCoord2i(0, 0); glVertex2f(0.0f, 0.5f);
glEnd( );
glBindTexture(GL_TEXTURE_2D, m_mrtTexture[1]);
glBegin(GL_QUADS);
glTexCoord2i(0, 1); glVertex2f(0.5f, 0.0f);
glTexCoord2i(1, 1); glVertex2f(1.0f, 0.0f);
glTexCoord2i(1, 0); glVertex2f(1.0f, 0.5f);
glTexCoord2i(0, 0); glVertex2f(0.5f, 0.5f);
glEnd( );
glBindTexture(GL_TEXTURE_2D, m_mrtTexture[2]);
glBegin(GL_QUADS);
glTexCoord2i(0, 1); glVertex2f(0.0f, 0.5f);
glTexCoord2i(1, 1); glVertex2f(0.5f, 0.5f);
glTexCoord2i(1, 0); glVertex2f(0.5f, 1.0f);
glTexCoord2i(0, 0); glVertex2f(0.0f, 1.0f);
glEnd( );
glBindTexture(GL_TEXTURE_2D, m_mrtTexture[3]);
glBegin(GL_QUADS);
glTexCoord2i(0, 1); glVertex2f(0.5f, 0.5f);
glTexCoord2i(1, 1); glVertex2f(1.0f, 0.5f);
glTexCoord2i(1, 0); glVertex2f(1.0f, 1.0f);
glTexCoord2i(0, 0); glVertex2f(0.5f, 1.0f);
glEnd( );
m_pFBOTestShader->end( );
}
I test some combinations like, disable culling, change render CW, CCW and nothing appear to run ok.
Thanks in advance.