Modes de mélange dans Cocos2D avec glBlendFunc

9

Nous avons essayé de reproduire les modes de fusion les plus courants disponibles dans Photoshop et Quartz 2D, mais nous n'en avons proposé que 3 et c'est après une longue recherche en ligne.

Pour toute personne intéressée, les voici:

  • Multiplier = GL_DST_COLOR, GL_ONE_MINUS_SRC_ALPHA
  • Écran = GL_MINUS_DST_COLOR, GL_ONE
  • Esquive linéaire = GL_ONE, GL_ONE

Vous pouvez essayer ces modes et d'autres en action en ligne, sur ce site très utile: http://www.andersriggelsen.dk/glblendfunc.php

Maintenant, nous apprécierions que quelqu'un puisse nous fournir des modes de mélange supplémentaires que nous pouvons recréer dans Cocos2D, car notre expérience Open GL est vraiment, vraiment limitée.

Merci d'avance!

Argiris

Argiris
la source
1
Esquive linéaire (Ajouter) = GL_ONE, GL_ONE cela se comporte-t-il de la même manière que pour andersriggelsen.dk/glblendfunc.php et photoshop? ça rend les sprites transparents? ne travaille pas pour moi
Rakka Rage

Réponses:

4

La mauvaise nouvelle est que vous ne pouvez pas implémenter tous les modes de fusion de Photoshop avec glBlendFunc, même s'il existe un bazillion de combinaisons que vous pouvez utiliser.

La bonne nouvelle est que lorsque vous passez aux shaders, le livre orange (OpenGL Shading Language, http://www.amazon.com/exec/obidos/ASIN/0321637631/khongrou-20 ) contient un chapitre avec des shaders pour émuler le mélange de Photoshop. modes.

Heureusement, tout ce dont vous aurez probablement besoin dans le monde du pré-shader sont les trois modes de mélange les plus courants;

  • Ajouter: GL_ONE, GL_ONE
  • Mélange: GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA
  • Multiplier: divers, comme celui que vous avez mentionné: GL_DST_COLOR, GL_ONE_MINUS_SRC_ALPHA

MODIFIER :

Question connexe (presque en double) sur stackoverflow: /programming/818230/photoshop-blending-mode-to-opengl-es-without-shaders

Shaders de mélange Photoshop: http://mouaif.wordpress.com/2009/01/05/photoshop-math-with-glsl-shaders/

Jari Komppa
la source