原来有一些帖子提到过,但是没有具体的解决方案,有解决思路。
比如下面:
https://forum.cocos.com/t/cocos2d-x-3-16/65339/10
@minggo 提到是surfaceview的问题,确实是。
@ccser 方案在下面,但是还有个疑惑。
因为游戏开始的时候指定了要使用alpha通道(肯定要使用),所以下面的alpha用了8bit的大小。
// set OpenGL context attributes: red,green,blue,alpha,depth,stencil
GLContextAttrs glContextAttrs = {8, 8, 8, 8, 24, 8};
然后安卓这边判断如果用了alpha通道,所以判断如果使用了alpha通道,就指定glSurfaceView的背景为透明(可以达到一个效果,比如:Activity上面有元素,OpenGL的画布盖在Activity上面,画布上面没有元素,可以透过画布看到Activity的上面的元素)。这儿指定为透明就会触发某些手机上面的BUG,导致有残影出现(在华为的官方论坛发现一些用了OpenGL es的应用软件也会出现这种情况,比如一些输入法)。把这行注释掉就没问题了。
//this line is need on some device if we specify an alpha bits
if(this.mGLContextAttrs[3] > 0) glSurfaceView.getHolder().setFormat(PixelFormat.TRANSLUCENT);
但是这行注释有点儿弄不明白,,难道是某些机器上,没有这行的话,alpha通道不生效?