Modalità di fusione in Cocos2D con glBlendFunc


9

Abbiamo cercato di replicare i metodi di fusione più comuni disponibili in Photoshop e Quartz 2D, ma ne abbiamo escogitati solo 3 e dopo una lunga ricerca online.

Per chiunque sia interessato, eccoli qui:

  • Moltiplica = GL_DST_COLOR, GL_ONE_MINUS_SRC_ALPHA
  • Schermo = GL_MINUS_DST_COLOR, GL_ONE
  • Scherma lineare = GL_ONE, GL_ONE

Puoi provare queste e altre modalità simili in azione online, su questo utilissimo sito Web: http://www.andersriggelsen.dk/glblendfunc.php

Ora, apprezzeremmo se qualcuno potesse fornirci ulteriori metodi di fusione che possiamo ricreare all'interno di Cocos2D, poiché la nostra esperienza Open GL è davvero molto limitata.

Grazie in anticipo!

Argiris


1
Scherma lineare (Aggiungi) = GL_ONE, GL_ONE si comporta allo stesso modo di andersriggelsen.dk/glblendfunc.php e photoshop? rende gli sprite trasparenti? non funziona per me
Rakka Rage,

Risposte:


4

La cattiva notizia è che non puoi implementare tutte le modalità di fusione di Photoshop con glBlendFunc, anche se ci sono un sacco di combinazioni che puoi usare.

La buona notizia è che, quando passi agli shader, il libro arancione (OpenGL Shading Language, http://www.amazon.com/exec/obidos/ASIN/0321637631/khongrou-20 ) contiene un capitolo con shader per emulare la miscela di Photoshop modalità.

Fortunatamente tutto ciò di cui avrete probabilmente bisogno nel mondo pre-shader sono le tre modalità di fusione più comuni;

  • Aggiungi: GL_ONE, GL_ONE
  • Miscela: GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA
  • Moltiplicare: vari, come quello che hai menzionato: GL_DST_COLOR, GL_ONE_MINUS_SRC_ALPHA

MODIFICA :

Domanda correlata (quasi duplicata) su stackoverflow: /programming/818230/photoshop-blending-mode-to-opengl-es-without-shaders

Shader di fusione Photoshop: http://mouaif.wordpress.com/2009/01/05/photoshop-math-with-glsl-shaders/

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.