Ответ 1
Один из способов достижения этой цели - использовать дополнительную текстуру, чтобы указать, чтобы шейдер фрагмента применял деформацию. Вы можете изменить это содержимое текстуры из приложения, когда пользователь коснется изображения, чтобы применить деформации.
GPUImageBulgeDistortionFilter extends GPUImageFilter, который предназначен для использования только одной текстуры.
Вам нужно будет дублировать привязку текстуры (glBindTexture) и назначить шейдер фрагмента (glUniform1i) в GPUImageFilter, используя 1 для новой текстуры (вместо 0). Вам также потребуется дублировать glGetUniformLocation и использовать другое имя вместо inputImageTexture, например inputImageTexture2.
Измените шейдер фрагмента в GPUImageBulgeDistortionFilter или создайте новый класс, полученный из GPUImageBulgeDistortionFilter, чтобы добавить "единый файл sampler2D inputImageTexture2;\n" +
Наконец, добавьте код для использования inputImageTexture2 texels для деформирования данных на inputImageTexture в том же фрагментаторе.