看看这个小提琴:
你可以看到关于蓝色的四个白点。这些点中的每一个都应该在同一个地方有一盏灯,但其中三个都无法工作。
在小提琴中查看这个数组:
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,现在我们有一个完整的着色器初始化错误。
我做错了什么?
更新 问题是显示驱动程序特定,现在正在为我工作
答案 0 :(得分:1)
编辑:这个答案是指旧版本的three.js,不再相关。 maxLights
参数已被删除。
首先,您需要设置maxLights
参数:
renderer: new THREE.WebGLRenderer( { maxLights: 6 } );
默认为4,否则为。通过这个改变,我看到了6个灯。
你的演示,正如所写,也适合我。 (4盏灯投射到球体上。)
您可能遇到硬件问题,防止超过2个灯光。它可能是一个劣质的GPU。
好消息是您的代码适用于此更改。 : - )
答案 1 :(得分:0)
您可以使用Chrome解决此问题,但必须编辑快捷方式并添加
C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --use-gl=desktop
这样你可以随意投射任何光线。