我正在尝试通过 Jerome 为他的live sparks editor制作的 THREEx.Sparks 模块在我的应用程序中使用 sparks.js 。但是,它仅适用于 r50 及以下的three.js——在此之后,火花轨迹永远不会被渲染。
我已经建立了一个(有点)最小的编辑器分支供所有人使用。圆柱体总是被绘制出来,但是当我们逐步完成三个.js 修订时:
- r46 有效,但现在当然已经过时了
- r50 和 r49 按预期绘制粒子,但出现此 WebGL 错误:
WebGL: INVALID_ENUM: activeTexture: texture unit out of range
- 从 r51 开始,不绘制火花的粒子系统
该错误很可能与 THREE 如何处理未正确初始化的纹理有关。我已经把它追到了在_buildDefaultTexture
里面创建的 128x128 径向纹理THREEx.Sparks.js
。
这是一个 SO 问题(而不是 GH 错误报告)的原因是,三个 r51+ 显然已经得到了正确的错误处理——他们甚至没有尝试不良行为,因为这使 WebGL 成为一个悲伤的熊猫,而 r50 及以下只是做了无论如何,它会导致错误。我的问题是:
- 到底什么地方做得
THREEx.Sparks.js
不好 - 为什么它在r51之前仍然有效
系统信息:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/537.17 (KHTML, like 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)
使用 r50 运行的 sparksjs-dev 的屏幕截图可在 i.stack.imgur.com/p5EfN.png 上查看(如果尚未拉出),其中显示了 WebGL 调试器中的错误uniform1i
和activeTexture
调用。