Blending et framebuffer objet
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:
http://www.hapshack.com/images/tRlNr.png
Pseudocode du premier screen:
Code:
1 2 3 4 5 6 7
| effacerEcran();
afficherBackground();
lierFbo();
dessinerCouchePierre();
dessinerSpriteTransparent();
delierFbo();
dessinerFbo(); |
Problème de blending: mon sprite avec transparence se mélange avec les couleurs du framebuffer principal.
Pseudocode du second screen:
Code:
1 2 3 4 5 6 7 8 9
| effacerEcran();
activerBlending();
afficherBackground();
lierFbo();
dessinerCouchePierre();
dessinerSpriteTransparent();
delierFbo();
desactiverBlending();
dessinerFbo(); |
Le blending du sprite transparent est nickel dans ma surface, mais les zones transparentes de la couche de pierre sont opaques du coup...
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.