我创建了一个Android lib,其中包括通过OpenGL ES进行图像处理。 lib在Android设备上工作正常,但只有在三星S8上运行时崩溃 - opengl着色器编译,但opengl程序没有链接,错误日志为空。 崩溃来自碎片Shader片段中的一个openGLES过滤器。
崩溃发生在“if”行:
"if (gradientMagnitude >= firstSampledGradientMagnitude && gradientMagnitude >= secondSampledGradientMagnitude)"
"{"
...
"}"
如果我尝试,它也会崩溃:
"if (gradientMagnitude >= firstSampledGradientMagnitude)"
"{"
"if (gradientMagnitude >= secondSampledGradientMagnitude)"
"{"
...
"}"
"}"
但如果我只进行一次比较,它就有效:
"if (gradientMagnitude >= firstSampledGradientMagnitude)"
"{"
...
"}"
OR
"if (gradientMagnitude >= secondSampledGradientMagnitude)"
"{"
...
"}"
最后我用这个解决方案修复了崩溃:
"float sampledGradientMagnitudeMax = max(firstSampledGradientMagnitude,secondSampledGradientMagnitude);"
"if (gradientMagnitude >= sampledGradientMagnitudeMax)"
"{"
...
"}"
我的问题是,为什么它会在第一个代码中崩溃?