3

在搞砸了 Three.js 将场景渲染为纹理的演示之后,我成功地在我的项目中复制了它的本质:在我的主场景中,有一个 now 球体,并且通过THREE.WebGLRenderTarget缓冲区在其上绘制了一个次要场景。

不过,我真的不需要球体,而这就是我碰到一堵巨大的砖墙的地方。尝试将缓冲区映射到我的简单自定义网格时,我收到以下错误的无限流:

three.js:23444 WebGL: INVALID_VALUE: pixelStorei: invalid parameter for  alignment
three.js:23557 Uncaught TypeError: Cannot read property 'width' of undefined

我的几何形状近似环形,是使用此代码创建的。我已经canvas通过传递{map: new THREE.Texture(canvas)}到材质选项成功地将一个 UV 映射到它上面,但是如果我使用{map: myWebGLRenderTarget}我会得到上面的错误。

粗略地看一下调用堆栈,看起来three.js 假设texture.image属性存在myWebGLRenderTarget并尝试调用clampToMaxSize它。

这是three.js中的一个错误还是我只是做错了什么?因为我只需要平面渲染(使用MeshBasicMaterial),所以我在调整上面的渲染到纹理演示时做的第一件事就是删除所有着色器的痕迹,它只适用于球体。我是否需要这些着色器才能使用 UV 映射和自定义网格?

4

1 回答 1

2

对于它的价值,我不必要地设置needsUpdate = true我的纹理。(处理needsUpdate显然假设存在<canvas>纹理所基于的 a 。)

于 2015-02-05T15:53:55.107 回答