使用three.js将场景渲染到自定义网格上

使用three.js将场景渲染到自定义网格上,three.js,webgl,uv-mapping,Three.js,Webgl,Uv Mapping,在搞乱之后,我成功地在我的项目中复制了它的精髓:在我的主场景中,有一个now球体,通过THREE.WebGLRenderTarget缓冲区在其上绘制了一个次要场景 不过,我并不真的需要一个球体,这就是我碰到一堵巨大砖墙的地方。当尝试将缓冲区映射到我的简单自定义网格时,我得到了以下错误的无限流: three.js:23444 WebGL: INVALID_VALUE: pixelStorei: invalid parameter for alignment three.js:23557 Unca

在搞乱之后,我成功地在我的项目中复制了它的精髓:在我的主场景中,有一个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
我的几何体(近似于形状)是使用创建的。通过将
{map:new THREE.Texture(canvas)}
传递到材质选项中,我成功地将
画布
映射到它上,但是如果使用
{map:myWebGLRenderTarget}
我会得到上面的错误

粗略查看调用堆栈,会发现three.js似乎假设
myWebGLRenderTarget
上存在
texture.image
属性,并试图在其上调用
clampToMaxSize


这是three.js中的错误还是我只是做错了什么?因为我只需要平面渲染(使用
MeshBasicMaterial
),所以在上面的“渲染到纹理”演示中,我做的第一件事就是删除所有着色器的痕迹,而且只使用球体效果很好。我需要那些着色器才能使用UV贴图和自定义网格吗?

为了它的价值,我在纹理上设置了不必要的
needsUpdate=true
。(对
needsUpdate
的处理显然假定存在纹理所基于的

很好,这为我解决了这个问题
.needsUpdate
在实例化新材质时会自动设置为true。我在犯同样愚蠢的错误时搔了搔头。谢谢