如何解决在通用渲染管线 (URP) 上从主相机实现 Unity 渲染纹理
编辑:我不知道为什么有人提出这个问题,这显然是一个常见问题,但尚未在 Android 或 VR 设备上找到解决方案。
这是一个与 Quest 2 Unity URP 相关的问题。我正在尝试将主相机视图保存为渲染纹理“SavedRenderTexture”以供以后使用。通过 OnRenderImage() 在标准渲染管道中很容易做到。
private void OnRenderImage(RenderTexture source,RenderTexture destination)
{
Graphics.Blit(source,SavedRenderTexture);
Graphics.Blit(source,destination);
}
我尝试在 Unity 通用渲染管道中实现类似的结果,以下脚本在编辑器模式下运行良好。但它总是冻结我的 Quest 2 VR 屏幕视图。
private void RenderPipelineManager_beginCameraRendering(ScriptableRenderContext context,Camera camera)
{
//OnPreRender();
if (SavedRenderTexture == null)
{
sourceDescriptor = (UnityEngine.XR.XRSettings.enabled) ? UnityEngine.XR.XRSettings.eyeTextureDesc : new RenderTextureDescriptor(Screen.width,Screen.height,RenderTextureFormat.ARGB32);
SavedRenderTexture = new RenderTexture(sourceDescriptor);
}
MainCam.targetTexture = SavedRenderTexture;
}
private void RenderPipelineManager_endCameraRendering(ScriptableRenderContext context,Camera camera)
{
//OnPostRender();
MainCam.targetTexture = null;
Graphics.Blit(SavedRenderTexture,null as RenderTexture);
}
我猜冻结屏幕是由于这条线,也可能是硬件、gpu 相关的问题。
Graphics.Blit(SavedRenderTexture,null as RenderTexture);
然而,Universal Render Pipeline 是完全不同的结构。 我找不到通用管道的任何替代方案。
如果您有任何建议,我将不胜感激。谢谢。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。