gpt4 book ai didi

android - GLSurfaceView - 如何制作半透明背景

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:29:32 24 4
gpt4 key购买 nike

我尝试使用 GLSurfaceView 进行渲染,并通过 docs我设置格式:

getHolder().setFormat(PixelFormat.TRANSLUCENT);

我使用的是 GLSurfaceView.Renderer,它在 onDrawFrame 中绘制:

GLES20.glClearColor(0, 0, 1, .5f);
GLES20.glClear(GLES20.GL_DEPTH_BUFFER_BIT | GLES20.GL_COLOR_BUFFER_BIT);

但是GLSurfaceView中的GL渲染不是半透明的,全是蓝色。如果我省略 glClear 调用,那么它是全黑的。

如何使 GL 渲染具有透明背景,以便它与背后绘制的 View 混合?

enter image description here

编辑:这是我的 GLSurfaceView:

class GLView extends GLSurfaceView{
MyRenderer r;
public GLView(Context ctx){
super(ctx);
setEGLContextClientVersion(2);

getHolder().setFormat(PixelFormat.TRANSLUCENT);

setEGLConfigChooser(8, 8, 8, 8, 16, 0);
r = new MyRenderer(getContext());
setRenderer(r);
}
}

最佳答案

好的,经过一些研究,我可以自己回答这个问题。

我最终使用 SurfaceView.setZOrderOnTop(true) 使其以透明方式绘制。但是后来我失去了将其他 View 放置在我的 GLSurfaceView 之上的可能性。

我以两种可能的结果结束:

behind on top

左边是所有其他 View 下面的标准 GL 表面,它不能用透明度绘制,因为 GL 表面是在应用程序的窗口表面之前绘制的,而 GLSurfaceView 只是 punches hole在它的位置,以便可以看到 GL 表面。

右边是用setZOrderOnTop(true)绘制的透明GL表面,因此它的表面绘制在应用程序窗口的顶部。现在它是透明的,但绘制在 View 层次结构中放置在其上的其他 View 之上。

所以应用程序似乎有一个窗口,其 View 层次结构具有表面,而 SurfaceView 具有自己的 GL 表面,它可能位于应用程序窗口的顶部或底部。不幸的是,透明的 GL View 无法在 View 层次结构中正确排序,其他 View 位于其之上。

关于android - GLSurfaceView - 如何制作半透明背景,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17878645/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com