2010-08-11 59 views
1

刚开始尝试让OpenGL ES在iPhone上工作,但我从OpenGL模板创建了一个工作演示,并且希望将其添加到另一个应用程序,这是一个标准的UIViewController应用程序。在四处搜索后,似乎我无法将CAEAGLLayer添加到CALayer又名UIView。我会如何去做这件事?还是我完全错了,我在做什么。在UIView或CALayer中显示CAEAGLLayer

干杯任何帮助

回答

1

我实际上必须做的是将EAGLView -initWithCoder更改为-initWithFrame,并对方法进行适当更改以处理帧。一旦我做到了这一点,并初始化与initWithFrame视图它的工作。

+0

我面临着同样的问题。一直试图解决它现在几个小时。你能否详细说明你是如何解决这个问题的?谢谢 – pnizzle 2012-10-08 02:01:10

+1

这是很久以前所以我真的推动它,但我最初有EAGLView自定义类实现-initWithCoder方法。我改为实现了-initWithFrame,完成了该方法所需的所有初始化,并在初始化时调用了该方法。 简而言之,实现-initWithFrame而不是-initWithCoder方法。 – Rudiger 2012-10-08 02:48:11

+0

好吧,我把代码从initWithCoder移到了我的viewDidLoad中,删除了initwithcoder(),并且把self.layer改成了self.view.layer。但是我现在面临的问题是NSStringFromClass([[self.view.layer] class])返回一个CALayer。 +(Class)layerClass没有被调用,因为我使用UIViewController而不是UIView。因此我得到错误:[CALayer setDrawableProperties:]:无法识别的选择器。我相信我只需要通过这个和我完成?谢谢 – pnizzle 2012-10-08 02:58:20

0

我相信你正在寻找的CALayer的insertSublayer方法或addSublayer方法。

+0

很确定我已经试过了,但我会再试一次 – Rudiger 2010-08-12 22:23:33

4

只需使用一个UIView并添加:

+ (Class)layerClass { 
    return [CAEAGLLayer class]; 
} 

这UIView的现在是一个CAEAGLLayer,这样你就可以添加视图像正常的另一个的UIView的子视图。

+0

这应该是被接受的答案。在SWIFT是: 覆盖类VAR layerClass:AnyClass { 获得{ 回报CAEAGLLayer.self }} – Guig 2016-10-04 01:44:39