我想在相机SurfaceView上叠加抽屉,如下所示:
onActivate
现在,我无法使抽屉层透明化。
UI Layer(RGBA)
--------
Drawer Layer(RGBA\GLES)
--------
Camera Layer
然后选择配置为EGL_ALPHA_SIZE。
setZOrderOnTop(true); //try setZOrderMediaOverlay, too.
getHolder().setFormat(PixelFormat.RGBA_8888);
我有一个黑色的背景。相机层未显示。
const EGLint attribs[] = {EGL_RENDERABLE_TYPE, EGL_OPENGL_ES2_BIT,
EGL_SURFACE_TYPE, EGL_WINDOW_BIT,
EGL_COLOR_BUFFER_TYPE, EGL_RGB_BUFFER,
EGL_BLUE_SIZE, 8,
EGL_GREEN_SIZE, 8,
EGL_RED_SIZE, 8,
EGL_ALPHA_SIZE, 8,
EGL_DEPTH_SIZE, 16,
EGL_NONE
};
//...
glClearColor(1,1,1,0);
selectConfig中的EGL Init失败。 然后我打印所有的egl配置,没有一个有{EGL_TRANSPARENT_TYPE,EGL_TRANSPARENT_RGB}。
我已经解决了。只需将glClearColor更改为
即可const EGLint attribs[] = {EGL_RENDERABLE_TYPE, EGL_OPENGL_ES2_BIT,
EGL_SURFACE_TYPE, EGL_WINDOW_BIT,
EGL_TRANSPARENT_TYPE, EGL_TRANSPARENT_RGB,
EGL_COLOR_BUFFER_TYPE, EGL_RGB_BUFFER,
EGL_BLUE_SIZE, 8,
EGL_GREEN_SIZE, 8,
EGL_RED_SIZE, 8,
EGL_ALPHA_SIZE, 8,
EGL_DEPTH_SIZE, 16,
EGL_NONE
};
//...
glClearColor(1,1,1,0);
似乎GL帧缓冲区中的Alpha通道已被igonred。可能是Android使用ADD而不是ONE_MINUS_SRC来混合Windows吗?有人能解释清楚吗?