0

我正在尝试通过 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 调试器中的错误uniform1iactiveTexture调用。

4

1 回答 1

0

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

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

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

texture : { type: "t", texture: this._texture }

现在应该是

texture : { type: "t", value: this._texture }

可能还有其他问题。

我无法评论旧版本的three.js,只能评论当前版本。

三.js r.55

于 2013-02-17T02:10:42.263 回答