我有一个带有多个渲染目标/帧缓冲区的应用程序,在对 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/