Dans libGdx, je suis en train de créer une texture en forme: Prenez une texture rectangulaire entièrement visible et un masque pour obtenir une texture en forme, comme indiqué ici:LibGDX mélange de textures avec fonction mélange OpenGL
Ici, je le teste sur un rectangle, mais je veux l'utiliser sur n'importe quelle forme. Je l'ai regardé dans this tutorial et est venu avec une idée d'abord dessiner la texture, puis le masque avec la fonction mouchetée:
batch.setBlendFunction(GL20.GL_ZERO, GL20.GL_SRC_ALPHA);
- GL20.GL_ZERO - parce que je ne veux vraiment pas peindre des pixels de la masque
- GL20.GL_SRC_ALPHA - à partir de la texture d'origine je veux peindre uniquement ces pixels, où le masque était visible (= blanc).
partie cruciale du code de test:
batch0.enableBlending();
batch0.begin();
batch0.draw(original, 0, 0); //to see the original
batch0.draw(mask, width1, 0); //and the mask
batch0.draw(original, 0, height1); //base for the result
batch0.setBlendFunction(GL20.GL_ZERO, GL20.GL_SRC_ALPHA);
batch0.draw(mask, 0, height1); //draw mask on result
batch0.setBlendFunction(GL20.GL_SRC_ALPHA, GL20.GL_ONE_MINUS_SRC_ALPHA);
batch0.end();
Le centre de The de get texture bien choisi, mais au lieu de la couleur transparente autour, je vois noir:
Pourquoi le résultat est-il vide et non transparent?
(Full code - Attention: très salissant)
Pouvez-vous parler plus en détail quelles sont vos attentes? Comment déterminez-vous que le résultat n'est pas transparent? Je pense que votre alpha de destination sera zéro, donc en ce sens, il serait transparent. Aviez-vous quelque chose d'autre dans la région qui est maintenant noir, et vous vous attendiez à ce que le contenu précédent soit toujours là? –
Oui, l'arrière-plan de l'application est constitué de carrés rouge et vert foncé, et il n'y a rien de noir à tracer, donc si la texture était transparente, je verrais les carrés, n'est-ce pas? – kajacx