简体   繁体   中英

How to Blend/Blur Two Images in OpenglES/OpenGl , So that output looks like a windows aero theme

I am in process of implementing this Windows aero theme on my Arm Mali GPU Follow this image, i want a effect like this checkout this http://vistastyles.org/wp-content/uploads/2007/06/windows_aero_by_blingboy31.jpg

my question is how do identify which area of image(top) is intermixed with image(bottom) it may possible that there may be multiple images getting overlapped, So do i need to take weight of each image or layer to identify the amount of blur to show.. ??

& how do i draw the images ? do i need to draw the blur image of background first & then normal image or other way??

Any help is appericiated...

SEASON 2 / * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * / Well I tried the datenWolf's way, But stucked at blur shader

I used this fragment shader for blurring but it doesn't give the exact Translucent effect, I wish to get

#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);
}

I was looking for a Blur effect as shown in this link http://incubator.quasimondo.com/processing/superfast_blur.php

but this software algorithm is not working in my code, Any help for a Blur Shader With this kind of effect will be helpful, I am using OpenGLES 2.0 on Arm mali

There's no detection process involved in window composition. Every window is available as a separate texture and the windows are drawn in depth order using a blurring step inbetween.

It is done about this. You have two framebuffer objects A and B for the whole screen. Foreach window you

  1. draw the area the window covers from B to A with a blurring filter applied
  2. you draw the actual window contents on top of this to B
  3. swap A←→B

repeat for every window in depth order. Basically this comes out as a number of texture switches, and although those are sort of expensive, the number of (overlapping) windows on a screen will always be within reasonable figures, so this is not really a problem.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM