我需要使我的libgdx glsufraceView透明,并有机会在上面添加一些Android视图。之前我使用了下面的代码:
if (graphics.getView() instanceof SurfaceView) {
GLSurfaceView glView = (GLSurfaceView) graphics.getView();
glView.setZOrderOnTop(true);
glView.getHolder().setFormat(PixelFormat.RGBA_8888);
}
但是,这段代码并不能让我在上面添加Android视图。经过短暂的研究,我找到了替代品:
glView.setZOrderMediaOverlay(true);
.
有了这行代码,我可以在表面上显示任何视图,但透明的部分变成了黑色。
我认为这个问题是因为我的代码是在setrenderer(…)之后启动的。在gdx后端android中找到包含setrenderer(…)的方法之后。几分钟后,我下载了libgdx源代码,并在setrenderer(…)之前添加了行,但不幸的是它没有帮助,情况仍然一样。
我尝试的代码:
1)
GLSurfaceView20 view = new GLSurfaceView20(application.getContext(), resolutionStrategy, config.useGL30 ? 3 : 2);
view.setZOrderOnTop(true);
if (configChooser != null)
view.setEGLConfigChooser(configChooser);
else
view.setEGLConfigChooser(config.r, config.g, config.b, config.a, config.depth, config.stencil);
view.getHolder().setFormat(PixelFormat.RGBA_8888);
view.setRenderer(this);
view.setRenderMode(GLSurfaceView.RENDERMODE_WHEN_DIRTY);
return view;
2)
GLSurfaceView20 view = new GLSurfaceView20(application.getContext(), resolutionStrategy, config.useGL30 ? 3 : 2);
if (configChooser != null)
view.setEGLConfigChooser(configChooser);
else
view.setEGLConfigChooser(config.r, config.g, config.b, config.a, config.depth, config.stencil);
view.setZOrderOnTop(true);
view.getHolder().setFormat(PixelFormat.RGBA_8888);
view.setRenderer(this);
return view;
3)
GLSurfaceView20 view = new GLSurfaceView20(application.getContext(), resolutionStrategy, config.useGL30 ? 3 : 2);
if (configChooser != null)
view.setEGLConfigChooser(configChooser);
else
view.setEGLConfigChooser(config.r, config.g, config.b, config.a, config.depth, config.stencil);
view.getHolder().setFormat(PixelFormat.RGBA_8888);
view.setZOrderMediaOverlay(true);
view.setEGLContextClientVersion(2);
view.setRenderer(this);
return view;
我也发现关于这个主题的话题很少,但是没有正确的答案。
有可能做到吗?