1

看看这个小提琴:

http://jsfiddle.net/PRz4G/

您可以看到关于蓝色的四个白点。这些点中的每一个都应该在同一个地方有一个灯,但其中三个都没有工作。

看看小提琴中的这个数组:

var lights = {
    0: [712699, 0, 0],
    1: [732699, 0, 0],
    2: [722699, 10000, 0],
    3: [722699, -10000, 0],
    //4:[722699, 0, 10000],
    //5:[722699, 0, -10000]
};

如果你也注释掉 2 和 3,你可以看到两个灯渲染成功。取消注释 2,我们又回到了一个工作灯。取消注释 3 和 4,现在我们有一个完整的着色器初始化错误。

我做错了什么?

更新: 问题是特定于显示驱动程序的,现在正在为我工​​作

4

2 回答 2

1

编辑:这个答案是指旧版本的three.js,不再相关。该maxLights参数已被删除。


首先需要设置maxLights参数:

renderer: new THREE.WebGLRenderer( { maxLights: 6 } );

默认为4,否则。有了这个变化,我看到了 6 个灯。

你的演示,如所写,也对我有用。(4 盏灯将光线投射到球体上。)

您也可能遇到硬件问题,阻止了超过 2 个灯。它可能是一个劣质的 GPU。

好消息是您的代码适用于此更改。:-)

于 2012-10-16T22:34:33.153 回答
0

您可以使用 Chrome 解决此问题,但您必须编辑快捷方式并添加

C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --use-gl=desktop

有了它,您可以随意投射任何光线。

于 2013-11-22T14:27:14.560 回答