在Galaxy S3智能手机上使用WebGL进行照明

时间:2012-10-02 05:50:11

标签: android firefox webgl galaxy

glowscript.org是用JavaScript或CoffeeScript编写的各种演示程序,涉及的代码很少。

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

问题:

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

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

1 个答案:

答案 0 :(得分: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.

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