1

因此,如果任何 THREE.js 专业人士能够理解为什么我不能让 WebGLRenderTarget 用作另一个场景中飞机的材料,我会非常高兴。

现在它的工作原理是我使用透视相机创建一个场景,该相机渲染一个简单的平面。这发生在 Application 对象中。

我还有一个 WaveMap 对象,它使用另一个场景和一个正交相机,并使用片段着色器在另一个占据整个屏幕的四边形上绘制 cos(x) * sin(y) 函数。我将其渲染为纹理,然后创建使用此纹理的材质。

然后我传递要在应用程序对象中使用的材质,以在我提到的第一个平面上绘制纹理。

问题是由于某种原因,我可以让它在 WaveMap 对象内使用正交相机的场景中工作,但在传递材质后,不能在 Application 对象中使用透视相机的场景中工作。:(

我尝试过简单地传递具有纯色的简单材质并且有效,但是当我尝试传递使用 WebGLRenderTarget 作为纹理的材质时,它不再显示。

https://github.com/ArminTaheri/rendertotexture-threejs

4

1 回答 1

7

您需要克隆要由两个不同的渲染器渲染的任何材质/纹理。

var materialOnOther = originalMaterial.clone();

在 r72 之前,您需要强制更新纹理的图像缓冲区,如下所示:

materialOnOther.uniforms.exampleOfATexture.value.needsUpdate = true;
于 2015-10-02T13:07:51.873 回答