0
I das folgende Fragment-Shader-haben:OpenGL ES drehen Textur
varying highp vec2 coordinate;
precision mediump float;
uniform vec4 maskC;
uniform float threshold;
uniform sampler2D videoframe;
uniform sampler2D videosprite;
uniform vec4 mask;
uniform vec4 maskB;
uniform int recording;
vec3 normalize(vec3 color, float meanr)
{
return color*vec3(0.75 + meanr, 1., 1. - meanr);
}
void main() {
float d;
float dB;
float dC;
float meanr;
float meanrB;
float meanrC;
float minD;
vec4 pixelColor;
vec4 spriteColor;
pixelColor = texture2D(videoframe, coordinate);
spriteColor = texture2D(videosprite, coordinate);
meanr = (pixelColor.r + mask.r)/8.;
meanrB = (pixelColor.r + maskB.r)/8.;
meanrC = (pixelColor.r + maskC.r)/8.;
d = distance(normalize(pixelColor.rgb, meanr), normalize(mask.rgb, meanr));
dB = distance(normalize(pixelColor.rgb, meanrB), normalize(maskB.rgb, meanrB));
dC = distance(normalize(pixelColor.rgb, meanrC), normalize(maskC.rgb, meanrC));
minD = min(d, dB);
minD = min(minD, dC);
gl_FragColor = spriteColor;
if (minD > threshold) {
gl_FragColor = pixelColor;
}
}
jetzt, je nachdem, ob recording
0 oder 1 ist, möchte ich uniform sampler2D videosprite
180 Grad drehen (Reflexion in X-Achse, vertikal kippen). Wie kann ich das machen?
Ich habe die Funktion glRotatef() gefunden, aber wie gebe ich an, dass ich die videosprite
und nicht die videoframe
drehen möchte?