【发布时间】:2013-11-27 16:08:32
【问题描述】:
我的应用由图像背景(从后到前)组成,然后是包含 3D 对象和顶部 2 个按钮的 glSurfaceView。我希望 GLSurfaceView 的背景是透明的,并且可以看到后面的图像。
我尝试了两种解决方案,但没有一个是令人满意的:
mGLSurfaceView = new GLSurfaceView(mContext);
mGLSurfaceView.setEGLContextClientVersion(2);
mGLSurfaceView.setEGLConfigChooser(8, 8, 8, 8, 16, 0);
mGLSurfaceView.getHolder().setFormat(PixelFormat.TRANSLUCENT);
mGLSurfaceView.setZOrderOnTop(true);
mGLSurfaceView.setRenderer(mRenderer);
在这种情况下,我可以看到背景,但 3D 对象浮动在所有其他布局的顶部,有时会隐藏按钮。
mGLSurfaceView = new GLSurfaceView(mContext);
mGLSurfaceView.setEGLContextClientVersion(2);
mGLSurfaceView.setEGLConfigChooser(8, 8, 8, 8, 16, 0);
mGLSurfaceView.getHolder().setFormat(PixelFormat.TRANSLUCENT);
mGLSurfaceView.setZOrderMediaOverlay(true);
mGLSurfaceView.setRenderer(mRenderer);
在这种情况下,我可以看到按钮,但 GLSurfaceView 不再透明,我看不到图像背景。 我已经解析了所有其他主题,但没有一个给我任何令人满意的答案。
【问题讨论】:
-
我也在努力寻找这个问题的答案。据我所知,这在某些设备上是不可能的。在其他设备上,第二种情况确实会产生透明的 SurfaceView。
-
奇怪的是我在 Android 2.3 上没有这个问题。仅在 4.*
-
这里的任何帮助都会很高兴
-
尝试使用
TextureView,它是4.0引入的,性能更好。 -
不是性能问题
标签: android 3d overlay renderer glsurfaceview