我刚刚开始使用 OpenGL ES,主要是在 iPad 上,并注意到一些我无法找到答案的问题。首先,我尝试在同一个窗口中使用两个使用不同渲染器的 EAGLView。基本上认为 XCode 中的 OpenGL ES 示例项目,但有两个 EAGLViews 和两个渲染器等。现在这似乎在模拟器中不起作用,它只显示一个视图(它似乎运行渲染代码,但只有一个视图是用 openGL 显示),但是当在设备(使用 iOS 4.2 的 iPad)上运行时,它确实可以工作,至少这会导致下一个问题。
在这两个视图上使用 CADisplayLink 触发对渲染的更新。然而,这确实会导致一些问题。大多数情况下,片刻之后,其中一个视图的更新停止,其 CADisplayLink 停止触发。这只发生在设备上而不是模拟器中。它可以通过使用计时器而不是 CADisplayLink 来“修复”,或者在一个视图上使用计时器,在另一个视图上使用 DisplayLink,我想知道是什么原因造成的。我正在创建这样的显示链接(在两个视图中):
self.displayLink = [NSClassFromString(@"CADisplayLink") displayLinkWithTarget:self selector:@selector(drawView:)];
[displayLink setFrameInterval:animationFrameInterval];
[displayLink addToRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
现在最后一个问题是关于我注意到的一件奇怪的事情。当在 iPad 模拟器中运行 Xcode 中提供的 OpenGL ES 示例项目时,视图的宽度调整为低于 760,它不会将任何内容呈现到屏幕上,它只涉及宽度,高度可以以任何方式调整大小。它只发生在模拟器中,而不是设备上。
所以问题基本上是上面提到的事情是错误、功能还是我做错了?
谢谢/j0h