能否将OpenGL ES层设置为透明?

7

是否可以使OpenGL ES图层的背景透明,以便您可以看到OpenGL ES内容后面的内容?

1个回答

12

您需要完成以下两个步骤:

  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]。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接