是否有可能使OpenGL ES图层透明?

是否有可能使OpenGL ES层的背景变得透明,以便了解OpenGL ES内容的背后?

你必须做两件事情:

  1. 初始化CAEAGLLayer时,将opaque属性设置为NO(或FALSE)。

    您可能还需要确保您的drawableProperties使用支持透明度的颜色格式(kEAGLColorFormatRGBA8,但kEAGLColorFormatRGB565不)。

    eaglLayer.opaque = NO;

    eaglLayer.drawableProperties = [NSDictionary dictionaryWithObjectsAndKeys: [NSNumber numberWithBool:NO], kEAGLDrawablePropertyRetainedBacking, kEAGLColorFormatRGBA8, kEAGLDrawablePropertyColorFormat, nil];

    如果你正在使用XCode的OpenGL项目模板,这将在[EAGLView的initWithCoder]中。

  2. 用透明的颜色和alpha绘制背景。

    glClearColor(0.0f, 0.0f, 0.0f, 0.0f);

    如果你正在使用XCode的OpenGL项目模板,这将在“render”方法中:[ES1Renderer render]和[ES2Renderer render]。