Modos de mesclagem no Cocos2D com glBlendFunc

9

Tentamos replicar os modos de mesclagem mais comuns disponíveis no Photoshop e no Quartz 2D, mas criamos apenas 3 e isso após algumas pesquisas on-line.

Para qualquer pessoa interessada, aqui estão elas:

  • Multiplicar = GL_DST_COLOR, GL_ONE_MINUS_SRC_ALPHA
  • Tela = GL_MINUS_DST_COLOR, GL_ONE
  • Esquivar linear = GL_ONE, GL_ONE

Você pode experimentar estes e outros modos em ação on-line, neste site muito útil: http://www.andersriggelsen.dk/glblendfunc.php

Agora, gostaríamos que alguém nos fornecesse modos de mesclagem adicionais que podemos recriar dentro do Cocos2D, já que nossa experiência Open GL é muito, muito limitada.

Agradeço antecipadamente!

Argiris

Argiris
fonte
11
Esquivar linear (adicionar) = GL_ONE, GL_ONE isso se comporta para você da mesma forma que em andersriggelsen.dk/glblendfunc.php e photoshop? faz sprites transparentes? não funciona para mim
Rakka Raiva

Respostas:

4

A má notícia é que você não pode implementar todos os modos de mesclagem do photoshop com o glBlendFunc, mesmo havendo um bazilhão de combinações que você pode usar.

A boa notícia é que, quando você muda para shaders, o livro laranja (OpenGL Shading Language, http://www.amazon.com/exec/obidos/ASIN/0321637631/khongrou-20 ) contém um capítulo com shaders para emular a mistura do photoshop modos.

Felizmente, tudo o que você provavelmente precisará no mundo pré-shader são os três modos de mistura mais comuns;

  • Adicionar: GL_ONE, GL_ONE
  • Mistura: GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA
  • Multiplicar: vários, como o que você mencionou: GL_DST_COLOR, GL_ONE_MINUS_SRC_ALPHA

EDIT :

Pergunta relacionada (quase duplicada) sobre stackoverflow: /programming/818230/photoshop-blending-mode-to-opengl-es-without-shaders

Shaders de mistura do Photoshop: http://mouaif.wordpress.com/2009/01/05/photoshop-math-with-glsl-shaders/

Jari Komppa
fonte