1

如果 GLKView drawableMultisample 是 GLKViewDrawableMultisample4X,我的 iOS 应用程序将停止渲染。GLKViewDrawableMultisampleNone 一切正常,但如果我将其设置为 GLKViewDrawableMultisample4X,那么我只会得到空白的粉红色屏幕。

我已经在 iOS Simulator / iOS 7.0.3 上检查过了

有人知道如何解决这个问题吗?它可能与iOS模拟器有关并且可能在真实设备上运行良好吗?

4

1 回答 1

0

我正好遇到了这个问题。目前尚不清楚原因是否相同,但在我的情况下,我是从 displayLink 触发器触发渲染 - 不考虑 setNeedsDisplay 的语义,也不考虑 GLKit 如何在执行 drawInRect 方法时设置渲染缓冲区。

我的心态是,因为我使用了 displayLink,所以我可以直接从那个触发器运行我的所有渲染——而且因为在我尝试设置抗锯齿之前这一切都起作用了,我认为这不会是大错特错!

该问题仅在我设置 GLKViewDrawableMultisample4X 时才出现,就像 OP 的问题一样。

解决方案...

  1. 确保使用 enableSetNeedsDisplay = NO 创建视图
  2. 让 displayLink 触发一个函数,该函数仅包含以下内容:
- (void)render:(CADisplayLink*)displayLink {

    // 这个函数应该*不*执行任何渲染
    // 我们只想通知 GLKit 我们已经准备好渲染

    GLKView * view = [self.window.subviews objectAtIndex:0];

    // 告诉 GLKit 我们已经准备好绘制了
    [查看显示];

    // GLKit 将确保在之前设置缓冲区
    // 调用 drawInRect
}
  1. 将所有渲染移到 drawInRect 中。GLKit 将确保在调用 drawInRect 之前设置缓冲区。
于 2015-07-05T22:40:37.047 回答