如何在android中使用透明背景在GLSurfaceview顶部添加文本?

时间:2011-09-12 14:13:15

标签: android opengl-es glsurfaceview

我有一个父视图组,它有一个背景,包含一个openglview作为该视图组的一部分。

我想要的是,我需要一个透明背景的openglview,我希望能够看到父背景,我希望能够在openglview上面写文字,我不想使用纹理即可。

我尝试了这个选项,

  1. 将openglview zorderontop设为true 。它让我的文字落后于glview。如果我不使zorderontop为真,背景为黑色。

  2. 转换主题设置为使我的glview以及父视图组变为透明的活动。

  3. 我尝试通过膨胀包含glview的布局,并使用 ContexThemeWrapper 类动态更改glview的主题。但 setTheme()在运行时无效。只在清单文件中应用主题才有效。

  4. 将布局背景应用于透明也没有用,仍然是黑色背景。

1 个答案:

答案 0 :(得分:3)

问题在于您要绘制两个单独的曲面:一个是由ViewRoot创建的曲面,另一个是为GLSurfaceView创建的曲面。这些表面由SurfaceFlinger合成,一个在另一个之上。 (默认情况下,ViewRoot曲面将位于顶部,GLSurfaceView曲面将位于底部。)

由于所有视图都被绘制到ViewRoot的表面,因此它们必须全部位于OpenGL表面之上或OpenGL表面之下。

如果您不想使用纹理,周期,您唯一的选择是创建第三个表面,这次使用SurfaceView而不是GLSurfaceView,在GLSurfaceView上方绘制文本。