如何在OnRenderImage上将目标复制到源



我是Unity新手。

我的应用程序MainCamara附带了以下脚本:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class CameraRenderToImage : MonoBehaviour
{
private int counter;
public CameraRenderToImage(){
counter = 0;
}
void OnRenderImage(RenderTexture src, RenderTexture dest)
{
Debug.Log("Render finalized " + counter);
counter++;        
//Graphics.CopyTexture(src, dest);
dest = src;
}
}

我需要访问src中的最终渲染图像,但我不想实际修改输出。只需添加此功能,我的屏幕(以及使用VR的耳机(的输出就会变黑。

如果我对函数进行注释,它将再次工作。

我最确信的是,发生的事情是源纹理没有被正确地复制到目标纹理。

我试图做的是使相等(我认为这不起作用,因为它们相当于指针(,并使用Graphics.CopyTexture,它给出了以下错误:

Graphics.CopyTexture can only copy between same texture format groups (d3d11 base formats: src=9 dst=27)

有人能帮我吗?我只想让dest等于source。

注意这个

dest = src;

什么都不做。我知道您期望它做什么,但它所做的只是覆盖本地存储在dest中的引用。它完全不影响先前传入的dest

你对黑屏的看法是正确的。一旦实现了OnRenderImage,您就有责任确保某些内容被呈现到dest中。你没有那样做/这个错误阻止了它的发生。

通常情况下,你更喜欢使用Graphics.Blit,它不支持格式匹配限制

Graphics.Blit(src, dest);

最新更新