我在MAD优化方面遇到问题,并且基于OpenGL ES的硬件上的数字接近无限/浮动边界。
我想做的事情:
vec2 k = d/l; // VERYY BIG number 10^6 -10^8, but still ok by itself
//vertex.w = 0 or 1
res += k * (1.0 - vertex.w); // enable/disable by !vertex.w This form is ok
//res += k - k *vertex.w; // but this is not (I think it becomes NaN, cuz I don't see a thing)
什么是最有趣的(并且让我长时间努力)它在桌面硬件上运行正常。
所以......这是正常的行为,还是我错过了什么?
答案 0 :(得分:0)
这可能取决于GPU的浮动分辨率(应该是Adreno 203?)。
大多数情况下,它依赖于驱动程序对浮点数执行的优化,当应用中等精度时,(AFAIK)会删除浮点数的尾数的一部分(希望说得好)。
尝试包含"精确的highp float"在你的着色器中。如果您的情况如上所述,则应该解决问题。
我希望能以某种方式提供帮助。
莫里吉奥