Как смешать / размыть два изображения в OpenglES/OpenGl, чтобы выходные данные выглядели как тема Windows Aero

Я нахожусь в процессе реализации этой темы Windows Aero на моем графическом процессоре Arm Mali. Следуйте этому изображению, я хочу получить эффект, подобный этой проверке этого http://vistastyles.org/wp-content/uploads/2007/06/windows_aero_by_blingboy31.jpg

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

& как мне нарисовать изображения? мне нужно нарисовать размытие изображения фона, а затем нормальное изображение или другим способом?

Любая помощь оценена...

СЕЗОН 2/*******************************************/ Ну, я пытался путь datenWolf, но застрял в шейдер размытия

Я использовал этот фрагментный шейдер для размытия, но он не дает точного эффекта полупрозрачности, я хочу получить

#version 120

uniform sampler2D sceneTex;

uniform float rt_w;
uniform float rt_h;
uniform float vx_offset;

float offset[3] = float[]( 0.0, 1.3846153846, 3.2307692308 );
float weight[3] = float[]( 0.2270270270, 0.3162162162, 0.0702702703 );

void main() 
{ 
  vec3 tc = vec3(1.0, 0.0, 0.0);
  if (gl_TexCoord[0].x<(vx_offset-0.01))
  {
    vec2 uv = gl_TexCoord[0].xy;
    tc = texture2D(sceneTex, uv).rgb * weight[0];
    for (int i=1; i<3; i++) 
    {
      tc += texture2D(sceneTex, uv + vec2(offset[i])/rt_w, 0.0).rgb * weight[i];
      tc += texture2D(sceneTex, uv - vec2(offset[i])/rt_w, 0.0).rgb * weight[i];
    }
  }
  else if (gl_TexCoord[0].x>=(vx_offset+0.01))
  {
    tc = texture2D(sceneTex, gl_TexCoord[0].xy).rgb;
  }
  gl_FragColor = vec4(tc, 1.0);
}

Я искал эффект размытия, как показано в этой ссылке http://incubator.quasimondo.com/processing/superfast_blur.php

но этот программный алгоритм не работает в моем коде, любая помощь для шейдера Blur С этим эффектом будет полезно, я использую OpenGLES 2.0 на Arm mali

1 ответ

Там нет процесса обнаружения, участвующих в композиции окна. Каждое окно доступно в виде отдельной текстуры, и окна отрисовываются в порядке глубины, используя шаг размывания между ними.

Это сделано по этому поводу. У вас есть два объекта кадрового буфера A и B для всего экрана. Foreach окно, которое вы

  1. Нарисуйте область, покрывающую окна от B до A с примененным фильтром размытия
  2. Вы рисуете фактическое содержимое окна поверх этого в B
  3. поменять местами ← ← B

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

Другие вопросы по тегам