在玩弄Three.js将场景渲染到纹理的演示后,我成功地将其本质复制到了我的项目中:在我的主场景中,有一个现在的球体,并通过
不过,我并不真正需要这个球体,这就是我遇到的巨大难题所在。当我尝试将缓冲区映射到我的简单自定义网格上时,我会得到以下无限流错误:
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
UV映射到它上面,方法是将{map: new THREE.Texture(canvas)}
传递到材质选项中,但如果我使用{map: myWebGLRenderTarget}
,就会出现上述错误。
通过浏览调用堆栈,看起来three.js假定在myWebGLRenderTarget
上存在texture.image
属性,并尝试在其上调用clampToMaxSize
。
这是three.js的一个bug还是我做错了什么?由于我只需要平面渲染(使用MeshBasicMaterial
),所以当我适应上面的渲染到纹理演示时,我首先要做的事情之一是删除所有着色器的痕迹,只用球体也可以很好地工作。我是否需要这些着色器才能使用UV映射和自定义网格?
.needsUpdate
会自动设置为true。 - dpren