“您的应用在呈现渲染缓冲区之前调用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
除外)。
答案 0 :(得分:0)
仅供参考。当我进行多重采样抗锯齿时,我得到了与仪器8相同的消息,但切换到仪器7消息消失了。我没有使用GLKView,CAEAGLLayer。
答案 1 :(得分:0)
这几乎可以肯定是XCode的GPU报告的误报。
在演示时,不再需要多样本缓冲区和深度缓冲区。 多样本缓冲区已经解析,为了呈现像素,不再需要深度值。
这意味着GLKView会做正确的事情:在呈现之前使它们无效。
注意:使用GLKViewDrawableMultisampleNone而不是4x时,错误警告消失。
因此在GLK的情况下,它是由解析后的多样本缓冲区失效触发的。