Bonjours,
je fait le rendu de mon jeu en utilisant des surfaces séparées (pour ensuite appliquer les ombres calculées par mon moteur de lumière), mais je me retrouve confronté a un problème de blending.
Un screen vaux mieux que mille mots:
Pseudocode du premier screen:
Problème de blending: mon sprite avec transparence se mélange avec les couleurs du framebuffer principal.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 effacerEcran(); afficherBackground(); lierFbo(); dessinerCouchePierre(); dessinerSpriteTransparent(); delierFbo(); dessinerFbo();
Pseudocode du second screen:
Le blending du sprite transparent est nickel dans ma surface, mais les zones transparentes de la couche de pierre sont opaques du coup...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 effacerEcran(); activerBlending(); afficherBackground(); lierFbo(); dessinerCouchePierre(); dessinerSpriteTransparent(); delierFbo(); desactiverBlending(); dessinerFbo();
Pour la transparence j'utilise le fameux blending:
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
Voila si quelqu'un a une idée de comment régler ce problème, j'ai déjà pas mal cherché mais je n'ai pas trouvé de solution.
Merci encore.
Edit:
Ah ben je viens de trouver juste après avoir posté le message, j'ai utilisé un alpha blending different pour afficher mon sprite avec transparence dans la surface:
glBlendFuncSeparate(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA, GL_ONE, GL_ONE);
Je laisse le sujet au cas ou quelqu'un se retrouverais confronté au même problème.
Partager