使用预计算的纹理替换Hololens 2屏幕的内容

需求:自己渲染器生成的纹理是A,Unity里的virtual camera生成的纹理是B,正常情况下眼镜里看到的是B,我想着直接用A替换掉B。

了解Unity渲染脚本的生命周期:
对于我们的需求,关键的是Scene Rendering这一块内容。我们要做的就是改变OnRenderImage的内容,给他截胡,不让它往下一步传输原有纹理内容。
在这里插入图片描述

解决方案:

    void OnRenderImage(RenderTexture src, RenderTexture dest)
    {
    
    
        //获取自己写的Main脚本中的buffer数据
        byte[] Texbuffer = root.GetComponent<Main>().buffer;
        Texture2D tex2d = new Texture2D(width, height, TextureFormat.RGBA32, false);
        tex2d.LoadRawTextureData(Texbuffer);
        tex2d.Apply();
        RenderTexture out_renderTexture = new RenderTexture(width, height, 0);

        //将buffer数据替换到相机最终的显示纹理
        RenderTexture.active = out_renderTexture;
        Graphics.Blit(tex2d, out_renderTexture);
        Graphics.Blit(out_renderTexture, dest);

    }

猜你喜欢

转载自blog.csdn.net/qq_41598072/article/details/131381192