libgdx中的背景透明度

4

如果我在Android中使用libgdx,如何使屏幕的背景透明?

我尝试使用的代码无效。

Gdx.gl.glClearColor( 0, 0, 0, 0 );
Gdx.gl.glClear( GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT );

1
你所说的“背景”是指什么?实际上,你所做的只是用无色清除屏幕。如果你想让某些东西透明,你需要有作为背景的东西透过这个物体透明。你不能让窗口及其内容透明,以至于你可以看到桌面!请告诉我们更多的信息,你想要做什么? - bemeyer
你可以使用.setAlpha(150); - Kartheek Sarabu
2个回答

13
刚刚找到了一个解决方案!
只需将这段代码添加到扩展AndroidApplication的类中即可。
AndroidApplicationConfiguration cfg = new AndroidApplicationConfiguration();
cfg.r = cfg.g = cfg.b = cfg.a = 8;

cfg.useGL20 = false;
        
View view = initializeForView(new LineDrawing(), cfg);

if (graphics.getView() instanceof SurfaceView) {
            SurfaceView glView = (SurfaceView) graphics.getView();
            glView.getHolder().setFormat(PixelFormat.TRANSLUCENT);
            glView.setZOrderOnTop(true);
}

不要忘记从你的render()方法中删除Gdx.gl.glClearColor。
对于片段,使用相同的代码在你的onCreateView方法中。

1
如果你的Fragment扩展了AndroidFragmentApplication并且在onCreateView中应用了后面的初始化视图的部分,它也可以作为一个片段使用...这对我很有效 :)不要忘记在渲染时不要执行Gdx.gl.glClearColor。 - Marc
1
如何在“setZOrderOnTop(true)”之后添加其他Android视图到GLView的顶部? - diousk

1

从这个角度考虑 - 当你至少有两个物体时,透明度才是可见的。如果你有一个黑色背景,并在其上绘制透明度为50%的白色图层,你将通过白色图层看到黑色背景。现在,在开始时,你有屏幕。它可以是任何颜色。在屏幕下面,没有任何东西。因此,如果你需要透明度,请使用带alpha通道的东西绘制在屏幕上方。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接