ios - iOS 10 中 A7 设备上的 OpenGL 错误

标签 ios opengl-es opengl-es-2.0 ios10

更新到 iOS 10 后,我的图像处理应用程序在配备 A7 芯片的设备(iPhone 5s 和 iPad Mini 2 测试)上表现非常奇怪:

渲染需要很长时间并且会产生错误的结果。 Instruments 显示一些 glDrawElements 调用返回 GL_INVALID_OPERATION。不过,我无法找出原因。

相同的代码在较新的设备(A8 和更好的设备)和 iOS 9 的所有设备上都运行良好。Apple 是否改变了我不知道的东西?

更多背景信息:

  • 我部分使用了 GL_HALF_FLOAT_OES 类型的纹理
  • 我使用 EXT_color_buffer_half_float 扩展来渲染这些纹理
  • 我使用 EXT_shader_framebuffer_fetch 扩展来就地处理我的一些滤镜中的像素

最佳答案

事实证明,我只是在我的一些着色器中部分分配了 gl_FragColor(例如,gl_FragColor.rg = vec2(1.0, 0.0);),这导致iOS 10 中的错误行为。不过,可能仅与 GL_HALF_FLOAT_OES 类型的渲染目标结合使用。

当我总是分配完整的向量时(即使其他部分未使用……),它就像一个魅力。

关于ios - iOS 10 中 A7 设备上的 OpenGL 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39534245/

相关文章:

ios - 无法在多行 nsstring 上获得投影

ios - 你能在后台线程上用它自己的上下文预热着色器吗?

android - 如何在 Open GL 中创建连续重复滚动的背景图像?

android - 使用半透明的 png 作为纹理并使它们褪色 OpenGL ES 2.0

glsl - glsl 中的带边框圆角矩形

android - OpenGL ES 2.0 缩放不工作

ios - Swift 2 迁移问题

ios - 如何解决 Sqlite.swift 中的警告消息 'BUG IN CLIENT OF libsqlite3.dylib: database integrity compromised by API violation'?

iOS-Metal : How to clear Depth Buffer ? 类似于OpenGL中的glClear(GL_DEPTH_BUFFER_BIT)

ios - 无法启动/private/var/containers/Bundle/Application/