Is it possible to make the background of an OpenGL ES layer transparent so you can see what is behind the OpenGL ES content?
Asked
Active
Viewed 4,696 times
1 Answers
12
You have to do two things:
- When you initialize your CAEAGLLayer, set the opaque property to NO (or FALSE).
You may also need to make sure your drawableProperties uses a color format that supports transparency (kEAGLColorFormatRGBA8 does, but kEAGLColorFormatRGB565 does not).
eaglLayer.opaque = NO;
eaglLayer.drawableProperties = [NSDictionary dictionaryWithObjectsAndKeys: [NSNumber numberWithBool:NO], kEAGLDrawablePropertyRetainedBacking, kEAGLColorFormatRGBA8, kEAGLDrawablePropertyColorFormat, nil];
If you are using XCode's OpenGL project template, this will be in [EAGLView's initWithCoder].
- Draw the background in a transparent color and alpha.
glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
If you are using XCode's OpenGL project template, this will be in the "render" methods: [ES1Renderer render] and [ES2Renderer render].

Robert Altman
- 5,355
- 5
- 33
- 51