Да, но вы должны иметь возможность связывать эти два разных изображения как отдельные текстуры для подачи в шейдер растворения. Если у вас есть такие, вы можете использовать фрагментный шейдер, как показано ниже:
varying highp vec2 textureCoordinate;
uniform sampler2D inputImageTexture;
uniform sampler2D inputImageTexture2;
uniform lowp float mixturePercent;
void main()
{
lowp vec4 textureColor = texture2D(inputImageTexture, textureCoordinate);
lowp vec4 textureColor2 = texture2D(inputImageTexture2, textureCoordinate);
gl_FragColor = mix(textureColor, textureColor2, mixturePercent);
}
, где inputImageTexture
и inputImageTexture2
- ваши текстуры для смешивания, а mixedPercent - это степень, в которой второе изображение перекрывает первое.
Выше было взято из моего GPUImage фреймворка с открытым исходным кодом, который может немного упростить вашу работу по фильтрации изображений. Вы можете предоставить исходное изображение в виде GPUImagePicture, добавить к нему цель GPUImageDissolveBlendFilter, добавить другую цель в GPUImagePicture для фильтра (или цепочки фильтров), который вы хотите применить, а затем добавить цель того же GPUImageDissolveBlendFilter. для последнего фильтра там. Изменяя mix
на смеси, вы можете раствориться между исходным изображением и отфильтрованным.
GPUImage использует OpenGL ES 2.0 за кулисами, но он отвлекает часть прямого взаимодействия с OpenGL ES.