您的应用程序在呈现渲染缓冲区之前调用了 glInvalidateFramebuffer

Your app called glInvalidateFramebuffer before presenting renderbuffer

"Your app called glInvalidateFramebuffer before presenting renderbuffer" 是我在行中收到的错误消息:

int retVal = UIApplicationMain(argc, argv, nil, @"myAppDelegate");

我的 main.m 文件。

我的项目中没有一次调用 glInvalidateFramebuffer 方法。更何况,项目使用的是OpenGL ES 2.0(运行一GLKView),有问题的方法是OpenGL ES 3.0的一部分。

我使用许多屏幕外帧缓冲区来绘制程序纹理。此错误未在 iOS 10 之前通知。此外,它不会阻止渲染,不会显示任何可见问题,并且无法使用捕获帧指示其在代码中的确切位置(main.m 除外) .

仅供参考。当我执行多重采样抗锯齿时,我在 Instruments 8 中收到相同的消息,但切换到 Instruments 7 时消息消失了。我不是 运行 GLKView,而是 CAEAGLLayer。

这几乎可以肯定是 XCode 的 GPU 报告误报。

呈现时,不再需要多样本缓冲区和深度缓冲区。 多样本缓冲区已经解决,为了呈现像素,深度值不再是必需的。

这意味着 GLKView 做了正确的事情:在呈现之前使它们无效。

注意:错误警告随着 GLKViewDrawableMultisampleNone 而不是 4x 消失。

所以在GLK的情况下,是解析后多样本缓冲区失效触发的