OpenGL - masque avec plusieurs textures
J'ai mis en œuvre de masquage en OpenGL selon le concept suivant:
- Le masque est composé de couleurs noir et blanc.
- Un de premier plan de la texture ne doit être visible dans les parties blanches du masque.
- Une texture d'arrière-plan ne devrait être visible dans les parties noires du masque.
Je peux faire le blanc ou le noir, le cadre de travail comme le suppose en utilisant glBlendFunc(), mais pas les deux en même temps, parce que la couche de premier plan non seulement des mélanges sur le masque, mais aussi sur le calque d'arrière-plan.
Est-il quelqu'un qui sait comment faire cela de la meilleure façon? J'ai été cherché sur le net et lire quelque chose sur les fragment shaders. Est-ce la voie à suivre?
Je sais qu'il y a un moyen de le faire, je suis sûr que c'est un simple masque de fonction, mais il a été âge depuis que j'ai utilisé OpenGL. Avez-vous vu: nehe.gamedev.net/data/lessons/lesson.asp?lesson=20
Merci pour la réponse rapide. Oui, mon application est basé sur ce tutoriel et qui fonctionne pour un masque avec une texture, mais quand j'utilise deux textures pour un masque comme indiqué ci-dessus, le résultat n'est pas ce que j'attendais: le premier plan, les couleurs de l'image également de fusion sur le calque d'arrière-plan au lieu de le masque. Dois-je poster une capture d'écran pour illustrer mon problème?
C'est un très basique (simple) pour un fragment shader. Cependant, je ne peux pas vous diriger à un bon Fixe en Fonction de la solution.
Merci pour la réponse rapide. Oui, mon application est basé sur ce tutoriel et qui fonctionne pour un masque avec une texture, mais quand j'utilise deux textures pour un masque comme indiqué ci-dessus, le résultat n'est pas ce que j'attendais: le premier plan, les couleurs de l'image également de fusion sur le calque d'arrière-plan au lieu de le masque. Dois-je poster une capture d'écran pour illustrer mon problème?
C'est un très basique (simple) pour un fragment shader. Cependant, je ne peux pas vous diriger à un bon Fixe en Fonction de la solution.
OriginalL'auteur red | 2011-02-23
Vous devez vous connecter pour publier un commentaire.
Cela devrait fonctionner:
Ce est assez difficile, alors, dites-moi si quelque chose n'est pas clair.
N'oubliez pas de demande un alpha tampon lors de la création de la GL contexte. Sinon, il est possible d'obtenir un contexte sans un alpha tampon.
Edit: Ici, j'ai fait une illustration.
Edit: Depuis la rédaction de cette réponse, j'ai appris qu'il existe de meilleures façons de le faire:
De la manière décrite dans cette réponse, travaille et n'est pas particulièrement pire dans les performances de ces 2 options de meilleure qualité, mais il est moins élégant et moins souple.
Est-il un moyen de le faire sans faire appel glBlendFuncSeparate? Il provoque des erreurs de segmentation avec ma carte graphique quand j'ai mis cette ligne dans.
Ce n'drawQuad faire?
Salut. Nan pas de travail pour moi. Pouvez-vous m'aider?
Il ne fonctionne pas pour moi non plus 🙁 Seul le premier plan est indiqué
OriginalL'auteur Stefan Monov