是否可以使OpenGL ES层透明?

时间:2010-07-07 09:46:20

标签: iphone ios opengl-es

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

1 个答案:

答案 0 :(得分:11)

你必须做两件事:

  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项目模板,那么这将是“渲染”方法:[ES1Renderer渲染]和[ES2Renderer渲染]。