2011-05-18 4 views
6

So che glBlendFunc è la chiamata di funzione per specificare una modalità di fusione pixel.Come si miscelano i pixel in modalità Screen di tipo Photoshop in OpenGL?

posso fare lo Multiply Mode come in Photoshop, la cui formula è

C = A * B 

dove A è il pixel sorgente, B è il pixel di destinazione e C è risultato finale.

Utilizzo di glBlendFunc (GL_DST_COLOR, GL_ZERO) Otterrò questo effetto.

Quindi ora la mia domanda è come utilizzare il Screen Mode? La formula è:

C = 1 - (1 - A) * (1 - B) 

risposta

7

Non ha controllato, ma la strada da percorrere è la seguente.

Il built-in di calcolo che OpenGL non assomiglia a:

C = A*s + B*d 

cui è possibile scegliere le s e d.

Alcuni algebra ci dà

C = 1 - (1 - A) * (1 - B) = 
    = 1 - (1 - B) + A*(1 - B) = 
    = A*(1 - B) + B 

Let

s = 1 - B 
d = 1 

e si ottiene il valore che vogliamo. Quindi dovrebbe funzionare:

glBlendFunc(GL_ONE_MINUS_DST_COLOR, GL_ONE); 
+0

Algebra! Lo dimentico completamente! Grazie, ottima risposta. – trVoldemort

Problemi correlati