5

您好,我正在为 iPhone 使用 OpenGLES 编程,但我目前遇到了一个奇怪的帧缓冲区对象错误。

起初,我在学习 Simon Maurice 的一些教程: http ://web.me.com/smaurice/AppleCoder/Welcome.html

但是在继续其他教程之前,我自己做了一些实验,但是我的实验遇到了问题。我试图做的是使 EAGLView 成为 ViewController 的视图,当基本代码最初来自教程时,这工作得非常好。

由于 EAGLView 是 UIView 的一个子类,所以这样做并不难,所以继续进行实验,我想用一张白纸来做。我在 Xcode 中使用基于 Windows 的应用程序项目创建了一个新项目,并创建了一个新的 EAGLView 和一个 ViewController 来执行与前一个项目相同的任务。

然而,在编译和运行视图后出现白色,并且控制台在 createFramebuffer 过程中输出“failed to make complete framebuffer object %x”错误。(错误控制台输出:“GLController[2071:207] 无法制作完整的帧缓冲区对象 0”)。

我首先认为这是我的代码,所以我将前一个项目中的工作代码撕成新项目,但仍然收到相同的错误。同时我将新项目代码移到旧项目中并编译成功输出。

我很困惑为什么相同的代码在新项目中不能正常工作,而新代码在旧项目中却能正常工作。如果有人知道我错过了什么,将不胜感激。

谢谢。

(还使用 Apple 示例代码中的几个 EAGLView 进行了测试,并且在新项目上发生了相同的错误,但在附加了 ViewController 的旧项目上不会发生。)

4

3 回答 3

7

在黑暗中拍摄,缺乏更多关于你所做的事情的信息,但是......你是通过 IB 实例化你的 EAGLView(并因此通过-initWithCoder:),还是以编程方式(-initWithFrame:)?

如果您查看 EAGLView.m,您会发现它只-initWithCoder:需要进行实际初始化。将该初始化代码迁移到共享(或-initWithFrame:唯一)初始化程序非常容易。

于 2010-08-11T20:02:23.453 回答
4

在尝试将 EAGLView 设置为 viewController 的视图时,我遇到了类似的问题。相反,将 viewController 的 view 属性附加到标准 UIView。然后,稍后,当视图成功加载时(可能在 viewController 的 viewDidLoad 方法中),实例化一个 EAGLView 并将其作为子视图添加到 viewController.view。

于 2009-10-30T11:52:02.620 回答
0

opengles 模板程序从上一个 Iphone SDK 到现在的 SDK 发生了变化。有为在 ES2.0 和 ES1.1 之间进行选择而编写的支持代码

请注意。

于 2009-10-25T14:37:19.170 回答