Je sais que beaucoup de résoudre faire l'effet de l'image. Mais je choisis GPUImage (GPUImageLookupFilter
) fais mon image.
Mon code source est utilisé.
IO - Objectif-c GPUImage Filtre de recherche faire l'effet avec l'image de recherche 4x4
GPUImagePicture *sourceImagePic = [[GPUImagePicture alloc] initWithImage:sourceImage];
GPUImagePicture *lookupImageSource = [[GPUImagePicture alloc] initWithImage:[UIImage imageNamed:@"lookup.png"]];
GPUImageLookupFilter *lookupImageFilter = [[GPUImageLookupFilter alloc] init];
[sourceImagePic addTarget:lookupImageFilter];
[lookupImageSource addTarget:lookupImageFilter];
[lookupImageFilter useNextFrameForImageCapture];
[sourceImagePic processImage];
[lookupImageSource processImage];
resultImage = [lookupImageFilter imageFromCurrentFramebufferWithOrientation:UIImageOrientationUp];
return resultImage;
Tout d'abord j'utiliser l'image recherche 8x8 (512)
Mais quand je travaille avec l'image de tableau (pouce vidéo ou le choix de nombreuses images dans la bibliothèque) mémoire supérieure.
Je pense que si j'utilise une petite image de recherche (4x4), la mémoire peut être réduite. Je fais une image de recherche 4x4 (16).
et j'essaie modifier le code de GPUImageLookupFilter
mais ça marche pas.
void main(){
highp vec4 textureColor = texture2D(inputImageTexture, textureCoordinate);
highp float blueColor = textureColor.b * 63.0;
highp vec2 quad1;
quad1.y = floor(floor(blueColor)/8.0);
quad1.x = floor(blueColor) - (quad1.y * 8.0);
highp vec2 quad2;
quad2.y = floor(ceil(blueColor)/8.0);
quad2.x = ceil(blueColor) - (quad2.y * 8.0);
highp vec2 texPos1;
texPos1.x = (quad1.x * 0.125) + 0.5/512.0 + ((0.125 - 1.0/512.0) * textureColor.r);
texPos1.y = (quad1.y * 0.125) + 0.5/512.0 + ((0.125 - 1.0/512.0) * textureColor.g);
highp vec2 texPos2;
texPos2.x = (quad2.x * 0.125) + 0.5/512.0 + ((0.125 - 1.0/512.0) * textureColor.r);
texPos2.y = (quad2.y * 0.125) + 0.5/512.0 + ((0.125 - 1.0/512.0) * textureColor.g);
lowp vec4 newColor1 = texture2D(inputImageTexture2, texPos1);
lowp vec4 newColor2 = texture2D(inputImageTexture2, texPos2);
lowp vec4 newColor = mix(newColor1, newColor2, fract(blueColor));
gl_FragColor = mix(textureColor, vec4(newColor.rgb, textureColor.w), intensity);
}
Vous pouvez me aider à modifier ce code de travail avec l'image 4x4.
Merci !.
pourquoi vous ne changez pas 63,0? Je change est 15,0? –
pourquoi c'est 63? 63 = 2^6 - 1? –
merci. ça marche. 63,0 est inconnu :). –