Three.js重用了faceColors和vertexColors的几何体

See*_*You 1 javascript webgl three.js

我想要将同一个对象渲染两次,一次在屏幕上,一次在屏幕外.屏幕上的网格具有几何和MeshLambertMaterial.这种材料有vertexColors: THREE.VertexColors.离屏网格具有相同的几何形状和MeshBasicMeterial vertexColors: THREE.FaceColors.在初始设置期间,每个faceColor都设置为唯一的颜色.每个vertexColor都设置为单一颜色(稍后这些顶点颜色可以通过"绘制"对象来更改).

然后我想渲染这两个对象.在这个小提琴中你会看到两个场景并排呈现的样子.MeshLambertMeterial的对象现在是半红色以使事情更清晰.如您所见,两个场景似乎都使用相同的材​​料.此外,当我切换订单时,我收到以下错误:

[.WebGLRenderingContext] GL错误:GL_INVALID_OPERATION:glDrawElements:尝试访问属性1中超出范围的顶点.

为了使事情变得更奇怪,当运行小提琴时,我看到用MeshBasicMaterial渲染两次的对象.但是,当我在本地运行完全相同的代码时,我看到使用MeshLambertMaterial呈现的对象两次.

最终我希望带有MeshBasicMeterial的对象渲染到rendertarget,但是我遇到了同样的问题.我希望能够在屏幕上显示LambertMetarial对象,当我用鼠标悬停在对象上时,获取renderMarial渲染到的renderTarget中该位置的颜色.

我希望很清楚问题是什么,如果没有,请告诉我.

小提琴

Wes*_*ley 5

编辑:问题已解决.

使用时WebGLRenderer,具有不同材质的两个网格现在可以共享几何体.

three.js r.88