jjzjj

javascript - HTML5 Canvas : Same code outputs different results in different browsers

coder 2023-08-11 原文

在我为性能和质量测量目的而创建的一个简单 Canvas 测试中, Canvas 在不受限制的时间内用随机颜色和图像绘制。

此处显示示例:http://litterific.com/minisite/

Warning: Only open this in Opera or Chrome, the script is pretty heavy can hang up on slow computers, don't leave the script running while you are getting coffee ;)) It is just a rough prototype and did not optimize it.

我在这里注意到脚本 (js/asset.js) 绘制的结果在不同的浏览器中是不同的。特别是在 Opera 中,绘画中的“绿色”比在 Chrome 中多得多

代码可在此处找到:http://litterific.com/minisite/js/asset.js

我的问题是:

这是怎么造成的。不同的随机种子? Opera 中的不同舍入或不同颜色行为?

注意:它在两种浏览器中的脚本完全相同,因此您或许可以在 Chrome 和 Opera 中查看它。

最佳答案

导致问题的不是随机数,而是“有趣”的像素数据。这是变化:

for (i = 0, n = pixels.data.length; i < n; i += 4){
  pixels.data[i + 0] = Math.max(0, Math.min(255, Math.floor(r * f)));
  pixels.data[i + 1] = Math.max(0, Math.min(255, Math.floor(g * f)));
  pixels.data[i + 2] = 0;
  pixels.data[i + 3] = pixels.data[i + 3]; 
}

如果您确保像素值是正确范围内的整数,Opera 可以正常工作。

哦,还有,这可能是显而易见的,如果你将这些乘法提升到循环之外,它会快得多。

关于javascript - HTML5 Canvas : Same code outputs different results in different browsers,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3888711/

有关javascript - HTML5 Canvas : Same code outputs different results in different browsers的更多相关文章

随机推荐