1

我正在尝试在包含控件的 UIView 前面使用 OpenGLES 动画层。例如,我想在 UIButton 的 FRONT 中渲染动画(因此动画对象在通过时从视图中传递(遮挡)按钮的前面)。

尽管有几个相关的线程,但仍无法找到答案。

我的主视图控制器中有一个视图,类型为 GLKView。我有一个单独的 xib (View.xib),其中包含一个 UIView 和一个 UIButton。

在我的 viewDidLoad 中,我有:

self.context = [[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES2];

if (!self.context) {
    NSLog(@"Failed to create ES context");
}

GLKView *glView = (GLKView *)self.view;
glView.context = self.context;
glView.drawableDepthFormat = GLKViewDrawableColorFormatRGB565;
glView.opaque = NO;
glView.alpha = 1.0;
glView.backgroundColor = [UIColor clearColor];

UIView *controlView = [[[NSBundle mainBundle]loadNibNamed:@"View" owner:self options:nil] objectAtIndex:0];
controlView.frame = CGRectMake(100,200,100,100);

controlView.backgroundColor = [UIColor greenColor];
controlView.alpha = 1;
controlView.opaque = YES;

CALayer *controlViewLayer = controlView.layer;
[controlViewLayer insertSublayer:glView.layer above:controlViewLayer];

[self setupGL];

drawInRect我有: glClearColor(0,0,0,0);

结果是我的 GLKView 动画以黑色/清晰的背景呈现,但我看不到包含按钮的 UIView。

有任何想法吗?谢谢,戴夫

4

1 回答 1

0

我能够完成这项工作。问题是在我的 GL 代码的其他地方(实际上是 71Squared 在标准 XCode 项目中为 Particle Emitter 提供的示例 XCode 项目),在 ES1Renderer.m 中调用了 glClearColor。该调用包含 1.0f 的 alpha 值。一旦我将它设置为 0.0f(就像代码中的其他地方一样),前面 (EAGLView) 层就会像预期的那样变得透明。

于 2013-05-06T23:58:10.327 回答