我有一个带有多个渲染目标/帧缓冲区的应用程序,在一次调用glDrawElements时,它在设备(iPad iOS 5.0)上崩溃,但在模拟器中没有崩溃。这是一个非常着色的密集型应用程序,具有十几个不同的着色器和数千个顶点缓冲区。
进一步调试此事让我相信崩溃是由于特定的着色器而发生的,但是着色器是有效的,正在写入的帧缓冲区对象也是如此。
答案 0 :(得分: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 。