Смешайте режимы в Cocos2D с glBlendFunc

9

Мы пытались воспроизвести наиболее распространенные режимы наложения , которые доступны в Photoshop и Quartz 2D, но мы только придумали 3, и это после долгого поиска в Интернете.

Для тех, кто заинтересован, вот они:

  • Умножить = GL_DST_COLOR, GL_ONE_MINUS_SRC_ALPHA
  • Экран = GL_MINUS_DST_COLOR, GL_ONE
  • Линейный Dodge = GL_ONE, GL_ONE

Вы можете попробовать эти и другие подобные режимы в действии онлайн на этом очень полезном веб-сайте: http://www.andersriggelsen.dk/glblendfunc.php

Теперь мы были бы признательны, если бы кто-нибудь мог предоставить нам дополнительные режимы наложения, которые мы можем воссоздать в Cocos2D, поскольку наш опыт работы с Open GL действительно очень ограничен.

Заранее спасибо!

Argiris

Argiris
источник
1
Linear Dodge (Add) = GL_ONE, GL_ONE - это для вас так же, как на andersriggelsen.dk/glblendfunc.php и photoshop? это делает спрайты прозрачными? не работает для меня
Rakka Rage

Ответы:

4

Плохая новость заключается в том, что вы не можете реализовать все режимы наложения фотошопа с помощью glBlendFunc, даже если есть несколько комбинаций, которые вы можете использовать.

Хорошей новостью является то, что при переходе к шейдерам оранжевая книга (OpenGL Shading Language, http://www.amazon.com/exec/obidos/ASIN/0321637631/khongrou-20 ) содержит главу с шейдерами для эмуляции смеси фотошопа. режимы.

К счастью, все, что вам, вероятно, когда-либо понадобится в мире пре-шейдеров, это три самых распространенных режима смешивания;

  • Добавить: GL_ONE, GL_ONE
  • Смесь: GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA
  • Умножьте: различное, например, упомянутое вами: GL_DST_COLOR, GL_ONE_MINUS_SRC_ALPHA

РЕДАКТИРОВАТЬ :

Смежный (почти дублирующий) вопрос по stackoverflow: /programming/818230/photoshop-blending-mode-to-opengl-es-without-shaders

Фотошоп смешивания шейдеров: http://mouaif.wordpress.com/2009/01/05/photoshop-math-with-glsl-shaders/

Яри ​​Комппа
источник