我目前正在寻找在 iOS 设备上运行的 OpenGL ES 2.0 片段着色器代码中的一些错误。代码在模拟器中运行良好,但在 iPad 上它存在巨大问题,并且某些计算产生截然不同的结果,例如我有0.0
在 iPad 上和4013.17
在模拟器上,所以我不是在谈论可能是一些舍入误差导致的微小差异。
我注意到的一件事是,在 iPad 上,
float1 = pow(float2, 2.0);
可能会产生与结果截然不同的结果
float1 = float2 * float2;
具体来说,当使用pow(x, 2.0)
在包含较大负数的变量上,例如-8
,它似乎返回了一个满足条件的值if (powResult <= 0.0)
.
此外,这两个操作的结果(pow(x, 2.0)
也x*x
)在模拟器中与在 iPad 上产生不同的结果。
使用的浮标有mediump
,但我得到了同样的东西highp
.
对于这些差异有简单的解释吗?
我正在缩小问题范围,但这需要很多时间,所以也许有人可以帮助我做一个简单的解释。
The GLSL ES 文档 http://www.khronos.org/registry/gles/specs/2.0/GLSL_ES_Specification_1.0.17.pdf表示如果 x
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)