Sto imparando OpenGL ES 2.0 e mi piacerebbe creare un'app per capire meglio come funziona. L'app ha un set di filtri che l'utente può applicare alle immagini (lo so, niente di nuovo: P).Immagini e maschera in OpenGL ES 2.0
Uno di questo filtro prende due immagini e una maschera e mescola le due immagini che mostrano loro attraverso la maschera (qui un'immagine per spiegare meglio quello che voglio ottenere)
Al momento Sono davvero confuso e non so da dove iniziare a creare questo effetto. Non riesco a capire se devo lavorare con trame multiple e FrameBuffer multipli o posso lavorare con un singolo shader.
Avete qualche suggerimento per aiutarmi a fare questo progetto?
EDIT --------
ho trovato questa soluzione, ma quando uso come linee maschera al posto di cerchi il risultato è davvero "sgangherata", soprattutto se vengono ruotati linee.
precision highp float;
varying vec4 FragColor;
varying highp vec2 TexCoordOut;
uniform sampler2D textureA;
uniform sampler2D textureB;
uniform sampler2D mask;
void main(void){
vec4 mask_color = texture2D(mask, TexCoordOut);
if (mask_color.a > 0.0){
gl_FragColor = texture2D(textureA, TexCoordOut);
}else {
gl_FragColor = texture2D(textureB, TexCoordOut);
}
}
È probabilmente meglio utilizzare il buffer stencil o il blending?
BTW, non è necessario utilizzare il canale alfa ('mask_color.a') per la maschera. Puoi usare qualsiasi altro canale 'r',' g', 'b' e in questo modo salvi la memoria della GPU usando la texture mask senza canale alfa. – keaukraine
@MatterGoal Può essere possibile rispondere a questa domanda, http://stackoverflow.com/questions/24486729/uiimage-masking-with-gesture –