Je suis en train de coder un simple jeu de course automobile. En essayant d'ajouter des ombres dans ma scène, en dessinant des polygones noirs transparents, je me suis retrouvé coincé dans un étrange problème. Quand les ombres sont dessinées sur des surfaces horizontales, quand je les regarde de loin, je peux voir à travers les surfaces comme si elles étaient transparentes.Les polygones transparents rendent également transparentes les surfaces sous-jacentes
void PolyShadow::Draw(){
glColor4f(0,0,0,0.5f);
glEnable (GL_BLEND);
glBlendFunc (GL_DST_COLOR,GL_ONE_MINUS_SRC_ALPHA);
this->drawShadow();
glDisable (GL_BLEND);
shadow_initialized = true;
}
Pour éviter les conflits i attribuons à un objet ombres projeter un autre shadow_offset et de faire cet appel avant de dessiner l'ombre
glEnable(GL_POLYGON_OFFSET_FILL);
//call to object.drawShadows()
glDisable(GL_POLYGON_OFFSET_FILL);
Et
void Object::drawShadows(){
glPolygonOffset(-1.0-shadow_offset,-1.0-shadow_offset);
//Draw shadow
}
J'ai aussi essayé avec
glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
mais rien n'a changé.
Merci à l'avance
Merci beaucoup! Je vais travailler dessus –