Ich lerne OpenGL ES 2.0 und ich möchte eine App erstellen, um besser zu verstehen, wie es funktioniert. Die App hat eine Reihe von Filtern, die der Benutzer auf Bilder anwenden kann (ich weiß, nichts neues: P).Bilder und Maske in OpenGL ES 2.0
Einer dieser Filter nimmt zwei Bilder und eine Maske und es mischt die zwei Bilder, um sie durch den Maske zeigen (hier ein Bild besser zu erklären, was ich erreichen will)
Im Moment Ich bin wirklich verwirrt und ich weiß nicht, wo ich anfangen soll, diesen Effekt zu erzeugen. Ich kann nicht verstehen, ob ich mit mehreren Texturen und mehreren FrameBuffern arbeiten muss oder einfach mit einem einzelnen Shader arbeiten kann.
Haben Sie Hinweise, um mir bei diesem Projekt zu helfen?
EDIT --------
Ich habe diese Lösung gefunden, aber wenn ich als Maske Linien anstelle der Kreise verwenden das Ergebnis ist wirklich „grungy“, vor allem, wenn Linien gedreht werden.
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);
}
}
Ist es wahrscheinlich besser, Stencil Buffer oder Blending zu verwenden?
BTW, Sie müssen nicht Alpha ('mask_color.a') Kanal für Maske verwenden. Sie können jeden anderen 'r',' g', 'b' Kanal verwenden und auf diese Weise speichern Sie den GPU-Speicher mit Hilfe der Maskentextur ohne Alphakanal. – keaukraine
@MatterGoal Möglicherweise können Sie diese Frage beantworten, http://stackoverflow.com/questions/24486729/uiimage-masking-with-gesture –