OpenGL - Как растворить два последовательных кадра, которые рисуются в буфере экрана экрана - PullRequest
0 голосов
/ 23 февраля 2012

У меня есть вид для редактирования фотографий, который отображает вид OpenGL ES 2.0.
Я хочу дать эффект растворения между исходным изображением и отфильтрованным изображением.возможно ли использование OpenGL?

Ответы [ 2 ]

1 голос
/ 23 февраля 2012

Да, но вы должны иметь возможность связывать эти два разных изображения как отдельные текстуры для подачи в шейдер растворения. Если у вас есть такие, вы можете использовать фрагментный шейдер, как показано ниже:

 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.

0 голосов
/ 23 февраля 2012

Теоретически вам понадобится некоторая пороговая функция времени и пиксельного фактора. Чтобы описать подход более подробно, нам нужно знать, каков будет пиксельный фактор (альфа-канал, яркость, третья текстура ...). Взгляните на этот пример.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...