Html Three.js PointLight出现故障,超过2个指示灯

Html Three.js PointLight出现故障,超过2个指示灯,html,webgl,three.js,Html,Webgl,Three.js,看看这把小提琴: 你可以看到四个关于蓝色的白点。每一个点都应该在同一个地方有一盏灯,但其中三个点都不起作用 看看小提琴中的这个阵列: 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] }; 如果同时注释

看看这把小提琴:

你可以看到四个关于蓝色的白点。每一个点都应该在同一个地方有一盏灯,但其中三个点都不起作用

看看小提琴中的这个阵列:

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,现在我们有一个完整的着色器初始化错误

我做错了什么

更新:
这个问题是特定于显示驱动程序的,现在正在为我解决

编辑:这个答案引用了旧版本的three.js,不再相关。已删除
maxLights
参数


首先,您需要设置
maxLights
参数:

renderer: new THREE.WebGLRenderer( { maxLights: 6 } );
默认值为4,否则为。换了这个,我看到6盏灯

你的演示,就像我写的一样,也对我有用。(4个灯将灯光投射到球体上。)

您可能也有硬件问题,阻止了2个以上的灯光。它可能是一个劣质的GPU


好消息是您的代码可以与此更改配合使用。:-)

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


首先,您需要设置
maxLights
参数:

renderer: new THREE.WebGLRenderer( { maxLights: 6 } );
默认值为4,否则为。换了这个,我看到6盏灯

你的演示,就像我写的一样,也对我有用。(4个灯将灯光投射到球体上。)

您可能也有硬件问题,阻止了2个以上的灯光。它可能是一个劣质的GPU


好消息是您的代码可以与此更改配合使用。:-)

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

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

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

你可以用Chrome解决这个问题,但你必须编辑快捷方式并添加

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

有了这个,你可以投射任何你想要的光。

Hmm,我添加了这个属性,但它没有改变——当两个以上的光出现时,我仍然只看到一个光投射。这发生在两台计算机上;一个我不知道的图形,但这一个有一个ATI高清6970-所以我不认为这是一个硬件问题。是的。添加maxLights可以消除着色器错误,但它仍然只在画布上绘制一条光路-这就是我看到的:这是在Windows上,对吗?也许ANGLE因为某种原因无法处理。在我所有的系统上都能正常工作,包括chromebook,它有Intel HD集成图形。是的,这是在Windows 7 64位pro中,我在两台机器上都试过;Firefox和Chrome的行为都是一样的。只要在办公室的iMac上看看这个,它确实可以正常工作。一定是Windows错误。一个非常非常讨厌的Windows bug!嗯,我添加了这个属性,但它没有改变——当两个以上的灯光出现时,我仍然只看到一个灯光投射。这发生在两台计算机上;一个我不知道的图形,但这一个有一个ATI高清6970-所以我不认为这是一个硬件问题。是的。添加maxLights可以消除着色器错误,但它仍然只在画布上绘制一条光路-这就是我看到的:这是在Windows上,对吗?也许ANGLE因为某种原因无法处理。在我所有的系统上都能正常工作,包括chromebook,它有Intel HD集成图形。是的,这是在Windows 7 64位pro中,我在两台机器上都试过;Firefox和Chrome的行为都是一样的。只要在办公室的iMac上看看这个,它确实可以正常工作。一定是Windows错误。一个非常非常讨厌的Windows bug!该问题特定于Windows上某些图形卡的ATI驱动程序。我的特定问题现已消失。该问题是特定于Windows上某些图形卡的ATI驱动程序。我的具体问题现在已经解决了。