是否可以使OpenGL ES层透明?

Ant*_*nio 7 iphone opengl-es ios

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

Rob*_*man 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渲染].