Camera Unity:用于特定显示的纹理2D读取像素

Camera Unity:用于特定显示的纹理2D读取像素,camera,pixels,texture2d,display,unity3d,Camera,Pixels,Texture2d,Display,Unity3d,Unity支持多个显示输出已有一段时间了(最多8个) 使用ReadPixels功能,可以指定要读取的区域和原点坐标。但我无法指定要执行读取的显示编号 我需要能够读取特定区域和原点的特定显示器(1-8)的像素 我该怎么做呢?您可以实现特定屏幕/显示器的可读像素。您必须执行以下操作: 在开始之前,我假设您有多个摄影机,每个摄影机都渲染到不同的显示。为了输出到显示器,相机不得附加渲染器 定义执行以下操作的函数: 为所需的摄影机指定一个临时渲染器 使用RenderTexture.active=*临时渲染

Unity支持多个显示输出已有一段时间了(最多8个)

使用
ReadPixels
功能,可以指定要读取的区域和原点坐标。但我无法指定要执行读取的显示编号

我需要能够读取特定区域和原点的特定显示器(1-8)的像素


我该怎么做呢?

您可以实现特定屏幕/显示器的可读像素。您必须执行以下操作:

在开始之前,我假设您有多个摄影机,每个摄影机都渲染到不同的显示。为了输出到显示器,相机不得附加渲染器

定义执行以下操作的函数:

  • 为所需的摄影机指定一个临时渲染器
  • 使用
    RenderTexture.active=*临时渲染纹理*
    使当前活动的RenderTexture与刚才创建的临时RenderTexture相等
  • 使用
    ReadPixels
    使用适当的
    Rect
    将像素读入临时
    texture2d
    。这将从当前活动的
    RenderTexture
  • texture2d
  • RenderTexture.active
    和摄影机
    RenderTexture
    设置为
    null
  • 其思想是ReadPixels在当前活动的RenderTexture上工作

    代码应该如下所示:

        outputCam.targetTexture = outputCamRenderTexture;
        RenderTexture.active = outputCamRenderTexture;
        outputCam.Render ();
        tempResidualTex.ReadPixels (screenRect, 0, 0);
        tempResidualTex.Apply ();
    
        RenderTexture.active = null;
        outputCam.targetTexture = null;
    

    我认为unity3d可以读取窗口内的像素,我怀疑你能否最大化8个显示器大小的窗口。即使当最大化时,它只需要1个显示,你可以看到IM在谈论什么,如果你玩无尽的传奇,当你开始游戏时,窗口以显示1和2之间的中间为中心,你必须将这个窗口移动到所需的显示,然后点击Alt+Enter,以最大化它。