1

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

进一步调试这件事让我相信崩溃是由于特定的着色器而发生的,但着色器是有效的,正在写入的帧缓冲区对象也是如此。

4

1 回答 1

1

好的,经过大量的调试时间后,我发现我的景深着色器导致了崩溃,尤其是这个函数:

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

于 2012-08-03T12:09:00.000 回答