有什么方法可以使整个Android OpenGL ES场景透明化?

时间:2011-11-23 21:32:39

标签: android opengl-es

有没有办法让整个Android OpenGL ES场景透明化?这对小部件和壁纸很有用。

有一个特定于Android的答案here。但我的理解是,这种技术创造了一个透明的背景,人们可以在其上绘制透明的形状。

我正在寻找一种方法,使整个场景在绘制后变得透明。例如,有没有办法在绘制场景后更改整个颜色缓冲区的alpha值?

2 个答案:

答案 0 :(得分:3)

是的,这很容易。您需要使用正确的颜色和混合功能通过四边形覆盖整个视图来混合颜色缓冲区中的值。我认为这样做可以解决问题:

  • 正常绘制场景
  • 设置glBlendFunc(GL10.GL_ZERO, GL10.GL_SRC_COLOR)
  • 绘制一个无纹理的彩色四边形,用(R,G,B,A)=(1,1,1,a)覆盖整个视图,其中a是您想要的不透明度

这应该使用a来缩放colorbuffer的alpha值,我认为这就是你想要的。

答案 1 :(得分:0)

如果你可以要求API 14(Android 4.0),那么有一个新类可以解决这个问题:TextureView。这个Android Developers blog post中有一些关于它的信息。不幸的是,我不认为在以前版本的Android中有一种简单的方法可以做到这一点。