iOS GL ES 2 应用程序在设备上崩溃但在模拟器上不崩溃

标签 ios opengl-es-2.0

我有一个带有多个渲染目标/帧缓冲区的应用程序,在对 glDrawElements 的一次调用中,它在设备 (iPad iOS 5.0) 上崩溃,但在模拟器中没有。这是一款着色器密集型应用程序,具有十几种不同的着色器和数千个顶点缓冲区。

进一步调试问题让我相信崩溃是由于特定着色器引起的,但着色器是有效的,正在写入的帧缓冲区对象也是有效的。

最佳答案

好吧,在调试了很多时间之后,我发现是我的景深着色器导致了崩溃,尤其是这个函数:

float GetNearFalloff( float Depth, float MinDist, float MaxDist)
{
    float Range = MaxDist - MinDist;
    if (Depth < MinDist)
        return 1.0;
    /*else*/if (Depth > MaxDist)
        return 0.0;

    float Blur = 1.0 - ( (Depth - MinDist) / Range );
    return Blur;
}

基本上是其他评论导致了我的崩溃。删除它使一切正常。我实际上把它放回去了(我想它可能是别的东西),只是为了看到在几次着色器重新编译之后出现了相同的崩溃并进行了相同的修复,删除了 else

关于iOS GL ES 2 应用程序在设备上崩溃但在模拟器上不崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11563008/

相关文章:

ios - OPENGLES 2.0 PUSHMATRIX POP MATRIX 实现

ios - 如何修复 didSelectRowAt 返回错误的indexPath?

opengl - 优化渲染是否需要从前到后绘制?

android - 如何测试基于Open GL ES 2.0的应用程序?

ios - UINavigationController 和 Swift 2.2 选择器中的自定义后退按钮

android - 链接程序时 OpenGL 崩溃,LG Nexus 4

android - GLSL 着色器不会从统一变量渲染颜色

iphone - 可以在另一个线程中更改 userInteractionEnabled 属性吗?

ios - ios通过xmppframework传输文件

ios - Swift inout 没有设置