帧缓冲对象问题

时间:2009-10-22 11:00:34

标签: iphone uiview uiviewcontroller opengl-es eaglview

您好我正在使用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的旧项目中不会发生此错误。)

3 个答案:

答案 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之间进行选择

请注意。