Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

iPhone: Layering a transparent openGL view on top of a UIView?

I am working on iPhone app and I have an openGL view rendering on top of a regular UIView. It's working, but I can't seem to get the openGL view to have a transparent background that shows the UIView underneath. Instead, I get a big black box.

I have tried setting the background color to UIColor clearColor, I've set opaque to NO, I've set glClearColor to 0.0,0.0,0.0,0.0.

I think I'm misunderstanding/misusing something related to blend modes, but I'm not sure. Can anyone give me a bit of sample code which shows how to do this?

Thanks in advance.

like image 812
peter Avatar asked Sep 08 '09 16:09

peter


3 Answers

Here's what I had to do to get this to work:

eaglLayer.opaque = NO;      
eaglLayer.drawableProperties = [NSDictionary dictionaryWithObjectsAndKeys:
                                kEAGLColorFormatRGBA8, kEAGLDrawablePropertyColorFormat, nil];
glClearColor(0.0f, 0.0f, 0.0f, 0.0f);

And incase you're doing what I was doing and are trying to test it with the GLGravity demo, there's another call to glClearColor(0.0f, 0.0f, 0.0f, 1.0f); every time drawView is called -- so make sure you change that one to glClearColor(0.0f, 0.0f, 0.0f, 0.0f); too! :)

like image 88
Ehxor Avatar answered Nov 18 '22 04:11

Ehxor


Add those in EAGLView.m

-(id)initWithCoder:(NSCoder*)coder

self.opaque = NO;
self.backgroundColor = [UIColor clearColor];

CAEAGLLayer *eaglLayer = (CAEAGLLayer *)self.layer;
eaglLayer.opaque = NO;

CGColorSpaceRef rgb = CGColorSpaceCreateDeviceRGB();
const CGFloat myColor[] = {0.0, 0.0, 0.0, 0.0};
eaglLayer.backgroundColor = CGColorCreate(rgb, myColor);
CGColorSpaceRelease(rgb);
like image 24
erkanyildiz Avatar answered Nov 18 '22 06:11

erkanyildiz


Check the color format of your view. If you’ve set it to kEAGLColorFormatRGB565 via the drawableProperties dictionary, the alpha channel of the view’s contents will be implicitly treated as 1.0, regardless of what you draw into it.

like image 2
Pivot Avatar answered Nov 18 '22 05:11

Pivot