Bunu OpenGL ES 1.1 veya 2.0'da yapmak isteyip istemediğinizi belirtmezsiniz, bu nedenle, daha yeni 2.0'a atıfta bulunduğunuzu varsayacağım. 1.1 gerçekten sizin hedefinizse, Apple'ın GLImageProcessing example numarasındaki karışım modlarıyla oynamanız gerekir.
OpenGL ES 2.0 için, bu efektlerin her birine ulaşmak için parça gölgelendiricileri kullanabilirsiniz. Bir resmin bir gri skala sürümü için, aşağıdaki fragman gölgelendirici ile sadece parlaklık özü:
varying highp vec2 textureCoordinate;
uniform sampler2D inputImageTexture;
uniform lowp mat4 colorMatrix;
uniform lowp float intensity;
void main()
{
lowp vec4 textureColor = texture2D(inputImageTexture, textureCoordinate);
lowp vec4 outputColor = textureColor * colorMatrix;
gl_FragColor = (intensity * outputColor) + ((1.0 - intensity) * textureColor);
}
: Bir koyu kahverengi bir ton için
precision highp float;
varying vec2 textureCoordinate;
uniform sampler2D inputImageTexture;
const highp vec3 W = vec3(0.2125, 0.7154, 0.0721);
void main()
{
float luminance = dot(texture2D(inputImageTexture, textureCoordinate).rgb, W);
gl_FragColor = vec4(vec3(luminance), 1.0);
}
, ne this answer gösteri renkli matris manipülasyon gölgelendirici kullanabilir
self.colorMatrix = (GPUMatrix4x4){
{0.3588, 0.7044, 0.1368, 0},
{0.2990, 0.5870, 0.1140, 0},
{0.2392, 0.4696, 0.0912 ,0},
{0,0,0,0},
};
bir matris ile
ne demek hiçbir fikrim yok "RGB etkisi." Belki de renk matrisi manipülasyonunu kastediyorsunuz, bu durumda yukarıdaki durumda da sizin için çalışacaktır.
Bunların hepsi
benim açık kaynak
GPUImage çerçevesinde yerleşik filtreler (GPUImageBrightnessFilter, GPUImageContrastFilter, GPUImageSaturationFilter, GPUImageSepiaFilter ve GPUImageColorMatrixFilter bakınız) bulunmaktadır. Eğer OpenGL ES için yeni biriyseniz, sahneyi kurmak, UIImage'ınızı doku olarak çekmek, bir köşe ve parça gölgelendirici kullanmak, bu görüntüyü almak ve kaydetmek için oldukça fazla kod alacaksınız. UIImage olarak geri çekil. GPUImage hepsini sizin için birkaç satır Objective-C koduyla yapacağız.
bir göz atın http://stackoverflow.com/questions/3549396/image-processing-glamour-filter-in-iphone – janusbalatbat
@niks Parlaklık, kontrast ve doygunluk için kod sağlayabilir misiniz? – Nassif