0

glowscript.org上有各种用JavaScript 或CoffeeScript 编写的涉及少量代码的演示程序。

例如,单行程序box()创建一个可以旋转和缩放的 3D 立方体,这要归功于许多默认值(可以被覆盖),包括基本照明(两个远处的灯光和一些环境照明)。

问题:

这些程序在 Windows、Mac 和 Linux 上的许多浏览器中运行良好,但在三星 Galaxy S3 上的 Firefox 中它们非常暗。外观表明环境光有效(增加它会使场景变亮)但远处的灯光不起作用(打开或关闭没有区别)。我试过运行一些在网上找到的 WebGL 演示,它们看起来不错。

谁能想到我应该在哪里寻找问题?为什么台式机/笔记本电脑的行为与 Galaxy S3 上的行为如此不同?

4

1 回答 1

0

我修复了 Galaxy 智能手机上的问题,并将以下内容添加到 GlowScript 帮助中:

“大多数平板电脑和智能手机还不支持 WebGL,尽管这可能会改变。在三星 Galaxy S3 智能手机上,Firefox 和 Opera 确实运行 GlowScript 程序,但动画速度很慢,透明度有问题,目前还没有办法缩放和旋转。有报道称 GlowScript 也适用于 Sony Experia 智能手机。

问题是 Galaxy 着色器编译器无法正确处理 for 循环。在片段着色器中,有一个针对各种灯光(最多 8 个灯光)的 for 循环。在 for 循环中设置的变量通常设置为零而不是指定值。解决方案包括用这样的直线结构替换循环,其中 LP(i) 和 LC(i) 是光的位置和颜色:

if (light_count == 0) return;
calc_color(LP(0), LC(0));
if (light_count == 1) return;
calc_color(LP(1), LC(1));
if (light_count == 2) return;
etc.

呸。幸运的是,我们只需要支持有限数量的灯光。

于 2012-10-04T17:24:23.317 回答