';纹理单位超出范围错误';在three.js breaks应用程序中?

';纹理单位超出范围错误';在three.js breaks应用程序中?,three.js,Three.js,我正试图通过Jerome为他的应用程序制作的THREEx.sparks模块在我的应用程序中使用sparks.js。但是,它只适用于r50之前(含r50)的三个.js,之后将永远不会渲染sparks轨迹 我已经为所有人提供了一个(有点)最小的编辑器。圆柱体总是会被绘制出来,但随着我们逐步完成三个.js版本: r46可以工作,但现在当然已经过时了 r50和r49按预期绘制粒子,但出现此WebGL错误:WebGL:INVALID_ENUM:activeTexture:texture unit超出范围

我正试图通过Jerome为他的应用程序制作的THREEx.sparks模块在我的应用程序中使用sparks.js。但是,它只适用于r50之前(含r50)的三个.js,之后将永远不会渲染sparks轨迹

我已经为所有人提供了一个(有点)最小的编辑器。圆柱体总是会被绘制出来,但随着我们逐步完成三个.js版本:

  • r46可以工作,但现在当然已经过时了
  • r50和r49按预期绘制粒子,但出现此WebGL错误:
    WebGL:INVALID_ENUM:activeTexture:texture unit超出范围
  • 从r51开始,不会绘制火花的粒子系统
错误很可能与三个处理不正确初始化纹理的方式有关。我在
\u buildDefaultTexture
内部
THREEx.Sparks.js
中创建了128x128径向纹理

这是一个如此大的问题(而不是GH bug报告)的原因是三个r51+显然已经得到了正确的错误处理——他们甚至没有尝试过这种不良行为,因为这使WebGL成为了一只可悲的熊猫,而r50和down只是做了这件事并导致了错误。我的问题是:

  • 什么是
    THREEx.Sparks.js
    在这里做得不好
  • 为什么它在r51之前仍然有效
系统信息:Mozilla/5.0(Macintosh;英特尔Mac OS X 10_8_2)AppleWebKit/537.17(KHTML,如Gecko)Chrome/24.0.1312.57 Safari/537.17 | WebGL 1.0(OpenGL ES 2.0 Chromium)| WebKit | WebGL | WebGL GLSL ES 1.0(OpenGL ES GLSL ES 1.0 Chromium)


sparksjs开发人员使用r50的屏幕截图,可在i.stack.imgur.com/p5EfN.png(如果尚未拉取)上查看,其中显示了WebGL调试器中拙劣的
uniform1i
activeTexture
调用。

我无法为您调试代码,但我绝对可以为你指出正确的方向

首先,请参阅以获取升级到当前版本的帮助

例如,您将在THREEx.Sparks.js中看到

texture : { type: "t", texture: this._texture }
现在应该是

texture : { type: "t", value: this._texture }
可能还有其他问题

我不能评论three.js的旧版本,只有当前版本


three.js r.55

其中一行是最重要的一行,加上其他几个修复程序,它现在可以在r55中使用。我将尝试提交固定版本作为拉取请求。谢谢