GLKViewDrawableMultisample4X不起作用

时间:2014-01-01 22:41:50

标签: ios objective-c opengl-es glkit opengl-es-3.0

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

我在iOS模拟器/ iOS 7.0.3上检查了它

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

1 个答案:

答案 0 :(得分:0)

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

我有心态,因为我使用displayLink,我可以直接从触发器运行我的所有渲染 - 并且因为在我尝试设置抗锯齿之前一切正常,我认为它不能是错的!

问题只有在我设置GLKViewDrawableMultisample4X时才会出现,就像OP的问题一样。

解决方案......

  1. 确保使用enableSetNeedsDisplay = NO
  2. 创建视图
  3. 让displayLink触发一个只包含以下内容的功能:
  4. - (void)render:(CADisplayLink*)displayLink {
    
        // This function should *not* perform any rendering
        // We only want to inform GLKit that we're ready to render
    
        GLKView * view = [self.window.subviews objectAtIndex:0];
    
        // Tell GLKit that we're ready to draw
        [view display];
    
        // GLKit will ensure the buffers are setup before 
        // calling drawInRect
    }
    
    1. 将所有渲染移动到drawInRect中。 GLKit将确保在调用drawInRect之前设置缓冲区。