我的图像处理的应用程序的行为非常奇怪的设备上与A7芯片(iPhone 5S和ipad赠送2测试):OpenGL的错误10
渲染花费极长的和产生破裂的结果。仪器显示一些glDrawElements
呼叫以GL_INVALID_OPERATION
返回。尽管如此,我还是无法找出原因。
相同的代码运行完全正常上较新的设备(A8和更好)和iOS中9的所有设备难道苹果改变的事情,我不知道呢?
一些更多的背景信息:
- 我使用部分类型
GL_HALF_FLOAT_OES
纹理 - 我利用
EXT_color_buffer_half_float
扩展渲染到纹理的那些 - 我使用
EXT_shader_framebuffer_fetch
的扩展来处理像素在我的一些过滤器就地
您是否尝试过在[Xcode GPU帧捕获工具]中追踪错误(https://developer.apple.com/library/content/documentation/3DDrawing/Conceptual/OpenGLES_ProgrammingGuide/ToolsOverview/ToolsOverview.html#//apple_ref/DOC/UID/TP40008793-A2-SW1)?这可能有助于缩小错误的原因。 – rickster
@rickster我使用了“OpenGL ES分析”工具,它基本上是相同的,但是在整个运行时间内。它帮助我缩小了“glDrawElements”调用的原因。帧捕获工具似乎可以对接下来的几帧进行采样,如果你有一个连续的渲染循环,这很好用,但是如果你按需渲染则效果不好。 –
帧捕获采样进入* single *帧的所有调用,显示关于每个bind/draw/etc调用设置的所有GL状态的详细信息,并显示警告时比“无效操作”更详细错误。您可以在渲染过程结束时以编程方式触发捕获,因此您不必担心按需渲染,从而难以捕获。 – rickster