您好我正在使用OpenGLES为iPhone编程,但我目前仍然遇到一个奇怪的帧缓冲对象错误。
起初我正在学习Simon Maurice的一些教程: http://web.me.com/smaurice/AppleCoder/Welcome.html
但是在继续其他教程之前我继续做了一些我自己的实验,但是我的实验遇到了问题。我试图做的是让EAGLView成为ViewController的视图,当基本代码最初来自教程时,这非常好用。
由于EAGLView是UIView的子类,因此不难做到这一点,所以我继续进行实验,我想用干净的石板来做。我使用基于Windows的应用程序项目在Xcode中创建了一个新项目,并创建了一个新的EAGLView和一个ViewController来执行与上一个项目相同的任务。
然而,在编译和运行后,视图显示为白色,并且控制台在createFramebuffer过程中输出“未能使完成帧缓冲对象%x”错误。 (错误控制台输出:“GLController [2071:207]无法使完整的帧缓冲对象0”)。
我首先认为这是我的代码,所以我将前一个项目的工作代码翻录到新项目中,但仍然收到相同的错误。与此同时,我将新项目代码移动到旧项目中,并使用成功的输出进行编译。
我很困惑为什么相同的代码在新项目中无法正常工作,但新代码在旧项目中可以正常工作。如果有人知道我错过了什么,将不胜感激。
感谢。
(还使用Apple示例代码中的几个EAGLView进行了测试,并且在新项目中出现了相同的错误,但在附加了ViewController的旧项目中不会发生此错误。)
答案 0 :(得分:7)
在黑暗中拍摄,缺少关于你所做的事情的更多信息,但是......你是通过IB实例化你的EAGLView(因此通过-initWithCoder:
),还是以编程方式(-initWithFrame:
)?
如果你看一下EAGLView.m,你会发现只有-initWithCoder:
才能进行实际的初始化。将初始化代码迁移到共享(或仅-initWithFrame:
)初始化程序非常容易。
答案 1 :(得分:4)
我在尝试将EAGLView设置为viewController的视图时遇到了类似的问题。而是将viewController的view属性附加到标准UIView。然后,稍后,当视图成功加载时(可能在viewController的viewDidLoad方法中),实例化一个EAGLView并将其作为子视图添加到viewController.view。
答案 2 :(得分:0)
opengles模板程序从最后一个Iphone SDK改为当前版本。编写了支持代码,用于在ES2.0和ES1.1之间进行选择
请注意。