我正在追逐在iOS设备上运行的OpenGL ES 2.0片段着色器代码中的一些错误.代码在模拟器中运行良好,但在iPad上它有很大的问题,一些计算产生了截然不同的结果,我在iPad上有0.0和在模拟器上有4013.17,所以我不是在谈论小差异可能是一些舍入错误的结果.
我注意到的一件事是,在iPad上,
float1 = pow(float2,2.0);
可以产生与结果非常不同的结果
float1 = float2 * float2;
具体地说,当对包含较大负数的变量(如-8)使用pow(x,2.0)时,它似乎返回一个满足条件的值if(powResult< = 0.0). 此外,两个操作(pow(x,2.0)以及x * x)的结果在模拟器中产生的结果与在iPad上产生的结果不同. 使用过的浮子是mediump,但我得到了与highp相同的东西. 对这些差异有一个简单的解释吗? 我正在缩小问题范围,但需要花费很多时间,所以也许有人可以通过一个简单的解释来帮助我.
解决方法
GLSL ES documentation表示如果x
相关文章
- python - nltk模块的类似方法在不同的机器上产生不同的结果.为什么?
- java - 为什么这两个相似的代码片会产生不同的结果?
- haskell - 产生不同解释器结果的等效函数
- javascript - 为什么.css('fontSize')在Edge中产生不同的结果?
- 颜色 - 为什么CSS过滤器hue-rotate会产生奇怪的结果?
- scala - 为什么应用于2个函数的部分函数以2种不同的方式执行相同的操作会返回不同的结果?
- 为什么用-fllvm编译这个Haskell程序产生不同的结果?
- angularjs - 为什么ng-bind-html和$sanitize产生不同的结果?