casafa | Bonjour,
J'essaye d'implémenter les shadows volume dans mon programme.
1) Donc j'ai fait ma fonction qui affiche le volume d'ombre et elle fonctionne très bien.
2) Maintenant j'essaye d'afficher l'ombre grace au sencil buffer mais ça ne fonctionne pas :
Code :
- //On rempli le sencil buffer
- glDepthMask(0);
- glColorMask(0, 0, 0, 0);
- glDisable(GL_CULL_FACE);
- glEnable(GL_STENCIL_TEST);
- glEnable(GL_STENCIL_TEST_TWO_SIDE_EXT);
- glClear(GL_STENCIL_BUFFER_BIT);
- glActiveStencilFaceEXT(GL_BACK);
- glStencilOp(GL_KEEP, // stencil test fail
- GL_KEEP, // depth test fail
- GL_DECR_WRAP_EXT); // depth test pass
- glStencilMask(~0);
- glStencilFunc(GL_ALWAYS, 0, ~0);
- glActiveStencilFaceEXT(GL_FRONT);
- glStencilOp(GL_KEEP, // stencil test fail
- GL_KEEP, // depth test fail
- GL_INCR_WRAP_EXT); // depth test pass
- glStencilMask(~0);
- glStencilFunc(GL_ALWAYS, 0, ~0);
- CShadowVolume::showShadowVolume(this, entities); //dessine le volume d'ombre
- glColorMask(1, 1, 1, 1);
- glStencilFunc(GL_EQUAL, 0, ~0);
- glStencilOp(GL_KEEP, GL_KEEP, GL_KEEP);
- //Affiche du gris aux zones d'ombre
- glColor3f(0.7, 0.7, 0.7);
- glMatrixMode(GL_PROJECTION);
- glPushMatrix();
- glLoadIdentity();
- glOrtho(0.0, CRendererOGL::getSceneWidth(), CRendererOGL::getSceneHeight(), 0.0, -1.0, 1.0);
- glMatrixMode(GL_MODELVIEW);
- glPushMatrix();
- glLoadIdentity();
- glBegin(GL_QUADS);
- glVertex2f(0.0, 0.0);
- glVertex2f(CRendererOGL::getSceneWidth(), 0.0);
- glVertex2f(CRendererOGL::getSceneWidth(), CRendererOGL::getSceneHeight());
- glVertex2f(0.0, CRendererOGL::getSceneHeight());
- glEnd();
- glMatrixMode(GL_PROJECTION);
- glPopMatrix();
- glMatrixMode(GL_MODELVIEW);
- glPopMatrix();
- glColor3f(1.0, 1.0, 1.0);
- glDisable(GL_STENCIL_TEST);
- glDisable(GL_STENCIL_TEST_TWO_SIDE_EXT);
- glDepthMask(1);
- glEnable(GL_CULL_FACE);
|
J'ai un écran tout gris....et le pire c'es si je remplace cette ligne glStencilFunc(GL_EQUAL, 0, ~0) par glStencilFunc(GL_NOTEQUAL, 0, ~0), j'ai aussi un écran tout gris. Alors que le gris devrait être affiché qu'aux zones d'ombre
Merci d'avance... Message édité par casafa le 04-05-2007 à 22:48:20
|