将 RenderTexture 渲染到网格

Render a RenderTexture to a mesh

在 Unity 中,我通过 DirectX 插件程序更新渲染纹理(通过向其写入数据)。我做了类似以下的事情来最初创建我的 RenderTexture:

RenderTexture myTexture = new RenderTexture (100, 100, 0);
myTexture.Create ();
transform.GetComponent<Renderer> ().material.mainTexture = myTexture;
transform.GetComponent<Renderer> ().enabled = true;

然后我稍后根据需要修改纹理。然而这个对象的 material(它在现实世界中的样子)并没有改变。如果我单击该对象,然后单击它的 material,然后单击附加到它的 RenderTexture,我可以看到它正在更新,只是出于某种原因它不会在实际网格上更新。为什么是这样?我试过使用不同的内置着色器,但这似乎没有帮助。有没有一种方法可以编写着色器以将 RenderTexture 渲染到网格?

我发现最好的选择是简单地使用 RawImage 而不是 Material,并将渲染纹理应用到 RawImage 的纹理(不是 mainTexture,只是纹理)。如果您想使用着色器,甚至可以将 material 应用于该原始图像。