
我尝试使用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渲染具有透明背景,以便与后面绘制的视图混合?
编辑:这是我的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)将其绘制成透明度.但后来我失去了在GLSurfaceVIEw上放置其他视图的可能性.
我结束了两个可能的结果:
左侧是所有其他视图下方的标准GL曲面,无法使用透明度绘制,因为GL曲面在应用程序窗口表面之前绘制,而GLSurfaceVIEw仅在其位置绘制punches hole以便透视GL曲面.
右边是用setZOrderOntop(true)绘制的透明GL表面,因此其表面绘制在应用程序窗口的顶部.现在它是透明的,但是在视图层次结构中放置在其上的其他视图之上绘制.
因此,应用程序似乎有一个窗口,其视图层次结构具有表面,而SurfaceVIEw具有自己的GL表面,可能位于应用程序窗口的顶部或下方.遗憾的是,透明GL视图无法在视图层次结构中正确排序,并且其上包含其他视图.
总结以上是内存溢出为你收集整理的android – GLSurfaceView – 如何制作半透明背景全部内容,希望文章能够帮你解决android – GLSurfaceView – 如何制作半透明背景所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)