您的应用在呈现renderbuffer之前调用了glInvalidateFramebuffer

时间:2016-10-24 18:33:49

标签: opengl-es ios10 glkit

“您的应用在呈现渲染缓冲区之前调用glInvalidateFramebuffer是我收到的错误消息:

int retVal = UIApplicationMain(argc, argv, nil, @"myAppDelegate");
我的main.m文件的

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

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

2 个答案:

答案 0 :(得分:0)

仅供参考。当我进行多重采样抗锯齿时,我得到了与仪器8相同的消息,但切换到仪器7消息消失了。我没有使用GLKView,CAEAGLLayer。

答案 1 :(得分:0)

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

在演示时,不再需要多样本缓冲区和深度缓冲区。 多样本缓冲区已经解析,为了呈现像素,不再需要深度值。

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

注意:使用GLKViewDrawableMultisampleNone而不是4x时,错误警告消失。

因此在GLK的情况下,它是由解析后的多样本缓冲区失效触发的。