0

我正在我的 Arm Mali GPU 上实现这个 Windows 航空主题 按照这张图片,我想要这样的效果,看看这个 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所示

但是这个软件算法在我的代码中不起作用,对模糊着色器有任何帮助这种效果会有帮助,我在 Arm mali 上使用 OpenGLES 2.0

4

1 回答 1

2

窗口合成不涉及检测过程。每个窗口都可以作为单独的纹理使用,并且窗口是使用中间的模糊步骤按深度顺序绘制的。

它是这样做的。整个屏幕都有两个帧缓冲区对象AB。Foreach窗口你

  1. 使用模糊过滤器绘制从BA的窗口覆盖区域
  2. 您将在此之上的实际窗口内容绘制到B
  3. 交换 A←→B

按深度顺序对每个窗口重复。基本上这是作为一些纹理开关出现的,虽然这些有点昂贵,但屏幕上(重叠)窗口的数量总是在合理的数字范围内,所以这不是一个真正的问题。

于 2012-07-22T16:47:18.730 回答